<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>La historia de mis desventuras</title>
	<atom:link href="http://calamitatum.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://calamitatum.wordpress.com</link>
	<description>Palabras más, palabras menos sobre desarrollo de software.</description>
	<lastBuildDate>Mon, 21 Nov 2011 11:59:16 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='calamitatum.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/5a2447fc1f9b6b93f0c0eda54085e09d?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>La historia de mis desventuras</title>
		<link>http://calamitatum.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://calamitatum.wordpress.com/osd.xml" title="La historia de mis desventuras" />
	<atom:link rel='hub' href='http://calamitatum.wordpress.com/?pushpress=hub'/>
		<item>
		<title>MembershipProvider y .Net Framework 4.0</title>
		<link>http://calamitatum.wordpress.com/2011/01/24/membershipprovider-y-net-framework-4-0/</link>
		<comments>http://calamitatum.wordpress.com/2011/01/24/membershipprovider-y-net-framework-4-0/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 03:25:15 +0000</pubDate>
		<dc:creator>Jhonny López Ramírez</dc:creator>
				<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Class Library]]></category>
		<category><![CDATA[MembershipProvider]]></category>

		<guid isPermaLink="false">https://calamitatum.wordpress.com/2011/01/24/membershipprovider-y-net-framework-4-0/</guid>
		<description><![CDATA[Caso Decides implementar un proveedor de membresía (o pertenencia) propio para resolver la autenticación y autorización de tus sitios web por medio de información almacenada en una base de datos de terceros (Oracle, MySql, etc.) o de servicios que están publicados a través de WCF. Adicionalmente, tendrás varios sitios web que usarán esta autenticación así [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=calamitatum.wordpress.com&amp;blog=10299642&amp;post=252&amp;subd=calamitatum&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h5><a href="http://calamitatum.files.wordpress.com/2011/01/dotnet4logo.jpg"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:5px;" title="dotnet4logo" border="0" alt="dotnet4logo" src="http://calamitatum.files.wordpress.com/2011/01/dotnet4logo_thumb.jpg?w=244&#038;h=183" width="244" height="183" /></a></h5>
<h5>Caso</h5>
<p align="justify">Decides implementar un proveedor de membresía (o pertenencia) propio para resolver la autenticación y autorización de tus sitios web por medio de información almacenada en una base de datos de terceros (Oracle, MySql, etc.) o de servicios que están publicados a través de WCF. Adicionalmente, tendrás varios sitios web que usarán esta autenticación así que decides crear un proyecto de tipo biblioteca de clases (Class Library) con Visual Studio 2010, es decir, .Net Framework 4.0.</p>
<p align="justify">Como siempre has obrado en estos casos, sabes que debes escribir un proveedor de membresía personalizado que herede de la clase MembershipProvider; antes de eso debes referenciar la dll System.Web que contiene el espacio de nombres System.Web.Security. Escribes un código similar a este:</p>
<h5></h5>
<pre class="code"><span style="color:blue;">using </span>System;
<span style="color:blue;">using </span>System.Collections.Generic;
<span style="color:blue;">using </span>System.Linq;
<span style="color:blue;">using </span>System.Text;
<span style="color:blue;">using </span>System.Web;
<span style="color:blue;">using </span>System.Security;
<span style="color:blue;">using </span>System.Web.Security;
<span style="color:blue;">using </span>System.Configuration.Provider;
<span style="color:blue;">using </span>System.Configuration;
<span style="color:blue;">using </span>System.Web.Configuration;

<span style="color:blue;">namespace <font color="#2a2a2a">MyNamespace</font></span>
{
    <span style="color:blue;">public class </span><span style="color:#2b91af;">MyMembershipProvider </span>: <span style="color:#2b91af;"><font color="#000000">MembershipProvider</font></span></pre>
<pre class="code"><span style="color:#2b91af;"><font color="#000000"></font></span></pre>
<p align="justify">Te das cuenta que ni el <em>intellisense</em> ni una compilación logran reconocer a MembershipProvider como clase dentro del espacio de nombres System.Web.Security. Luego, en un proyecto web te das cuenta que MembershipProvider sigue estando en dicho espacio de nombres, lo cual aumenta la confusión.</p>
<h5 align="justify">Causa</h5>
<p align="justify">En .Net Framework 4.0, la clase MembershipProvider, clase abstracta de la que deben heredar todos los proveedores de membresía ASP.NET personalizados, <a href="http://msdn.microsoft.com/es-es/library/system.web.security.membershipprovider(v=VS.100).aspx">ha sido movida al ensamblado System.Web.ApplicationServices</a>. Por defecto, los proyectos web en Visual Studio referencian dicho ensamblado, las bibliotecas de clases (Class Library) no.</p>
<h5 align="justify">Solución</h5>
<p align="justify">Se debe referenciar en el proyecto de tipo biblioteca de clases (Class Library) el ensamblado System.Web.ApplicationServices. Después de esto se podrá hacer uso de la clase MembershipProvider del espacio de nombres System.Web.Security.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/calamitatum.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/calamitatum.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/calamitatum.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/calamitatum.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/calamitatum.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/calamitatum.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/calamitatum.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/calamitatum.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/calamitatum.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/calamitatum.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/calamitatum.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/calamitatum.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/calamitatum.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/calamitatum.wordpress.com/252/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=calamitatum.wordpress.com&amp;blog=10299642&amp;post=252&amp;subd=calamitatum&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://calamitatum.wordpress.com/2011/01/24/membershipprovider-y-net-framework-4-0/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cdf2640dd035275ff7864c848ae89dc8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">calamitatum</media:title>
		</media:content>

		<media:content url="http://calamitatum.files.wordpress.com/2011/01/dotnet4logo_thumb.jpg" medium="image">
			<media:title type="html">dotnet4logo</media:title>
		</media:content>
	</item>
		<item>
		<title>Liberado Prism 4.0</title>
		<link>http://calamitatum.wordpress.com/2010/11/16/liberado-prism-4-0/</link>
		<comments>http://calamitatum.wordpress.com/2010/11/16/liberado-prism-4-0/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 03:01:55 +0000</pubDate>
		<dc:creator>Jhonny López Ramírez</dc:creator>
				<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Arquitectura]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">https://calamitatum.wordpress.com/2010/11/16/liberado-prism-4-0/</guid>
		<description><![CDATA[Recientemente fue liberada la versión 4.0 de Prism por parte de Microsoft Patterns &#38; Practices. ¿Qué es Prism 4.0? Se trata de un conjunto de guías y bibliotecas destinadas al diseño y la construcción de aplicaciones de escritorio (WPF) o Web (Silverlight) ricas en experiencia de usuario, flexibles y fáciles de mantener. Parte de la [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=calamitatum.wordpress.com&amp;blog=10299642&amp;post=242&amp;subd=calamitatum&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recientemente fue liberada la versión 4.0 de Prism por parte de Microsoft Patterns &amp; Practices.</p>
<p><img alt="Gg406140.pnp-logo(en-us,PandP.10).png" src="http://i.msdn.microsoft.com/dynimg/IC368873.png" /></p>
<h4>¿Qué es Prism 4.0?</h4>
<p align="justify">Se trata de un conjunto de guías y bibliotecas destinadas al diseño y la construcción de aplicaciones de escritorio (WPF) o Web (Silverlight) ricas en experiencia de usuario, flexibles y fáciles de mantener. Parte de la implementación de patrones de diseño que se consideran claves en el desarrollo de este tipo de aplicaciones: una clara separación de conceptos y un escaso acoplamiento entre ellos. </p>
<p align="justify">Más allá del lanzamiento como tal, cabe destacar el compromiso que Microsoft y los miembros más activos de su comunidad tienen con Silverlight, plataforma cuyo futuro ha sido abiertamente cuestionado por la llegada de la próxima revisión del estándar HTML5. Aquí vuelve a dejarse en claro que Microsoft apuesta por Silverlight como ecosistema de desarrollo no solo para contenidos multimedia Premium sin también para <a href="http://blogs.msdn.com/b/warnov/archive/2010/11/02/las-cartas-sobre-la-mesa-html5-vs-silverlight.aspx">aplicaciones de línea de negocio</a> que requieren una rica experiencia de usuario en la web. </p>
<p>  <span id="more-242"></span><br />
<h4>Novedades en Prism 4.0</h4>
<p>Algunos de los cambios más interesantes son:</p>
<ul>
<li>Guías de desarrollo para aplicaciones que corren en terminales Windows Phone 7.</li>
<li>Guías en la implementación del patrón MVVM (Model-View View-Model) en aplicaciones WPF y Silverlight.</li>
<li>La posibilidad de usar MEF ó Unity como contenedores de inyección de dependencia. </li>
</ul>
<p align="justify">Prism es una excelente opción para aplicar patrones modernos en el desarrollo de software como la orientación a pruebas, la inyección de dependencia, el desacople de conceptos o capas de aplicación y la modularidad de las mismas al tiempo que desarrollamos, en plataformas sumamente ricas como Silverlight o WPF, aplicaciones que serán fáciles de mantener y extender en el tiempo. Si bien este conjunto de guías no están tan orientadas a la generación de código, como en el caso de <a href="http://msdn.microsoft.com/en-us/library/ff648752.aspx">Web Client Software Factory</a>, su nutrida documentación hará que se interioricen con facilidad los conceptos que pretende divulgar. Desde este blog trataremos de escribir un conjunto de artículos que acerquen esta iniciativa a desarrolladores hispanohablantes.</p>
<p align="justify">Enlace: <a href="http://msdn.microsoft.com/en-us/library/gg406140.aspx">Prism 4.0</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/calamitatum.wordpress.com/242/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/calamitatum.wordpress.com/242/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/calamitatum.wordpress.com/242/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/calamitatum.wordpress.com/242/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/calamitatum.wordpress.com/242/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/calamitatum.wordpress.com/242/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/calamitatum.wordpress.com/242/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/calamitatum.wordpress.com/242/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/calamitatum.wordpress.com/242/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/calamitatum.wordpress.com/242/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/calamitatum.wordpress.com/242/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/calamitatum.wordpress.com/242/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/calamitatum.wordpress.com/242/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/calamitatum.wordpress.com/242/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=calamitatum.wordpress.com&amp;blog=10299642&amp;post=242&amp;subd=calamitatum&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://calamitatum.wordpress.com/2010/11/16/liberado-prism-4-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cdf2640dd035275ff7864c848ae89dc8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">calamitatum</media:title>
		</media:content>

		<media:content url="http://i.msdn.microsoft.com/dynimg/IC368873.png" medium="image">
			<media:title type="html">Gg406140.pnp-logo(en-us,PandP.10).png</media:title>
		</media:content>
	</item>
		<item>
		<title>Soluci&#243;n temporal a la reciente vulnerabilidad Zero-Day de ASP.NET</title>
		<link>http://calamitatum.wordpress.com/2010/09/18/solucin-temporal-a-la-reciente-vulnerabilidad-zero-day-de-asp-net/</link>
		<comments>http://calamitatum.wordpress.com/2010/09/18/solucin-temporal-a-la-reciente-vulnerabilidad-zero-day-de-asp-net/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 17:29:43 +0000</pubDate>
		<dc:creator>Jhonny López Ramírez</dc:creator>
				<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Vulnerabilidad ASP.NET]]></category>

		<guid isPermaLink="false">https://calamitatum.wordpress.com/2010/09/18/solucin-temporal-a-la-reciente-vulnerabilidad-zero-day-de-asp-net/</guid>
		<description><![CDATA[Actualizado: La solución a esta vulnerabilidad ya ha sido liberada a través de Windows Update. Recientemente se publicó una vulnerabilidad grave en las aplicaciones web desarrolladas con ASP.NET (MVC y WebForms). Dicha vulnerabilidad se encuentra en el API de criptografía de ASP.NET y puede ser explotada mediante ataques recurrentes enviando Requests erróneos al servidor que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=calamitatum.wordpress.com&amp;blog=10299642&amp;post=237&amp;subd=calamitatum&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Actualizado:</strong> La solución a esta vulnerabilidad ya ha sido liberada a través de Windows Update.</p>
<p>Recientemente <a href="http://muycomputerpro.com/FrontOffice/ZonaPractica/Especiales/especialDet/_wE9ERk2XxDBLyBA043Ey7zYP1-zYfXvPgdsj6BfBTDyoTUlIjknXnfbBBz-KDCZi">se publicó una vulnerabilidad grave</a> en las aplicaciones web desarrolladas con ASP.NET (MVC y WebForms). Dicha vulnerabilidad se encuentra en el API de criptografía de ASP.NET y puede ser explotada mediante ataques recurrentes enviando <em>Requests </em>erróneos al servidor que luego este, en los mensajes de error que devuelve, descifra parcialmente; si se envía una cantidad suficiente de mensajes y se analiza los resultados en los mensajes de error se pueden descubrir las claves de encriptación del sitio web y comprometer su seguridad al descargar, por ejemplo, el <em>web.config </em>del sitio, que puede contener información delicada.</p>
<p>Scott Guthrie, <a href="http://weblogs.asp.net/scottgu/archive/2010/09/18/important-asp-net-security-vulnerability.aspx">en su blog</a>, ha publicado más información sobre la vulnerabilidad y ha ofrecido una solución temporal para evitar que los sitios actualmente publicados en ASP.NET sufran por esta vulnerabilidad. Me permito traducir dicha solución, la cual consiste en hacer uso de la cláusula <strong><em>customErrors</em></strong> del archivo de configuración, activándola y redirigiendo en caso de <strong>cualquier error </strong>a una única página, evitando así que se envíe, de vuelta, información importante al atacante.</p>
<p>En soluciones ASP.NET v1.0 a v3.5 la solución se vería así en el <em>web.config:</em></p>
<p><span style="font-family:Consolas;"><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">customErrors</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">mode</span><span style="color:#0000ff;"> =</span><span style="color:#000000;">&#8220;</span><span style="color:#0000ff;">On</span><span style="color:#000000;">&#8220;</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">defaultRedirect</span><span style="color:#0000ff;">=</span><span style="color:#000000;">&#8220;</span><span style="color:#0000ff;">~/error.html</span><span style="color:#000000;">&#8220;</span><span style="color:#0000ff;"> /&gt;</span></span></p>
<p><strong>Nota: </strong>La sección <em><strong>customErrors</strong></em> va dentro de la sección &lt;system.web&gt;.</p>
<p>Después de modificar dicha sección se agregaría una página <strong>error.html </strong>en el directorio raíz del sitio con un mensaje sencillo advirtiendo de un error y sin ofrecer detalles del mismo.</p>
<p>En soluciones ASP.NET v3.5 SP1 o superior la solución se vería así en el <em>web.config:</em></p>
<pre><span style="font-family:Consolas;"><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">customErrors</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">mode</span><span style="color:#0000ff;"> =</span><span style="color:#000000;">"</span><span style="color:#0000ff;">On</span><span style="color:#000000;">"</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">redirectMode</span><span style="color:#0000ff;">=</span><span style="color:#000000;">"</span><span style="color:#0000ff;">ResponseRewrite</span><span style="color:#000000;">"</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">defaultRedirect</span><span style="color:#0000ff;">=</span><span style="color:#000000;">"</span><span style="color:#0000ff;">~/error.aspx</span><span style="color:#000000;">"</span><span style="color:#0000ff;"> /&gt;</span></span></pre>
<pre><span style="font-family:Verdana;"><strong>Nota: </strong>La sección <strong><em>customErrors</em></strong> va dentro de la sección &lt;system.web&gt;.</span></pre>
<pre><span style="font-family:Verdana;">Después de modificar dicha sección se agregaría una página <strong>error.aspx </strong>en el directorio raíz del sitio con un mensaje sencillo advirtiendo de un error y sin ofrecer detalles del mismo. </span></pre>
<div>
<pre><span style="font-family:Verdana;">Me permito agregar algunos consejos de seguridad en aplicaciones web ASP.NET:</span></pre>
<ul>
<li><span style="font-family:Verdana;"><span style="font-family:Verdana;">Evitar almacenar información delicada en archivos de configuración del sitio si ésta no está encriptada.</span></span></li>
<li><span style="font-family:Verdana;"><span style="font-family:Verdana;"><span style="font-family:Verdana;">Evitar, en lo posible, tener los archivos de configuración en el directorio raíz del sitio, para evitar que se prediga que están allí. Esto se puede modificar gracias a la cláusula <em>configSource</em>. Sin embargo, el archivo <em>web.config</em> que se propone en esta solución <strong>sí debe</strong> estar en el directorio raíz de la aplicación (en caso de que sólo esté esta solución en el web.config del directorio raíz, no olvidar encerrar el texto propuesto entre las etiquetas <em>system.web</em>).</span></span></span></li>
<li><span style="font-family:Verdana;"><span style="font-family:Verdana;"><span style="font-family:Verdana;"><span style="font-family:Verdana;">Activar siempre la cláusula customErrors y personalizarla (por ahora como se propone en esta solución) para mostrar mensajes de error pre-procesados. Ya saben que una <em>YSoD</em> ofrece mucha información al usuario.</span></span></span></span></li>
</ul>
</div>
<pre><span style="font-family:Verdana;">Finalmente, ScottGu <a href="http://www.asp.net/media/782788/detectcustomerrorsdisabledv30.zip">ofrece una herramienta</a> que nos permitirá descubrir si nuestros sitios web permitirían el ataque. El uso de esta herramienta, una vez descargada, se muestra en esta imagen:</span></pre>
<pre><a href="http://calamitatum.files.wordpress.com/2010/09/command.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border:0;margin:5px;" title="command" src="http://calamitatum.files.wordpress.com/2010/09/command_thumb.png?w=494&#038;h=106" border="0" alt="command" width="494" height="106" /></a></pre>
<pre></pre>
<p>Este script mostrará los sitios que carecen de la directiva <em><strong>customErrors</strong></em> o que la tienen configurada de forma tal que se permita el ataque.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/calamitatum.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/calamitatum.wordpress.com/237/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/calamitatum.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/calamitatum.wordpress.com/237/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/calamitatum.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/calamitatum.wordpress.com/237/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/calamitatum.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/calamitatum.wordpress.com/237/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/calamitatum.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/calamitatum.wordpress.com/237/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/calamitatum.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/calamitatum.wordpress.com/237/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/calamitatum.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/calamitatum.wordpress.com/237/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=calamitatum.wordpress.com&amp;blog=10299642&amp;post=237&amp;subd=calamitatum&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://calamitatum.wordpress.com/2010/09/18/solucin-temporal-a-la-reciente-vulnerabilidad-zero-day-de-asp-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cdf2640dd035275ff7864c848ae89dc8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">calamitatum</media:title>
		</media:content>

		<media:content url="http://calamitatum.files.wordpress.com/2010/09/command_thumb.png" medium="image">
			<media:title type="html">command</media:title>
		</media:content>
	</item>
		<item>
		<title>SQL Server 2008 Management Studio y VS2008 SP1</title>
		<link>http://calamitatum.wordpress.com/2010/08/29/sql-server-2008-management-studio-y-vs2008-sp1/</link>
		<comments>http://calamitatum.wordpress.com/2010/08/29/sql-server-2008-management-studio-y-vs2008-sp1/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 01:50:13 +0000</pubDate>
		<dc:creator>Jhonny López Ramírez</dc:creator>
				<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[SQL Server 2008 Express]]></category>

		<guid isPermaLink="false">https://calamitatum.wordpress.com/2010/08/29/sql-server-2008-management-studio-y-vs2008-sp1/</guid>
		<description><![CDATA[Yo había podido sobrevivir hasta ahora con SQL Server 2005 Express (y su Management Studio) en mis labores de desarrollo. Claro, había intentado instalar ya SQL Server 2008 Express pero siempre encontraba complejo el instalador. Recientemente me vi forzado a actualizarme dado que estaba ansioso por probar Visual Studio LightSwitch (estoy preparando una entrada con [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=calamitatum.wordpress.com&amp;blog=10299642&amp;post=228&amp;subd=calamitatum&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Yo había podido sobrevivir hasta ahora con SQL Server 2005 Express (y su Management Studio) en mis labores de desarrollo. Claro, había intentado instalar ya SQL Server 2008 Express pero siempre encontraba complejo el instalador. Recientemente me vi forzado a actualizarme dado que estaba ansioso por probar Visual Studio LightSwitch (estoy preparando una entrada con mis experiencias e impresiones sobre VSLS, pero ese no es el tema ahora). Entonces inicié de nuevo el proceso de instalación. Después de solucionar un par de conflictos en la instalación del motor de SQL Server 2008 Express intenté instalar el Management Studio para esta versión. </p>
<p>Pero me encontré con un error, bastante extraño por cierto. Al momento de ejecutar las reglas de instalación me topé con que no se superaba esta:</p>
<blockquote><p>&quot;Versiones anteriores de Microsoft Visual Studio 2008&quot;</p>
</blockquote>
<p>En inglés:</p>
<blockquote><p>&quot;Previous releases of Microsoft Visual Studio 2008&quot;</p>
</blockquote>
<p>Esta regla no se cumple cuando tienes Microsoft Visual Studio 2008 sin Service Pack alguno instalado. Pero yo estaba seguro de tenerlo instalado (lo había requerido para aspectos como Entity Framework), tanto que el mismo <em>Acerca de </em>me lo confirmaba:</p>
<p><a href="http://calamitatum.files.wordpress.com/2010/08/image.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:5px;" title="image" border="0" alt="image" src="http://calamitatum.files.wordpress.com/2010/08/image_thumb.png?w=364&#038;h=124" width="364" height="124" /></a></p>
<p>Efectivamente, la <strong>versión 9.0.30729.1 SP </strong>se corresponde con el Service Pack 1 de VS2008. Pero pese a eso no se superaba la regla. Estuve consultando este error un par de horas hasta <a href="http://weblogs.asp.net/toddanglin/archive/2009/07/08/another-solution-for-defeating-the-sql-server-2008-installer-with-visual-studio-2008.aspx">que me encontré con una solución interesante</a>:</p>
<p>Se trata de ejecutar simplemente el instalador del Management Studio saltando la regla de verificación de versiones anteriores de Visual Studio.</p>
<p>Para hacerlo entonces:</p>
<ol>
<li>
<div>Ejecute la consola de Windows con privilegios de Administrador. </div>
</li>
<li>
<div>Diríjase a través de la consola a la ruta en donde se encuentra el instalador del Management Studio. </div>
</li>
<li>
<div>Ejecute la siguiente sentencia en la consola:</div>
</li>
</ol>
<blockquote><p><strong>SQLManagementStudio_x64_ENU.exe /ACTION=Install /SkipRules=VSShellInstalledRule</strong></p>
</blockquote>
<p>En mi caso el instalador se llama <strong>SQLManagementStudio_x64_ENU.exe.</strong> Como verán, la clave se encuentra en el argumento SkipRules. Esto obligará a que el instalador del Management Studio no verifique esta regla:</p>
<p><a href="http://calamitatum.files.wordpress.com/2010/08/image1.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:5px;" title="image" border="0" alt="image" src="http://calamitatum.files.wordpress.com/2010/08/image_thumb1.png?w=392&#038;h=303" width="392" height="303" /></a></p>
<p>Después de esto Management Studio se instalará correctamente. Cuidado, no se trata de abusar de este parámetro para saltar otras reglas. La idea es que la instalación sea lo más acorde a lo requerido posible. Recomiendo esta solución sólo cuando estén seguros de que, como en mi caso, tienen instalado el Service Pack 1 de Visual Studio 2008, para evitar complicaciones posteriores.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/calamitatum.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/calamitatum.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/calamitatum.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/calamitatum.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/calamitatum.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/calamitatum.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/calamitatum.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/calamitatum.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/calamitatum.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/calamitatum.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/calamitatum.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/calamitatum.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/calamitatum.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/calamitatum.wordpress.com/228/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=calamitatum.wordpress.com&amp;blog=10299642&amp;post=228&amp;subd=calamitatum&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://calamitatum.wordpress.com/2010/08/29/sql-server-2008-management-studio-y-vs2008-sp1/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cdf2640dd035275ff7864c848ae89dc8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">calamitatum</media:title>
		</media:content>

		<media:content url="http://calamitatum.files.wordpress.com/2010/08/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://calamitatum.files.wordpress.com/2010/08/image_thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Correcci&#243;n del rumbo</title>
		<link>http://calamitatum.wordpress.com/2010/06/28/correccin-del-rumbo/</link>
		<comments>http://calamitatum.wordpress.com/2010/06/28/correccin-del-rumbo/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 22:01:05 +0000</pubDate>
		<dc:creator>Jhonny López Ramírez</dc:creator>
				<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">https://calamitatum.wordpress.com/2010/06/28/correccin-del-rumbo/</guid>
		<description><![CDATA[Microsoft se convirtió, desde mediados de los noventas, en el objeto de odio y crítica por parte de un gran conglomerado de la industria del software y la tecnología. En algunos casos con razón, dadas sus desmedidas acciones contra la competencia. Y no sólo ese odio se reflejó en opiniones sobre su actuar en el [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=calamitatum.wordpress.com&amp;blog=10299642&amp;post=219&amp;subd=calamitatum&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p align="justify">Microsoft se convirtió, desde mediados de los noventas, en el objeto de odio y crítica por parte de un gran conglomerado de la industria del software y la tecnología. En algunos casos con razón, dadas sus desmedidas acciones contra la competencia. Y no sólo ese odio se reflejó en opiniones sobre su actuar en el mercado sino también en las difamaciones sobre la mayoría de sus productos. Entonces Windows se convirtió en uno de los peores sistemas operativos del mercado y varios de sus productos padecieron de la inquina, justificada a veces, de los usuarios especializados. </p>
<p align="justify">Y sí, Windows es inseguro. Internet Explorer es pedante y lento. Office es cerrado. Y podríamos seguir. Y es que Microsoft (como algunas otras empresas del sector) era capaz de vendernos una versión Beta de un producto al precio de su versión comercial, tanto así que Windows Millenium fue la beta de XP, Vista la de Seven, en fin. </p>
<p align="justify">También es cierto que Windows no es tanto inseguro como atacado (aunque esto parezca un juego de palabras) y apuesto a que otros sistemas operativos, al verse bajo los reflectores del éxito, serían igual de vulnerables. Y también es cierto que cuando a los usuarios se nos intentó vender mayor seguridad nos mostramos reacios (UAC, por ejemplo); claro, tener escoltas no debe ser del todo cómodo.</p>
<p align="justify">Sin embargo, de un tiempo para acá las cosas en Microsoft han cambiado un poco su matiz. De sacar vilipendiados productos ha pasado a hacer un buen trabajo y algunos de sus peores terrenos ahora son, digamos, lo bastante exitosos para hacer una competencia tanto para usuarios avanzados como usuarios neófitos. Claro que, es cierto, es muy probable que se hayan perdido espacios difíciles de recuperar.</p>
<p align="justify"><strong>Windows 7</strong></p>
<p align="justify">Seguro, dinámico, bonito, funcional, el último sistema operativo de la marca Windows se ha convertido en una excelente credencial para mostrar puesto que ha acoplado la segura base de Windows Vista (no todo fue mal allí) con menores exigencias en términos de Hardware, que es lo que actualmente se espera por parte de los sistemas operativos de escritorio. Sus récords en ventas demuestran que pronto estará por encima de los demás del mercado (sólo le falta superar a Windows XP) y representa una oportunidad perdida para la competencia que pudo, dado el fiasco de Windows Vista, apropiarse de una tajada mayor.</p>
<p align="justify"><strong>Office 2010</strong></p>
<p align="justify">La suite de productividad de Microsoft liberada este año es también otra evidencia del positivo rumbo que toma la empresa. Y no sólo porque sus funcionalidades y desempeño sean grandiosos sino porque además se pone al corriente de las tendencias en la industria: mucho más orientado al consumo de servicios en la nube que sus predecesores (y que sus competidores) y con aspectos que se acercan a ofrecer reales alternativas (incluso gratuitas) al usuario. Además han acoplado los ciclos de desarrollo que benefician tanto al consumidor como el productor al punto que hemos podido disfrutar de versiones previas a la comercial de manera gratuita; escuchan al usuario.</p>
<p align="justify">Pero no sólo en sus productos estrella se nota la nueva disposición de Microsoft a mejorar: podemos citar otros ejemplos; Internet Explorer en la versión 9 (que se encuentra en desarrollo y se ha ido mostrando a través de previas) será uno de los primeros navegadores (si no el primero) en integrar aceleración por hardware y el estándar HTML5 además de que se acerca a satisfacer benchmarks como los de Sun Spider (para JavaScript) o los tests de Acid (para css y html). O Microsoft Security Essentials, gratuito y que está al nivel de los mejores antivirus (tanto los de pago como los de uso libre) en detección de amenazas para el usuario. O la nueva versión de Windows Live: mucho más social, con mayor presencia en la web y además gratuita. Y también Visual Studio 2010, Silverligth 4, Expression 4, y todo el ecosistema de desarrollo de aplicaciones que son, francamente, una mejora invaluable en la experiencia de uso para los desarrolladores de software. Esperemos a ver qué trae Windows Phone 7.</p>
<p align="justify">Podemos concluir diciendo que esa corrección del rumbo de la que hablo se manifiesta en 3 frentes: seguridad, mayor presencia en la web y una mayor disposición a poner al servicio de los consumidores herramientas gratuitas (e incluso algunas veces open source).</p>
<p align="justify">Dejo aquí algunos enlaces interesantes para sustentar mi opinión.</p>
<p align="justify"><a href="http://royal.pingdom.com/2010/06/24/windows-7-may-overtake-vista-within-a-month/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed:+RoyalPingdom+(Royal+Pingdom)&amp;utm_content=Google+Reader" target="_blank">Windows 7 y su ascenso en la cuota de mercado.</a></p>
<p align="justify"><a href="http://www.zdnet.com/blog/bott/office-2010-a-deeper-dive/2042?tag=mantle_skin;content" target="_blank">Office 2010.</a></p>
<p align="justify"><a href="http://ie.microsoft.com/testdrive/" target="_blank">Internet Explorer 9.</a></p>
<p align="justify"><a href="http://www.av-comparatives.org/images/stories/test/ondret/avc_report26.pdf" target="_blank">Microsoft Security Essentials.</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/calamitatum.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/calamitatum.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/calamitatum.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/calamitatum.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/calamitatum.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/calamitatum.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/calamitatum.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/calamitatum.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/calamitatum.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/calamitatum.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/calamitatum.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/calamitatum.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/calamitatum.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/calamitatum.wordpress.com/219/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=calamitatum.wordpress.com&amp;blog=10299642&amp;post=219&amp;subd=calamitatum&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://calamitatum.wordpress.com/2010/06/28/correccin-del-rumbo/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cdf2640dd035275ff7864c848ae89dc8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">calamitatum</media:title>
		</media:content>
	</item>
		<item>
		<title>La inform&#225;tica del futuro &#8211; Reflexi&#243;n</title>
		<link>http://calamitatum.wordpress.com/2010/05/06/la-informtica-del-futuro-reflexin/</link>
		<comments>http://calamitatum.wordpress.com/2010/05/06/la-informtica-del-futuro-reflexin/#comments</comments>
		<pubDate>Fri, 07 May 2010 04:15:42 +0000</pubDate>
		<dc:creator>Jhonny López Ramírez</dc:creator>
				<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Reflexiones]]></category>

		<guid isPermaLink="false">https://calamitatum.wordpress.com/2010/05/06/la-informtica-del-futuro-reflexin/</guid>
		<description><![CDATA[Recuerdo la percepción que tenía en mi niñez de lo que sería el futuro. Un poco inspirado por las películas que veía y en las que mostraban lo que sería el mundo a estas alturas. Computadoras que sostenían conversaciones fluidas con seres humanos, robots con comportamientos similares a los de las personas, el auto fantástico [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=calamitatum.wordpress.com&amp;blog=10299642&amp;post=216&amp;subd=calamitatum&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p align="justify">Recuerdo la percepción que tenía en mi niñez de lo que sería el futuro. Un poco inspirado por las películas que veía y en las que mostraban lo que sería el mundo a estas alturas. Computadoras que sostenían conversaciones fluidas con seres humanos, robots con comportamientos similares a los de las personas, el auto fantástico y una serie de gadgets haciendo una y otra cosa aquí y allá. Cuanto tuviera 26 años, pensaba, ya debería tener un carro que volara. Hoy tengo esa edad y ni los carros vuelan ni yo tengo uno que se arrastre siquiera; no es que esté triste por ambas cosas pero creo que están tardando en suceder.</p>
<p align="justify">Ahora que ya estoy en lo que, para entonces, era el futuro veo que quedan muchas cosas por hacer. Que la innovación aunque presente, muy presente, en el presente dista un poco de lo que se prometía en la ciencia ficción de ochentas y noventas. Todo esto en lugar de decepcionarme me parece excitante pues aún quedan caminos por recorrer y me siento joven y dispuesto a lo que venga. Quiero participar de ello, de hacer el futuro, de construir aplicaciones y sistemas y robots, etc., que hagan nuestra vida muchísimo más amigable. En ese sentido apuntan los grandes en la informática y otras áreas y quiero estar en primera plana, con las botas puestas, “cuando estalle la guerra estaré en la trinchera contigo”.</p>
<p align="justify">Todo esto viene a cuento debido a varias cosas, entre ellas que viendo a lo que apuntan elementos innovadores como las pantallas táctiles, el reconocimiento de rasgos y gestos humanos, lo que se rumora que será Windows 8, lo que será el Proyecto Natal, en fin, frente a todo eso he tenido momentos de escepticismo. No porque no crea que son geniales, no. Simplemente porque día a día te vas internando en tu trabajo y lo que haces puede tornarse repetitivo y ves el software corporativo tan distante de ello, como anclado aún al ratón y al teclado, a las grillas, a las listas desplegables, en fin. Y todo eso sientes que pasará de largo frente a lo que haces a diario: software para el trabajo. Luego he leído <a href="http://msmvps.com/blogs/jaimirg/archive/2010/04/29/steve-ballmer-en-bogot-225-act-237-vate-2010.aspx">una interesante entrada en el blog de Jaimir Guerrero</a> y me he sentido repentinamente viejo puesto que asumía posiciones lejos de lo que yo mismo en la niñez contemplaba como emocionante, como el futuro.</p>
<p align="justify">Así que he decidido sacudirme las telarañas y prometerme que seré parte de dicha evolución, que estaré en el equipo de los que transformen el mundo y que hagan del software corporativo (y el software en general) una realidad que supere la ficción. Estoy joven (de nuevo) y dispuesto.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/calamitatum.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/calamitatum.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/calamitatum.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/calamitatum.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/calamitatum.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/calamitatum.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/calamitatum.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/calamitatum.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/calamitatum.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/calamitatum.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/calamitatum.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/calamitatum.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/calamitatum.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/calamitatum.wordpress.com/216/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=calamitatum.wordpress.com&amp;blog=10299642&amp;post=216&amp;subd=calamitatum&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://calamitatum.wordpress.com/2010/05/06/la-informtica-del-futuro-reflexin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cdf2640dd035275ff7864c848ae89dc8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">calamitatum</media:title>
		</media:content>
	</item>
		<item>
		<title>Breve Autocomplete Helper con ASP.NET MVC y jQuery</title>
		<link>http://calamitatum.wordpress.com/2010/03/16/breve-autocomplete-helper-con-asp-net-mvc-y-jquery/</link>
		<comments>http://calamitatum.wordpress.com/2010/03/16/breve-autocomplete-helper-con-asp-net-mvc-y-jquery/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 01:12:03 +0000</pubDate>
		<dc:creator>Jhonny López Ramírez</dc:creator>
				<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://calamitatum.wordpress.com/2010/03/16/breve-autocomplete-helper-con-asp-net-mvc-y-jquery/</guid>
		<description><![CDATA[Han pasado ya varios días desde la última vez que escribí algo en el blog. Escaso tiempo. Vengo hoy con un pequeño Helper construido para hacer las veces de Autocomplete en ASP.NET MVC. Se trata de un ejemplo sencillo basado en un práctico jQuery Autocomplete (que pueden descargarse de aquí). Una vez he descargado el [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=calamitatum.wordpress.com&amp;blog=10299642&amp;post=211&amp;subd=calamitatum&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p align="justify">Han pasado ya varios días desde la última vez que escribí algo en el blog. Escaso tiempo. Vengo hoy con un pequeño <em>Helper</em> construido para hacer las veces de <em>Autocomplete </em>en ASP.NET MVC. Se trata de un ejemplo sencillo basado en un práctico jQuery Autocomplete (que <a href="http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/">pueden descargarse de aquí</a>).</p>
<p align="justify">Una vez he descargado el paquete paso a descomprimirlo y a pegar los archivos claves en las rutas correspondientes, como muestro en la siguiente imagen:</p>
<p align="justify"><a href="http://calamitatum.files.wordpress.com/2010/03/2.png"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="2" border="0" alt="2" src="http://calamitatum.files.wordpress.com/2010/03/2_thumb.png?w=224&#038;h=311" width="224" height="311" /></a> </p>
<p align="justify">Lo siguiente que haré será crear el <em>HtmlHelper </em>para automatizar el proceso de escritura de la función que hará la gracia. Para hacerlo tengo que disponer de una clase con los modificadores de acceso <em><strong>public</strong></em> y <strong><em>static </em></strong>y dentro un método de extensión a la clase <em>HtmlHelper</em>. Pongo aquí el código:</p>
<div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;line-height:12pt;background-color:#f4f4f4;width:97.5%;font-family:&#39;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;margin:20px 0 10px;padding:4px;" id="codeSnippetWrapper">
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0;" id="codeSnippet">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#0000ff;">using</span> System.Text;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#0000ff;">using</span> System.Web.Mvc;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">&#160;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#0000ff;">namespace</span> AutoCompleter.Helpers</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">{</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">static</span> <span style="color:#0000ff;">class</span> MyHelpers</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">        <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">static</span> <span style="color:#0000ff;">string</span> AutoCompleter(<span style="color:#0000ff;">this</span> HtmlHelper helper, <span style="color:#0000ff;">string</span> name, <span style="color:#0000ff;">string</span> controller, <span style="color:#0000ff;">string</span> action, <span style="color:#0000ff;">string</span> fieldName, <span style="color:#0000ff;">bool</span> mustMatch)</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">        {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">            StringBuilder html = <span style="color:#0000ff;">new</span> StringBuilder(<span style="color:#006080;">&quot;&lt;script type=\&quot;text/javascript\&quot;&gt;&quot;</span>);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">&#160;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">            html.Append(<span style="color:#006080;">&quot;$(document).ready( function() {&quot;</span>);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">            html.AppendLine(<span style="color:#006080;">&quot;$('#&quot;</span> + name + <span style="color:#006080;">&quot;').autocomplete('/&quot;</span> + controller + <span style="color:#006080;">&quot;/&quot;</span> + action + <span style="color:#006080;">&quot;/', {&quot;</span>);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">            html.AppendLine(<span style="color:#006080;">&quot;dataType: 'json',&quot;</span>);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">            html.AppendLine(<span style="color:#006080;">&quot;parse: function(data) {&quot;</span>);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">            html.AppendLine(<span style="color:#006080;">&quot;var rows = new Array();&quot;</span>);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">            html.AppendLine(<span style="color:#006080;">&quot;for(var i=0; i&lt;data.length; i++){&quot;</span>);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">            html.AppendLine(<span style="color:#006080;">&quot;rows[i] = { data:data[i], value:data[i].&quot;</span> + fieldName + <span style="color:#006080;">&quot;, result:data[i].&quot;</span> + fieldName + <span style="color:#006080;">&quot; };&quot;</span>);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">            html.AppendLine(<span style="color:#006080;">&quot;} return rows;},&quot;</span>);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">            html.AppendLine(<span style="color:#006080;">&quot;formatItem: function(row, i, n) {&quot;</span>);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">            html.AppendLine(<span style="color:#006080;">&quot;return row.&quot;</span> + fieldName + <span style="color:#006080;">&quot;;},&quot;</span>);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">            html.AppendLine(<span style="color:#006080;">&quot; width: 300, mustMatch: &quot;</span> + mustMatch.ToString().ToLower() + <span style="color:#006080;">&quot; , });});&lt;/script&gt;&quot;</span>);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">&#160;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">            <span style="color:#0000ff;">return</span> html.ToString();</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">&#160;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">        }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">}</pre>
<p><!--CRLF--></div>
</div>
<p>&#160;</p>
<p><span id="more-211"></span></p>
<p>Como ven, se trata de un método que escribe el código de la función, que anexa a un cuadro de texto, generará el comportamiento de autocomplete. Revisemos los parámetros:</p>
<ul>
<li><strong>helper: </strong>¿Es necesario decirlo? Es el que nos dice que se trata de un método de extensión sobre la clase <em>HtmlHelper</em>.</li>
<li><strong>name: </strong>Representa el nombre del cuadro de texto que va a tener la funcionalidad de autocompletado.</li>
<li><strong>controller: </strong>Hace referencia al controlador que contendrá un método dispuesto a retornar los objetos que se listarán en el autocompletado.</li>
<li><strong>action:</strong> Nombre<em>&#160;</em>del método del controlador que retornará los objetos a listarse en el autocompletado. Para efectos de que nuestro AutoComplete funcione es necesario que lo retornado por este método sea un objeto Json.</li>
<li><strong>fieldName:</strong> Se refiere a la propiedad de los objetos que se retornen que será el texto a mostrarse en la lista de autocompletado.</li>
<li><strong>mustMatch: </strong>Nos permitirá indicar si el valor del cuadro de texto debe coincidir con alguno de los retornados en la lista de autocompletado.</li>
</ul>
<p>Vamos a poner aquí un ejemplo de lo que sería el método que retornaría la lista de autocompletado. En nuestro <em>Home </em>controller agregaremos este método:</p>
<div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;line-height:12pt;background-color:#f4f4f4;width:97.5%;font-family:&#39;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;margin:20px 0 10px;padding:4px;" id="codeSnippetWrapper">
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0;" id="codeSnippet">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#0000ff;">public</span> ActionResult GetStrings(string q)</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">{</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    <span style="color:#0000ff;">string</span>[] strings = <span style="color:#0000ff;">new</span> <span style="color:#0000ff;">string</span>[] { <span style="color:#006080;">&quot;abc&quot;</span>, <span style="color:#006080;">&quot;abecedario&quot;</span>, <span style="color:#006080;">&quot;akeronte&quot;</span>, <span style="color:#006080;">&quot;abuela&quot;</span>, <span style="color:#006080;">&quot;about&quot;</span> };</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">&#160;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    var data = from <span style="color:#0000ff;">string</span> s <span style="color:#0000ff;">in</span> strings select <span style="color:#0000ff;">new</span> { myText = s };</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">&#160;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    <span style="color:#0000ff;">return</span> Json(data);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">}</pre>
<p><!--CRLF--></div>
</div>
<p align="justify">El tipo de retorno de este método es un <em>ActionResult</em> que luego será específicamente un <em>Json</em>. Tiene un parámetro llamado q (ese debe ser su nombre) de tipo <em>string</em> que representará el texto escrito en el cuadro de texto. En este caso no lo uso puesto que la lista a retornar es bastante pequeña, pero se hace muy útil en escenarios en los que quiero filtrar realmente el conjunto de resultados a retornar (cuando por ejemplo lo saco de una base de datos). Tengo en este caso un arreglo de <em>strings</em> que luego convierto en un objeto anónimo con una propiedad llamada myText. Retorno este objeto convertido en uno <em>Json</em>.</p>
<p align="justify">Ahora bien, en el MasterPage de mi sitio agrego las referencias necesarias a los scripts de jQuery, así:</p>
<div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;line-height:12pt;background-color:#f4f4f4;width:97.5%;font-family:&#39;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;margin:20px 0 10px;padding:4px;" id="codeSnippetWrapper">
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0;" id="codeSnippet">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">&lt;head runat=<span style="color:#006080;">&quot;server&quot;</span>&gt;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    &lt;title&gt;&lt;asp:ContentPlaceHolder ID=<span style="color:#006080;">&quot;TitleContent&quot;</span> runat=<span style="color:#006080;">&quot;server&quot;</span> /&gt;&lt;/title&gt;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    &lt;script type=<span style="color:#006080;">&quot;text/javascript&quot;</span> src=<span style="color:#006080;">&quot;../../Scripts/MicrosoftAjax.js&quot;</span>&gt;&lt;/script&gt;  </pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    &lt;link href=<span style="color:#006080;">&quot;../../Content/Site.css&quot;</span> rel=<span style="color:#006080;">&quot;stylesheet&quot;</span> type=<span style="color:#006080;">&quot;text/css&quot;</span> /&gt;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    &lt;link href=<span style="color:#006080;">&quot;../../Content/jquery.autocomplete.css&quot;</span> rel=<span style="color:#006080;">&quot;stylesheet&quot;</span> type=<span style="color:#006080;">&quot;text/css&quot;</span> /&gt;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    &lt;script type=<span style="color:#006080;">&quot;text/javascript&quot;</span> src=<span style="color:#006080;">&quot;../../Scripts/jquery-1.2.6.min.js&quot;</span>&gt;&lt;/script&gt;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    &lt;script type=<span style="color:#006080;">&quot;text/javascript&quot;</span> src=<span style="color:#006080;">&quot;../../Scripts/jquery.autocomplete.js&quot;</span>&gt;&lt;/script&gt;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">&lt;/head&gt;</pre>
<p><!--CRLF--></div>
</div>
<p>Voy a probarlo sobre el <em>Index</em> del <em>Home controller</em>. Para poder usar el <em>Helper</em> que he creado debo hacer un <em>Import</em> sobre el espacio de nombres que lo contiene. He aquí todo el código del <em>Index</em>:</p>
</p>
<div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;line-height:12pt;background-color:#f4f4f4;width:97.5%;font-family:&#39;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;margin:20px 0 10px;padding:4px;" id="codeSnippetWrapper">
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0;" id="codeSnippet">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">&lt;%@ Page Language=<span style="color:#006080;">&quot;C#&quot;</span> MasterPageFile=<span style="color:#006080;">&quot;~/Views/Shared/Site.Master&quot;</span> Inherits=<span style="color:#006080;">&quot;System.Web.Mvc.ViewPage&quot;</span> %&gt;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">&lt;%@ Import Namespace=<span style="color:#006080;">&quot;AutoCompleter.Helpers&quot;</span> %&gt;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">&lt;asp:Content ID=<span style="color:#006080;">&quot;indexTitle&quot;</span> ContentPlaceHolderID=<span style="color:#006080;">&quot;TitleContent&quot;</span> runat=<span style="color:#006080;">&quot;server&quot;</span>&gt;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    Home Page</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">&lt;/asp:Content&gt;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">&#160;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">&lt;asp:Content ID=<span style="color:#006080;">&quot;indexContent&quot;</span> ContentPlaceHolderID=<span style="color:#006080;">&quot;MainContent&quot;</span> runat=<span style="color:#006080;">&quot;server&quot;</span>&gt;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    </pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">   </pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    &lt;h2&gt;&lt;%= Html.Encode(ViewData[<span style="color:#006080;">&quot;Message&quot;</span>]) %&gt;&lt;/h2&gt;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    &lt;p&gt;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">        &lt;%= Html.TextBox(<span style="color:#006080;">&quot;MyTextBox&quot;</span>) %&gt;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">        &lt;%= Html.AutoCompleter(<span style="color:#006080;">&quot;MyTextBox&quot;</span>, <span style="color:#006080;">&quot;Home&quot;</span>, <span style="color:#006080;">&quot;GetStrings&quot;</span>, <span style="color:#006080;">&quot;myText&quot;</span>, <span style="color:#0000ff;">false</span>) %&gt;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    &lt;/p&gt;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">&lt;/asp:Content&gt;</pre>
<p><!--CRLF--></div>
</div>
<p>Como ven, primero creo un cuadro de texto (a través de la etiqueta <em>input </em>o con el <em>Helper TextBox</em>) al que he llamado MyTextBox. Luego creo el AutoCompleter y le asigno valores a sus parámetros. El primero es el nombre del cuadro de texto que se comportará como autocompletador. Luego doy el nombre del controlador que contiene al método, el tercer parámetro es el nombre del método, el cuarto parámetro representa a la propiedad que se mostrará en la lista de autocompletado y finalmente digo si deberá coincidir el texto ingresado con algún elemento de los retornados.</p>
<p>Ejecutándolo se verá así:</p>
<p><a href="http://calamitatum.files.wordpress.com/2010/03/image.png"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="image" border="0" alt="image" src="http://calamitatum.files.wordpress.com/2010/03/image_thumb.png?w=437&#038;h=352" width="437" height="352" /></a></p>
<p>Dejo el enlace para descargar la solución:</p>
<p><a href="http://cid-d206b5bc5a945354.skydrive.live.com/self.aspx/.Public/AutoCompleter.zip">AutoCompleter.sln</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/calamitatum.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/calamitatum.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/calamitatum.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/calamitatum.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/calamitatum.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/calamitatum.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/calamitatum.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/calamitatum.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/calamitatum.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/calamitatum.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/calamitatum.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/calamitatum.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/calamitatum.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/calamitatum.wordpress.com/211/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=calamitatum.wordpress.com&amp;blog=10299642&amp;post=211&amp;subd=calamitatum&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://calamitatum.wordpress.com/2010/03/16/breve-autocomplete-helper-con-asp-net-mvc-y-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cdf2640dd035275ff7864c848ae89dc8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">calamitatum</media:title>
		</media:content>

		<media:content url="http://calamitatum.files.wordpress.com/2010/03/2_thumb.png" medium="image">
			<media:title type="html">2</media:title>
		</media:content>

		<media:content url="http://calamitatum.files.wordpress.com/2010/03/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Despliegue de aplicaciones Web con Visual Studio 2010 &#8211; MSDeploy</title>
		<link>http://calamitatum.wordpress.com/2010/02/21/despliegue-de-aplicaciones-web-con-visual-studio-2010-msdeploy/</link>
		<comments>http://calamitatum.wordpress.com/2010/02/21/despliegue-de-aplicaciones-web-con-visual-studio-2010-msdeploy/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 23:20:22 +0000</pubDate>
		<dc:creator>Jhonny López Ramírez</dc:creator>
				<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>

		<guid isPermaLink="false">http://calamitatum.wordpress.com/2010/02/21/despliegue-de-aplicaciones-web-con-visual-studio-2010-msdeploy/</guid>
		<description><![CDATA[Una de las mejoras importantes que incorpora Visual Studio 2010 está relacionada con el despliegue de aplicaciones web. Es importante desde múltiples perspectivas pero yo citaré una que proviene de mi experiencia. Como desarrolladores algunas veces nos abstraemos del trabajo de la configuración e instalación de las aplicaciones que desarrollamos, pero en diversos escenarios ocurre [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=calamitatum.wordpress.com&amp;blog=10299642&amp;post=205&amp;subd=calamitatum&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p align="justify">Una de las mejoras importantes que incorpora Visual Studio 2010 está relacionada con el despliegue de aplicaciones web. Es importante desde múltiples perspectivas pero yo citaré una que proviene de mi experiencia. Como desarrolladores algunas veces nos abstraemos del trabajo de la configuración e instalación de las aplicaciones que desarrollamos, pero en diversos escenarios ocurre que los roles no están tan definidos y tenemos que abarcar todo el ciclo de desarrollo y distribución de nuestras producciones y es allí donde a veces tenemos dolores de cabeza por horas de errores que casi no comprendemos.</p>
<p align="justify">Puesta esta situación vamos a mostrar escuetamente una de las nuevas técnicas de despliegue de aplicaciones que vienen empaquetadas en Visual Studio 2010: <strong>MSDeploy</strong>. Para ello he creado una pequeña aplicación Dynamic Data que no interesará mucho para los propósitos de esta entrada, salvo como elemento de laboratorio.</p>
<p align="justify">Trabajando entonces en nuestra aplicación ASP.NET vamos a configurar un perfil de despliegue para la misma basado en MSDeploy. Para hacerlo vamos a ir al menú <em>Build</em> y seleccionaremos de allí la opción <em>Publish &lt;nombre del proyecto&gt;</em>. O podremos dirigirnos directamente al menú <em>Publish</em> de nuestra barra de herramientas:</p>
<p align="justify"><a href="http://calamitatum.files.wordpress.com/2010/02/1.jpg"><img style="display:inline;border-width:0;" title="1" border="0" alt="1" src="http://calamitatum.files.wordpress.com/2010/02/1_thumb.jpg?w=244&#038;h=57" width="244" height="57" /></a> </p>
<p>Seleccionaremos la opción <em>Create Publish Settings &#8211; &lt;New&gt; </em>y aparecerá el siguiente cuadro de diálogo:</p>
<p><a href="http://calamitatum.files.wordpress.com/2010/02/2.jpg"><img style="display:inline;border-width:0;" title="2" border="0" alt="2" src="http://calamitatum.files.wordpress.com/2010/02/2_thumb.jpg?w=361&#038;h=484" width="361" height="484" /></a> </p>
<p>En primer lugar tendremos el nombre del perfil de publicación y adicionalmente las siguientes opciones:</p>
<ul>
<li><strong>Publish method: </strong>Podremos escoger entre Web Deploy, FTP, File System y FPSE. Para este caso usaremos Web Deploy. </li>
<li>
<div align="justify"><strong>Service URL: </strong>Hace referencia a la ruta en la que se publicará el archivo de despliegue de la aplicación en el servidor de aplicaciones. Para este ejemplo he puesto <a title="http://localhost/DDEWA/MsDeploy.axd" href="http://localhost/DDEWA/MsDeploy.axd">http://localhost/DDEWA/MsDeploy.axd</a> (previa configuración de dicha ruta en mi IIS).</div>
</li>
<li>
<div align="justify"><strong>Site/application: </strong>Se refiere al nombre del sitio en el Internet Information Services. Incluso puede especificarse una estructura de subdirectorios en este parámetro. En mi caso he puesto <strong>DDEWA/Test</strong>. </div>
</li>
</ul>
<p align="justify">Podemos también marcar la aplicación como IIS en el destino y especificar que no se borrarán archivos adicionales en las carpetas publicadas una vez hagamos re-publicación. También, si se ha configurado acceso restringido a las carpetas virtuales de publicación en el servidor podemos especificar las credenciales del usuario autorizado. Usaremos el botón <em>Save </em>de este cuadro de diálogo para almacenar este perfil. </p>
<p> <span id="more-205"></span>
<p align="justify">&#160;</p>
<p align="justify"><a href="http://calamitatum.files.wordpress.com/2010/02/3.jpg"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="3" border="0" alt="3" src="http://calamitatum.files.wordpress.com/2010/02/3_thumb.jpg?w=361&#038;h=484" width="361" height="484" /></a> </p>
<p align="justify">Si la configuración es exitosa ya podremos hacer uso del botón <em>Publish </em>en nuestro menú de publicación. Se trata de, literalmente, publicación a un clic de distancia:</p>
<p align="justify"><a href="http://calamitatum.files.wordpress.com/2010/02/4.jpg"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="4" border="0" alt="4" src="http://calamitatum.files.wordpress.com/2010/02/4_thumb.jpg?w=244&#038;h=44" width="244" height="44" /></a> </p>
<p align="justify"><a href="http://calamitatum.files.wordpress.com/2010/02/5.jpg"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="5" border="0" alt="5" src="http://calamitatum.files.wordpress.com/2010/02/5_thumb.jpg?w=192&#038;h=67" width="192" height="67" /></a> </p>
<p align="justify">Podemos comprobar para este ejemplo la creación de la aplicación en el servidor IIS y su visualización en el navegador:</p>
<p align="justify"><a href="http://calamitatum.files.wordpress.com/2010/02/51.jpg"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="51" border="0" alt="51" src="http://calamitatum.files.wordpress.com/2010/02/51_thumb.jpg?w=189&#038;h=78" width="189" height="78" /></a> </p>
<p align="justify"><a href="http://calamitatum.files.wordpress.com/2010/02/6.jpg"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="6" border="0" alt="6" src="http://calamitatum.files.wordpress.com/2010/02/6_thumb.jpg?w=379&#038;h=311" width="379" height="311" /></a> </p>
<p align="justify">Un aspecto importante a tener en cuenta es que en cada re-publicación se enviarán sólo los archivos modificados y no todo el sitio. Una gran ventaja para aplicaciones web enormes.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/calamitatum.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/calamitatum.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/calamitatum.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/calamitatum.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/calamitatum.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/calamitatum.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/calamitatum.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/calamitatum.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/calamitatum.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/calamitatum.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/calamitatum.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/calamitatum.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/calamitatum.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/calamitatum.wordpress.com/205/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=calamitatum.wordpress.com&amp;blog=10299642&amp;post=205&amp;subd=calamitatum&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://calamitatum.wordpress.com/2010/02/21/despliegue-de-aplicaciones-web-con-visual-studio-2010-msdeploy/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cdf2640dd035275ff7864c848ae89dc8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">calamitatum</media:title>
		</media:content>

		<media:content url="http://calamitatum.files.wordpress.com/2010/02/1_thumb.jpg" medium="image">
			<media:title type="html">1</media:title>
		</media:content>

		<media:content url="http://calamitatum.files.wordpress.com/2010/02/2_thumb.jpg" medium="image">
			<media:title type="html">2</media:title>
		</media:content>

		<media:content url="http://calamitatum.files.wordpress.com/2010/02/3_thumb.jpg" medium="image">
			<media:title type="html">3</media:title>
		</media:content>

		<media:content url="http://calamitatum.files.wordpress.com/2010/02/4_thumb.jpg" medium="image">
			<media:title type="html">4</media:title>
		</media:content>

		<media:content url="http://calamitatum.files.wordpress.com/2010/02/5_thumb.jpg" medium="image">
			<media:title type="html">5</media:title>
		</media:content>

		<media:content url="http://calamitatum.files.wordpress.com/2010/02/51_thumb.jpg" medium="image">
			<media:title type="html">51</media:title>
		</media:content>

		<media:content url="http://calamitatum.files.wordpress.com/2010/02/6_thumb.jpg" medium="image">
			<media:title type="html">6</media:title>
		</media:content>
	</item>
		<item>
		<title>&#8220;Hola mundo&#8221;, en vivo desde Visual Studio 2010 RC1</title>
		<link>http://calamitatum.wordpress.com/2010/02/14/hola-mundo-en-vivo-desde-visual-studio-2010-rc1/</link>
		<comments>http://calamitatum.wordpress.com/2010/02/14/hola-mundo-en-vivo-desde-visual-studio-2010-rc1/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 04:35:28 +0000</pubDate>
		<dc:creator>Jhonny López Ramírez</dc:creator>
				<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>

		<guid isPermaLink="false">http://calamitatum.wordpress.com/2010/02/14/hola-mundo-en-vivo-desde-visual-studio-2010-rc1/</guid>
		<description><![CDATA[Hoy por fin tuve algo de tiempo libre para instalar el Release Candidate 1 de Visual Studio 2010. Esta entrada es meramente documental y no supone muchos detalles técnicos. Simplemente emborrono cuartillas. Impresiones sobre la instalación Es probable que sea una mera impresión, pero fue más rápida la instalación de VS2010 que la de sus [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=calamitatum.wordpress.com&amp;blog=10299642&amp;post=190&amp;subd=calamitatum&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hoy por fin tuve algo de tiempo libre para instalar el Release Candidate 1 de Visual Studio 2010. Esta entrada es meramente documental y no supone muchos detalles técnicos. Simplemente emborrono cuartillas.</p>
<h5>Impresiones sobre la instalación</h5>
<p align="justify">Es probable que sea una mera impresión, pero fue más rápida la instalación de VS2010 que la de sus antecesores. No hice una métrica seria al respecto puesto que hacía otras cosas al tiempo pero me pareció bastante más rápido el proceso.</p>
<p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:66721397-FF69-4ca6-AEC4-17E6B3208830:e0cf4d1c-8f30-4daf-b7b0-5ac0b26d997d" class="wlWriterEditableSmartContent"><a style="border:0;" href="http://cid-d206b5bc5a945354.skydrive.live.com/redir.aspx?page=browse&amp;resid=D206B5BC5A945354!168&amp;ct=photos"><img style="border:0;" alt="Ver Inst1" src="http://calamitatum.files.wordpress.com/2010/02/inlinerepresentation0b97a87f7cf343139035012d512ad949.jpg" /></a>
<div style="width:629px;text-align:right;"><a href="http://cid-d206b5bc5a945354.skydrive.live.com/redir.aspx?page=browse&amp;resid=D206B5BC5A945354!168&amp;ct=photos">Ver &aacute;lbum completo</a></div>
</div>
<p>&#160;</p>
<p align="justify">Requirió reiniciar el equipo después de la instalación del Framework (4.0 RC1) y experimenté un pequeño contratiempo después de hacerlo: había descargado el ISO para la instalación y lo monté en una unidad virtual; al reiniciar el equipo no se montó automáticamente el ISO en la unidad virtual, como era de esperarse, haciendo fallar al instalador que continuaba su proceso. Afortunadamente el mensaje de error ofrecía la opción Reintentar y después de montar de nuevo la imagen en la unidad continué con el proceso.</p>
<p align="justify"><a href="http://calamitatum.files.wordpress.com/2010/02/errorunidad.png"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="ErrorUnidad" border="0" alt="ErrorUnidad" src="http://calamitatum.files.wordpress.com/2010/02/errorunidad_thumb.png?w=342&#038;h=177" width="342" height="177" /></a> </p>
<p align="justify">&#160;</p>
<p> <span id="more-190"></span>
<p align="justify">Se instalaron el resto de componentes del paquete, pero se presentó un problema instalando Microsoft Silverlight: el archivo de log estaba lleno por lo que no pude obtener la causa real del error (a menos que sea, precisamente ésa la causa). El instalador concluyó así:</p>
<p align="justify"><a href="http://calamitatum.files.wordpress.com/2010/02/9.png"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="9" border="0" alt="9" src="http://calamitatum.files.wordpress.com/2010/02/9_thumb.png?w=496&#038;h=386" width="496" height="386" /></a> </p>
</p>
<p>Después de finalizar, abrí por primera vez el RC1 y esta fue su apariencia:</p>
<p><a href="http://calamitatum.files.wordpress.com/2010/02/12.png"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="12" border="0" alt="12" src="http://calamitatum.files.wordpress.com/2010/02/12_thumb.png?w=589&#038;h=332" width="589" height="332" /></a> </p>
<p align="justify">Me gusta mucho la nueva página de inicio así como el entorno en general (amén por el WPF). Estuve probando cosas aquí y allá y me hice una prematura idea sobre el performance del IDE. Profundizaré en ello luego. Me interesa mucho usar las nuevas posibilidades en cuanto a programación paralela que trae esta versión de .Net. Mi idea también es que sea usada como nuestra plataforma de desarrollo para lo que será en este año el remake de uno de los productos de nuestra empresa. </p>
<h5>Coda</h5>
<p align="justify">Dedicaré algo de tiempo durante este mes para irme adentrando en .Net 4.0 y todas sus prestaciones. Documentaré algunas de mis incursiones en la programación paralela y me prometo explorar algo del Azure. Tantas cosas se me hacen tan brillantes gracias a Visual Studio 2010 que es probable que me pase el año deslumbrado.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/calamitatum.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/calamitatum.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/calamitatum.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/calamitatum.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/calamitatum.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/calamitatum.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/calamitatum.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/calamitatum.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/calamitatum.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/calamitatum.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/calamitatum.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/calamitatum.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/calamitatum.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/calamitatum.wordpress.com/190/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=calamitatum.wordpress.com&amp;blog=10299642&amp;post=190&amp;subd=calamitatum&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://calamitatum.wordpress.com/2010/02/14/hola-mundo-en-vivo-desde-visual-studio-2010-rc1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cdf2640dd035275ff7864c848ae89dc8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">calamitatum</media:title>
		</media:content>

		<media:content url="http://calamitatum.files.wordpress.com/2010/02/inlinerepresentation0b97a87f7cf343139035012d512ad949.jpg" medium="image">
			<media:title type="html">Ver Inst1</media:title>
		</media:content>

		<media:content url="http://calamitatum.files.wordpress.com/2010/02/errorunidad_thumb.png" medium="image">
			<media:title type="html">ErrorUnidad</media:title>
		</media:content>

		<media:content url="http://calamitatum.files.wordpress.com/2010/02/9_thumb.png" medium="image">
			<media:title type="html">9</media:title>
		</media:content>

		<media:content url="http://calamitatum.files.wordpress.com/2010/02/12_thumb.png" medium="image">
			<media:title type="html">12</media:title>
		</media:content>
	</item>
		<item>
		<title>Google Buzz</title>
		<link>http://calamitatum.wordpress.com/2010/02/11/google-buzz/</link>
		<comments>http://calamitatum.wordpress.com/2010/02/11/google-buzz/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 15:32:40 +0000</pubDate>
		<dc:creator>Jhonny López Ramírez</dc:creator>
				<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[Experiencia de usuario]]></category>

		<guid isPermaLink="false">http://calamitatum.wordpress.com/2010/02/11/google-buzz/</guid>
		<description><![CDATA[Vuelve al ataque el gigante de la publicidad en internet (que tiene un buscador) lanza en ristre contra la privacidad de los usuarios. Con su nueva y poco flamante herramienta, Buzz, Google se sumerge en las redes sociales con un, poco práctico, término medio entre la mensajería y el chat: lo cierto es que los [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=calamitatum.wordpress.com&amp;blog=10299642&amp;post=180&amp;subd=calamitatum&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p align="justify">Vuelve al ataque el gigante de la publicidad en internet (que tiene un buscador) lanza en ristre contra la privacidad de los usuarios. Con su nueva y poco flamante herramienta, Buzz, Google se sumerge en las redes sociales con un, poco práctico, término medio entre la mensajería y el chat: lo cierto es que los <em>buzzes </em>son más ligeros que un mensaje de correo y más pesados que un simple chat (aunque muy rápidos y sincronizados, valga decirlo).</p>
<p align="justify">En términos de desarrollo sí que es interesante. Google vuelve a poner lo mejor de sí en un producto bastante eficiente, sencillo y de gran factura. Mis respetos en ese sentido.</p>
<p align="justify">Pero el bache principal que le encuentro es el de siempre cuando se trata de la empresa con el slogan más hipócrita a estas alturas (<em>don’t be evil</em>): la privacidad de los usuarios. En Google Buzz no es opcional ingresar (entrando a tu cuenta Gmail pasas por ahí) aunque sí lo sea retirarse; claro que cuando te retiras ya has sufrido un daño irreversible: se ha publicado información con respecto a quiénes son tus contactos y cuáles son aquellos con los que más conversas. Esta información, que debería ser privada es expuesta de inmediato sin que medie intervención del usuario. Supongo que eso también estará en la letra menuda de la Ley Patriótica. </p>
<p align="justify">Luego se pueden personalizar los niveles de seguridad y eso pero en mi caso particular (por pánico o no, eso a nadie le interesa) he decidido apagarlo. Lo correcto debía ser que hubiera podido decidir prenderlo.</p>
<p align="justify">Finalmente, en los términos de privacidad del mentado Buzz reza que aún el perfil que configuremos allí no es susceptible de ser incluido en los resultados de las búsquedas. ¿Acaso eso es siquiera discutible?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/calamitatum.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/calamitatum.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/calamitatum.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/calamitatum.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/calamitatum.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/calamitatum.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/calamitatum.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/calamitatum.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/calamitatum.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/calamitatum.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/calamitatum.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/calamitatum.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/calamitatum.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/calamitatum.wordpress.com/180/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=calamitatum.wordpress.com&amp;blog=10299642&amp;post=180&amp;subd=calamitatum&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://calamitatum.wordpress.com/2010/02/11/google-buzz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cdf2640dd035275ff7864c848ae89dc8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">calamitatum</media:title>
		</media:content>
	</item>
	</channel>
</rss>
