<?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/"
	>

<channel>
	<title>.: microcode.es :.</title>
	<atom:link href="http://www.microcode.es/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.microcode.es</link>
	<description>Un blog sobre programación en .NET y otras locuras más...</description>
	<lastBuildDate>Mon, 30 Aug 2010 21:29:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>C# Como hacer una captura de pantalla</title>
		<link>http://www.microcode.es/2010/08/30/c-como-hacer-una-captura-de-pantalla/</link>
		<comments>http://www.microcode.es/2010/08/30/c-como-hacer-una-captura-de-pantalla/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 21:27:22 +0000</pubDate>
		<dc:creator>Indigo</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[c#]]></category>

		<guid isPermaLink="false">http://www.microcode.es/2010/08/30/c-como-hacer-una-captura-de-pantalla/</guid>
		<description><![CDATA[En muchas aplicaciones de escritorio puede sernos útil recopilar información cuando se produzca una excepción no controlada. Podemos recopilar la información de la excepción analizando las propiedades Message o StackTrace. Otra información útil puede ser capturar la pantalla y ver que estaba haciendo el usuario en nuestra aplicación en el momento que falló.

Ojo, antes de [...]]]></description>
			<content:encoded><![CDATA[<p>En muchas aplicaciones de escritorio puede sernos útil recopilar información cuando se produzca una <a href="http://msdn.microsoft.com/es-es/library/c18k6c59.aspx" target="_blank">excepción</a> no controlada. Podemos recopilar la información de la <a href="http://msdn.microsoft.com/es-es/library/c18k6c59.aspx" target="_blank">excepción</a> analizando las propiedades <a href="http://msdn.microsoft.com/es-es/library/system.exception.message.aspx" target="_blank">Message</a> o <a href="http://msdn.microsoft.com/es-es/library/system.exception.stacktrace.aspx" target="_blank">StackTrace</a>. Otra información útil puede ser capturar la pantalla y ver que estaba haciendo el usuario en nuestra aplicación en el momento que falló.<br />
<span id="more-367"></span><br />
Ojo, antes de continuar me gustaría comentar que en todos los casos, la información que se envía deberá ser aprobada por el usuario, antes del envío, o través de las herramientas de configuración de la propia aplicación. No hagamos las cosas a escondidas ya que tarde o temprano estás cosas se terminan detectando y las consecuencias pueden ser desastrosas.</p>
<p>Bien para esto he creado una clase que he llamado <strong>ScreenHelper</strong> con un método estático <strong>Capture</strong>, que nos ayudará a conseguir dicha funcionalidad devolviéndonos un objeto <a href="http://msdn.microsoft.com/en-us/library/system.drawing.image.aspx" target="_blank">Image</a>.</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:8047e3f2-0356-486b-a52e-bfbe08c82ff7" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: csharp; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">public class ScreenHelper
{
   public static Image Capture()
   {
       Bitmap printscreen = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
       Graphics graphics = Graphics.FromImage(printscreen as Image);
       graphics.CopyFromScreen(0, 0, 0, 0, printscreen.Size);
       return (Image)printscreen;
   }
}</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>Este objeto <a href="http://msdn.microsoft.com/en-us/library/system.drawing.image.aspx" target="_blank">Image</a> lo podemos manipular, para por ejemplo redimensionarlo, o guardarlo en disco, para posteriormente enviarlo por correo electrónico. Para capturar y grabar la imagen usaremos otro método estático que llamaremos CaptureAndSave()</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:87ce1f73-5cb3-4cfb-ac77-205eb174ef6d" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: csharp; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">private static void CaptureAndSave()
{
  Image image = Capture();
  if (!Directory.Exists("directorio"))
      Directory.CreateDirectory("directorio");

  string path = Path.Combine("directorio", "nombrefichero");
  image.Save(path, ImageFormat.Png);
}</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>Como nota final destacar que antes de grabar la imagen, comprobaremos que el directorio donde vamos a grabar existe. También sería “casi obligatorio” utilizar el bloque try…catch para capturar cualquier excepción que se produzca en el proceso.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.microcode.es/2010/08/30/c-como-hacer-una-captura-de-pantalla/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WPF &#8211; Como asignar la propiedad ZIndex</title>
		<link>http://www.microcode.es/2010/08/03/wpf-como-asignar-la-propiedad-zindex/</link>
		<comments>http://www.microcode.es/2010/08/03/wpf-como-asignar-la-propiedad-zindex/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 16:35:02 +0000</pubDate>
		<dc:creator>Indigo</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[wpf]]></category>
		<category><![CDATA[zindex]]></category>

		<guid isPermaLink="false">http://www.microcode.es/2010/08/03/wpf-como-asignar-la-propiedad-zindex/</guid>
		<description><![CDATA[Según la MSND la propiedad ZIndex del objeto Panel sirve para el establecer el orden en el que se muestran los elementos en el plano Z.

Una vez dicho esto es fácil ver para que nos puede servir esta propiedad. El problema surge cuando intentamos establecer este valor en tiempo de ejecución en el codebehind, ya [...]]]></description>
			<content:encoded><![CDATA[<p>Según la MSND la propiedad <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.panel.zindex.aspx" target="_blank">ZIndex</a> del objeto Panel sirve para el establecer el orden en el que se muestran los elementos en el plano Z.<br />
<span id="more-363"></span><br />
Una vez dicho esto es fácil ver para que nos puede servir esta propiedad. El problema surge cuando intentamos establecer este valor en tiempo de ejecución en el <strong>codebehind</strong>, ya que esta propiedad no sale en el <strong>Intellisense</strong>.</p>
<p><a href="http://www.microcode.es/wp-content/uploads/2010/08/zindex01.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="zindex01" src="http://www.microcode.es/wp-content/uploads/2010/08/zindex01_thumb.png" border="0" alt="zindex01" width="244" height="83" /></a></p>
<p>Mirando la MSDN podemos pensar que si hacemos un typecast de nuestro <strong>StackPanel</strong> a <strong>Panel</strong> esta propiedad nos aparecerá, pero tampoco es así.</p>
<p>La única forma que he encontrado de poder asignar el valor al <strong>ZIndex</strong> es mediante el método <strong>SetValue</strong> de la siguiente forma</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:f85fc5b3-ff69-473c-9137-83d6d8d232ee" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: csharp; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">StackPanel stackPanel = new StackPanel();
stackPanel.SetValue(Panel.ZIndexProperty, 1);</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
]]></content:encoded>
			<wfw:commentRss>http://www.microcode.es/2010/08/03/wpf-como-asignar-la-propiedad-zindex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Que es Windows Presentation Foundation (WPF)?</title>
		<link>http://www.microcode.es/2010/08/02/que-es-windows-presentation-foundation-wpf/</link>
		<comments>http://www.microcode.es/2010/08/02/que-es-windows-presentation-foundation-wpf/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 14:46:34 +0000</pubDate>
		<dc:creator>Indigo</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[wpf]]></category>

		<guid isPermaLink="false">http://www.microcode.es/?p=352</guid>
		<description><![CDATA[¿Qué es WPF?
De una manera rápida, WPF (Windows Presentation Foundation) es una tecnología que nos permite aprovechar al máximo las características gráficas de nuestros equipos ofreciendo interfaces más ricas de las que estamos acostumbrados. El objetivo de WPF es proporcionar avances en el entorno de las aplicaciones de escritorio que permitan crear interfaces mucho más [...]]]></description>
			<content:encoded><![CDATA[<p><strong>¿Qué es WPF?</strong><br />
De una manera rápida, WPF (Windows Presentation Foundation) es una tecnología que nos permite aprovechar al máximo las características gráficas de nuestros equipos ofreciendo interfaces más ricas de las que estamos acostumbrados. El objetivo de WPF es proporcionar avances en el entorno de las aplicaciones de escritorio que permitan crear interfaces mucho más atractivas evitando una disminución del rendimiento de nuestras aplicaciones, como ocurre actualmente con Windows.Forms.<br />
<span id="more-352"></span><br />
<strong> Arquitectura de WPF</strong><br />
<strong><img class="alignleft size-full wp-image-353" style="margin-right:5px" title="arquitectura-wpf" src="http://www.microcode.es/wp-content/uploads/2010/08/arquitectura-wpf.png" alt="arquitectura-wpf" width="250" height="309" /> </strong> <em>- PresentationCore.dll</em>: Es donde encontramos el soporte para todos los tipos base como “UIElement” y “Visual”, y es de donde todas las formas (shapes) y controles (controls) derivan.<br />
<em>- WindowsBase.dll</em>: Es donde encontramos clases de apoyo que puede ser usadas fuera del ámbito de WPF, como por ejemplo el “DispatcherObject” o el “DependencyObject”.<br />
<em>- milcore.dll</em>: Es el núcleo del sistema de renderizado de WPF. Su misión es transformar los elementos visuales en los triángulos y texturas que Direct3D espera. Aunque sea considerado como parte de WPF esta dll forma parte de Windows Vista. De hecho, el Desktop Window Manager (DWM) en Windows Vista usa esta dll para renderizar el escritorio.<br />
<em>- WindowsCodecs.dll</em>: Es una API de bajo nivel que nos da soporte para el tratamiento de imágenes.<br />
<em>- Direct3D</em>: Es la API de bajo nivel que se encarga del renderizado de los gráficos generados mediante WPF.<br />
<em>- User32</em>: Pese a que forma parte de WPF no interviene en el renderizado de los controles.</p>
<p><strong>Ventajas</strong><br />
- Existe una separación clara entre nuestro código y la presentación (XAML).<br />
- Es bastante fácil crear estilos lo que nos permite hacer aplicaciones muchos más ricas de cara al usuario final.<br />
- Usa directamente la potencia de las tarjetas gráficas modernas para el renderizado de nuestras aplicaciones, liberando al procesador. Con esto evitamos que el dibujado interfaces complejas disminuya el rendimiento de nuestras aplicaciones.</p>
<p>Aquí termino esta pequeña introducción teórica de WPF. Próximamente explicaré algunas cosas como estilos, animaciones&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.microcode.es/2010/08/02/que-es-windows-presentation-foundation-wpf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Siguenos en facebook</title>
		<link>http://www.microcode.es/2010/08/01/siguenos-en-facebook/</link>
		<comments>http://www.microcode.es/2010/08/01/siguenos-en-facebook/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 20:07:43 +0000</pubDate>
		<dc:creator>Indigo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[facebook]]></category>

		<guid isPermaLink="false">http://www.microcode.es/?p=347</guid>
		<description><![CDATA[Nunca es tarde si la dicha es buena. Desde hoy microcode tiene su página en facebook. Puedes visitarnos en nuestra página oficial o hacerte seguidor a través del widget que tienes a continuación.

Desde facebook podrás seguir las publicaciones que haremos a partir de hoy más regularmente (o eso esperamos).
]]></description>
			<content:encoded><![CDATA[<p>Nunca es tarde si la dicha es buena. Desde hoy microcode tiene su página en <a title="facebook" href="http://www.facebook.com" target="_blank">facebook</a>. Puedes visitarnos en nuestra <a title="microcode in facebook" href="http://www.facebook.com/pages/Microcode/117213454993970" target="_blank">página oficial</a> o hacerte seguidor a través del widget que tienes a continuación.</p>
<p><iframe src="http://www.facebook.com/plugins/likebox.php?id=117213454993970&amp;width=300&amp;connections=10&amp;stream=false&amp;header=true&amp;height=287" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:300px; height:287px;" allowTransparency="true"></iframe></p>
<p>Desde facebook podrás seguir las publicaciones que haremos a partir de hoy más regularmente (o eso esperamos).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.microcode.es/2010/08/01/siguenos-en-facebook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Escribir un plugin para jQuery (3 parte)</title>
		<link>http://www.microcode.es/2010/02/02/escribir-un-plugin-para-jquery-3-parte/</link>
		<comments>http://www.microcode.es/2010/02/02/escribir-un-plugin-para-jquery-3-parte/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 13:56:34 +0000</pubDate>
		<dc:creator>Indigo</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.microcode.es/2010/02/02/escribir-un-plugin-para-jquery-3-parte/</guid>
		<description><![CDATA[En mis anteriores artículos (Escribir un plugin para jQuery parte 1 y parte 2) sobre desarrollar un plugin para jQuery hemos visto como crear un plugin básico y como configurarlo dinámicamente. En esta ocasión vamos a ver como podemos disparar nuestros propios eventos y por ejemplo, que otro plugin actue en consecuencia.

Para esto vamos a [...]]]></description>
			<content:encoded><![CDATA[<p>En mis anteriores artículos (Escribir un plugin para jQuery <a href="http://www.microcode.es/2010/01/27/escribir-un-plugin-para-jquery-1-parte/" target="_blank">parte 1</a> y <a href="http://www.microcode.es/2010/01/29/escribir-un-plugin-para-jquery-2-parte/" target="_blank">parte 2</a>) sobre desarrollar un <strong>plugin</strong> para <strong>jQuery</strong> hemos visto como crear un <strong>plugin</strong> básico y como configurarlo dinámicamente. En esta ocasión vamos a ver como podemos disparar nuestros propios eventos y por ejemplo, que otro <strong>plugin</strong> actue en consecuencia.</p>
<p><span id="more-329"></span></p>
<p>Para esto vamos a seguir con el <strong>plugin</strong> que hemos desarrollado y que sirve para cambiar el estilo de nuestras cajas de texto cuando ésta tiene el foco y lo pierde.</p>
<p>Para usar eventos necesitamos tres cosas, el evento en si mismo (click, blur, focus), algo que lo lance y alguien que lo maneje (delegado). En <strong>jQuery</strong> el encargado de lanzar un evento es el método <a href="http://api.jquery.com/trigger/" target="_blank"><strong>trigger</strong></a> y se hace de la siguiente manera</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:5f8d5435-be47-4f42-8e77-ae79cc8cccad" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">$(this).trigger('nombre_de_mi_evento', parametros_de_mi_evento);</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>Para manejar un evento se usa el método <a href="http://api.jquery.com/bind/" target="_blank"><strong>bind</strong></a> de la siguiente manera</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:e1f1b172-be39-4a3c-b117-a2dcd0a6eb0d" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">$(this).bind(nombre_de_mi_eveto, function(e, data) {
// Código de la función que manejera mi evento. En la variable data tenemos los parameotros que hemos enviado en el trigger.
});</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>Aplicado esto a nuestro <strong>plugin</strong>, lo primero que haremos será crear un div donde iremos escribiendo todos lo eventos que vayamos manejando</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:15bdd968-f627-4266-8155-16e8709b5492" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">&lt;div id="status"&gt;&lt;/div&gt;</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>y en nuestro fichero common.js pondremos los delegados</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:7f6bfd7d-2ff8-4625-8dee-32b15918a029" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">$('input').bind('myfocus', function(e, data) {
   var html = $('#status').html();
   html += 'onfocus&lt;br /&gt;';
   $('#status').html(html);
});

$('input').bind('myblur', function(e, data) {
   var html = $('#status').html();
   html += 'onblur&lt;br /&gt;';
   $('#status').html(html);
});</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>Luego sólo tendremos que modificar nuestro plugin para que lance los eventos</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:bf2df96a-4667-41f9-91c2-c5977db831f8" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; "> $(this).focus(function() {
 	//...
    $(this).trigger('myfocus', "on focus");
	//...
 });
 $(this).blur(function() {
	//...
	$(this).trigger('myblur', "on blur");
	//...
 });</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>Con esto ya tendríamos nuestros propios eventos <strong>myfocus</strong> y <strong>myblur</strong> gestionados.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.microcode.es/2010/02/02/escribir-un-plugin-para-jquery-3-parte/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Escribir un plugin para jQuery (2 parte)</title>
		<link>http://www.microcode.es/2010/01/29/escribir-un-plugin-para-jquery-2-parte/</link>
		<comments>http://www.microcode.es/2010/01/29/escribir-un-plugin-para-jquery-2-parte/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 22:37:16 +0000</pubDate>
		<dc:creator>Indigo</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.microcode.es/2010/01/29/escribir-un-plugin-para-jquery-2-parte/</guid>
		<description><![CDATA[Lo más normal es que cuando escribamos un plugin para jQuery (o cualquier otro trozo de código reutilizable) lo dotemos de alguna forma para poder configurarlo dependiendo de las necesidades de cada momento.

Siguiente con el ejemplo de mi artículo anterior “Escribir un plugin para jQuery (1 parte)” veremos como dotar al plugin de esta capacidad [...]]]></description>
			<content:encoded><![CDATA[<p>Lo más normal es que cuando escribamos un <strong>plugin</strong> para <strong>jQuery</strong> (o cualquier otro trozo de código reutilizable) lo dotemos de alguna forma para poder configurarlo dependiendo de las necesidades de cada momento.<br />
<span id="more-324"></span><br />
Siguiente con el ejemplo de mi artículo anterior “<a href="http://www.microcode.es/2010/01/27/escribir-un-plugin-para-jquery-1-parte/" target="_blank">Escribir un plugin para jQuery (1 parte)</a>” veremos como dotar al <strong>plugin</strong> de esta capacidad de configuración. En este caso configuraremos el color del fondo, asi como el borde de nuestros <strong>textbox</strong>, tanto cuando tiene foco (<strong>focus</strong>) como cuando no lo tiene (<strong>blur</strong>). El código para guardar estos valores es así</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:73f6d451-aa05-4b24-a826-2fab715b700a" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">$.fn.highlight.defaults = {
   focusbackground: '#EFF5FF',
   focusborder: 'solid 1px #73A6FF',
   blurbackground: '#EEEEEE',
   blurborder: 'solid 1px #DFDFDF'
};</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>Para permitir que nuestro plugin admita parametros de configuración usaremos un parametros en la llamada del plugin donde pasaremos los valores que queramos</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:2cf0b8d8-ea2e-440c-966a-08e901e5e4ef" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">$.fn.highlight = function(options) {
   var opts = $.extend({}, $.fn.highlight.defaults, options);
   // Resto del código
}</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>Juntándolo todo tendríamos lo siguiente</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:f73463b4-f592-4f97-b579-b997aac7a053" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">(function($) {
    $.fn.highlight = function(options) {
        var opts = $.extend({}, $.fn.highlight.defaults, options);
        this.each(function() {
            var obj = $(this);
            // Valores por defecto
            obj.css('background', opts.blurbackground);
            obj.css('border', opts.blurborder);

            obj.focus(function() {
                obj.css('background', opts.focusbackground);
                obj.css('border', opts.focusborder);
            });

            obj.blur(function() {
                obj.css('background', opts.blurbackground);
                obj.css('border', opts.blurborder);
            });
        });
    };

    $.fn.highlight.defaults = {
        focusbackground: '#EFF5FF',
        focusborder: 'solid 1px #73A6FF',
        blurbackground: '#EEEEEE',
        blurborder: 'solid 1px #DFDFDF'
    };
})(jQuery);</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>Para hacer la llamada a nuestro plugin tan sólo hay que hacer lo siguiente</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:4082a165-a1d3-4159-a438-d1ac713c5acd" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">$().ready(function() {
    $('input').highlight({
        blurborder: 'red'
    });
});</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>Para la próxima entrega dejaremos otros detalles que podemos hacer para mejor el plugin y así aprender un poco mas de <strong>jQuery</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.microcode.es/2010/01/29/escribir-un-plugin-para-jquery-2-parte/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Escribir un plugin para jQuery (1 parte)</title>
		<link>http://www.microcode.es/2010/01/27/escribir-un-plugin-para-jquery-1-parte/</link>
		<comments>http://www.microcode.es/2010/01/27/escribir-un-plugin-para-jquery-1-parte/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 20:25:09 +0000</pubDate>
		<dc:creator>Indigo</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.microcode.es/2010/01/27/escribir-un-plugin-para-jquery/</guid>
		<description><![CDATA[Durante el último año una de las cosas que más gratamente me ha sorprendido es jQuery y jQuery UI. Con muy poco código tenemos toda la potencia de javascript para poder hacer autenticas maravillas en cliente. Toda esta funcionalidad puede ser extendida mediante plugins.

En la página de jQuery tener un gran cantidad de plugins preparados [...]]]></description>
			<content:encoded><![CDATA[<p>Durante el último año una de las cosas que más gratamente me ha sorprendido es <a href="http://jquery.com" target="_blank">jQuery</a> y <a href="http://jqueryui.com/" target="_blank">jQuery UI</a>. Con muy poco código tenemos toda la potencia de javascript para poder hacer autenticas maravillas en cliente. Toda esta funcionalidad puede ser extendida mediante plugins.<br />
<span id="more-319"></span><br />
En la página de <strong>jQuery </strong>tener un gran cantidad de <a href="http://plugins.jquery.com/" target="_blank">plugins</a> preparados para ser usados en nuestra página con muy poco esfuerzo. Pero, ¿y si queremos hacernos un plugin personalizado? Pensé que hacer un plugin sería algo costoso y que requeriría de tener muchos conocimientos de <strong>javascript </strong>y <strong>jQuery</strong>, pero nada más lejos de la realidad. Para demostrarlo he hecho un pequeño <strong>plugin </strong>que cambia el estilo de todos las cajas de texto (inputs) cada vez que capture el foco y lo deje en un valor inicial cuando lo pierda. Para comenzar el plugin lo primero que tenemos que hacer es extender el propio objeto jquery para añadir nuestra funcionalidad (método). La forma de hacer esto es la siguiente</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:dd0af967-01a4-4805-9218-41c77ff8fce8" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">(function($) {
    $.fn.highlight = function(options) {
		// Nuestro método es 'highlight' y el código va a partir aquí.
    };
})(jQuery);</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>Bien, con esto ya podríamos llamar a nuestro código de la siguiente manera</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:86f5718f-b30f-4e6d-9f2b-8c7096dcc65e" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">$().ready(function() {
    $('input').highlight();
});</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>Este código llama a nuestro método para todos los ‘inputs’ (la potencia de jQuery es casi infinita) de nuestra página una vez que ésta esté disponible.</p>
<p>Volviendo a nuestro método, el código para cambiar los estilos de las cajas de texto quedaría de la siguiente manera</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:1433c485-28a5-413f-904a-29f014f18dd9" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">obj.focus(function() {
	obj.css('background', '#EFF5FF');
	obj.css('border', 'solid 1px #73A6FF');
});

obj.blur(function() {
	obj.css('background', '#EEE');
	obj.css('border', 'solid 1px #DFDFDF');
});</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>Juntándolo todo tenemos</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:4706bde7-1bf1-4e17-b38c-c5ab9569254a" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">(function($) {
    $.fn.highlight = function(options) {
        this.each(function() {
            var obj = $(this);
            // Valores por defecto
            obj.css('background', '#EEE');
            obj.css('border', 'solid 1px #DFDFDF');

            obj.focus(function() {
                obj.css('background', '#EFF5FF');
                obj.css('border', 'solid 1px #73A6FF');
            });

            obj.blur(function() {
                obj.css('background', '#EEE');
                obj.css('border', 'solid 1px #DFDFDF');
            });
        });
    };
})(jQuery);</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>Todo esto lo guardamos en un fichero con la extensión .js. Segun las buenas practicas nuestro plugin debería estar en un fichero con el nombre jquery.highlight.js.</p>
<p>El código que llama a nuestro plugin lo he puesto en un archivo llamado common.js, por lo que juntándolo todo en nuestra página aspx (o html) quedaría</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:d01cfbab-9deb-4b2f-a6b5-6274c2b28760" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: csharp; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">&lt;head runat="server"&gt;
    &lt;title&gt;&lt;/title&gt;
    &lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js" type="text/javascript"&gt;&lt;/script&gt;
    &lt;script src="jquery.highlight.js" type="text/javascript"&gt;&lt;/script&gt;
    &lt;script src="common.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;form id="form1" runat="server"&gt;
    &lt;div&gt;
        &lt;input id="text1" type="text" /&gt;
        &lt;input id="text2" type="text" /&gt;
    &lt;/div&gt;
    &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>Como vemos, crear nuestro primer plugin en jQuery ha sido muy sencillo. Próximamente veremos como podemos personalizar aun más nuestro script para que admita parámetros.</p>
<p><img id="myFxSearchImg" style="border: medium none; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" alt="" width="24" height="24" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.microcode.es/2010/01/27/escribir-un-plugin-para-jquery-1-parte/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>C# El m&#233;todo MapPath</title>
		<link>http://www.microcode.es/2010/01/23/c-el-mtodo-mappath/</link>
		<comments>http://www.microcode.es/2010/01/23/c-el-mtodo-mappath/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 16:58:37 +0000</pubDate>
		<dc:creator>Indigo</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[mappath]]></category>

		<guid isPermaLink="false">http://www.microcode.es/2010/01/23/c-el-mtodo-mappath/</guid>
		<description><![CDATA[Un método bastante utilizado cuando desarrollamos aplicaciones web en ASP.NET es el método MapPath. Este método puede ser llamado de la siguiente manera

string path = HttpContext.Current.Server.MapPath("~");

La clase HostingEnvironment la tenemos en el espacio de nombre System.Web.Hosting, en el ensamblado System.Web.dll. Tenemos mas información de está clase en la MSDN al igual que del método MapPath.
]]></description>
			<content:encoded><![CDATA[<p>Un método bastante utilizado cuando desarrollamos aplicaciones web en ASP.NET es el <strong>método MapPath</strong>. Este método puede ser llamado de la siguiente manera</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:42803260-9cd0-48d7-bb4a-77cfbc2fef57" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: csharp; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">string path = HttpContext.Current.Server.MapPath("~");</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p><span id="more-315"></span><br />
Llamado así este método nos devuelve la ruta física de la raiz de la aplicación web. Es útil para localizar directorios y así, por ejemplo, poder abrir ficheros de configuración propia. Pero ¿qué ocurre si llamamos a este método en un delegado?. La llamada fallará porque el object HttpContext no está creado. La solución es llamar al método de la siguiente forma</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:83d07d70-7a98-42f6-876b-60537278efd3" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: csharp; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">string path = HostingEnvironment.MapPath()</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>La clase <strong>HostingEnvironment</strong> la tenemos en el espacio de nombre <strong>System.Web.Hosting</strong>, en el ensamblado <strong>System.Web.dll</strong>. Tenemos mas información de está clase en la <a href="http://msdn.microsoft.com/en-us/library/system.web.hosting.hostingenvironment.aspx" target="_blank">MSDN</a> al igual que del método <strong><a href="http://msdn.microsoft.com/en-us/library/system.web.hosting.hostingenvironment.mappath.aspx" target="_blank">MapPath</a>.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.microcode.es/2010/01/23/c-el-mtodo-mappath/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# Como obtener la fecha de compilaci&#243;n de un ensamblado</title>
		<link>http://www.microcode.es/2010/01/11/c-como-obtener-la-fecha-de-compilacin-de-un-ensamblado/</link>
		<comments>http://www.microcode.es/2010/01/11/c-como-obtener-la-fecha-de-compilacin-de-un-ensamblado/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 21:47:08 +0000</pubDate>
		<dc:creator>Indigo</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[assembly]]></category>
		<category><![CDATA[assemblyfileversion]]></category>
		<category><![CDATA[assemblyversion]]></category>
		<category><![CDATA[c#]]></category>

		<guid isPermaLink="false">http://www.microcode.es/2010/01/11/c-como-obtener-la-fecha-de-compilacin-de-un-ensamblado/</guid>
		<description><![CDATA[Para poder obtener la fecha de compilacion de un ensamblado, tendremos que hacer dos cosas

1.- Modificar las líneas AssemblyVersion y AssemblyFileVersion del fichero AssemblyInfo.cs

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version
//      Build [...]]]></description>
			<content:encoded><![CDATA[<p>Para poder obtener la fecha de compilacion de un ensamblado, tendremos que hacer dos cosas<br />
<span id="more-312"></span><br />
1.- Modificar las líneas <strong>AssemblyVersion</strong> y <strong>AssemblyFileVersion</strong> del fichero <strong>AssemblyInfo.cs</strong></p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:e0b71070-949e-46a4-9808-18388f87fd46" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: csharp; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("0.1.*")]
[assembly: AssemblyFileVersion("0.1.1.0")]</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>Del <strong>AssemblyVersion</strong> obtendremos la fecha de compilación mientras que la línea <strong>AssemblyFileVersion</strong> es de donde sacamos la versión del programa (aquí se puede usar cualquier numeración). Para esto usamos el siguiente código</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:92d96afa-4850-490b-9713-d656caa359f3" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: csharp; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">Assembly assembly = Assembly.GetExecutingAssembly();

FileVersionInfo versionInfo = FileVersionInfo.GetVersionInfo(assembly.Location);

DateTime assemblyDate = new DateTime(2000, 1, 1)
        .AddDays(assembly.GetName().Version.Build)
        .AddSeconds(assembly.GetName().Version.Revision * 2);

version = string.Format("{0}.{1}.{2} del {3}",
    versionInfo.ProductMajorPart,
    versionInfo.ProductMinorPart,
    versionInfo.ProductBuildPart,
    assemblyDate.ToString("dd/MM/yyyy"));</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
]]></content:encoded>
			<wfw:commentRss>http://www.microcode.es/2010/01/11/c-como-obtener-la-fecha-de-compilacin-de-un-ensamblado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>c# Encriptar un string con MD5</title>
		<link>http://www.microcode.es/2010/01/07/c-encriptar-un-string-con-md5/</link>
		<comments>http://www.microcode.es/2010/01/07/c-encriptar-un-string-con-md5/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 14:05:14 +0000</pubDate>
		<dc:creator>Indigo</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[c#;md5]]></category>

		<guid isPermaLink="false">http://www.microcode.es/2010/01/07/c-encriptar-un-string-con-md5/</guid>
		<description><![CDATA[Tras la resaca navideña, volvemos al trabajo. En esta ocasión voy a escribir el código de método estático que nos permitiría codificar un string en MD5.  Para saber que es MD5 te recomiendo este enlace.

El código es tan simple como

public static string MD5Encrypt(string value)
{
  MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider();

  byte[] data = System.Text.Encoding.ASCII.GetBytes(value);
 [...]]]></description>
			<content:encoded><![CDATA[<p>Tras la resaca navideña, volvemos al trabajo. En esta ocasión voy a escribir el código de método estático que nos permitiría codificar un string en <strong>MD5</strong>.  Para saber que es <strong>MD5</strong> te recomiendo este <a href="http://es.wikipedia.org/wiki/MD5" target="_blank">enlace</a>.<br />
<span id="more-311"></span><br />
El código es tan simple como</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:abb93418-14ff-4fdf-bd26-e6318e72268b" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: csharp; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">public static string MD5Encrypt(string value)
{
  MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider();

  byte[] data = System.Text.Encoding.ASCII.GetBytes(value);
  data = provider.ComputeHash(data);

  string md5 = string.Empty;

  for (int i = 0; i &lt; data.Length; i++)
      md5 += data[i].ToString("x2").ToLower();

  return md5;
}</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>También debemos añadir esto en los using de nuestra clase</p>
<div id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:4056170d-6743-46ee-a616-aea98c3829d4" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">
<pre class="brush: csharp; gutter: false; first-line: 1; tab-size: 4;  toolbar: true; ">using System.Security.Cryptography;</pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
]]></content:encoded>
			<wfw:commentRss>http://www.microcode.es/2010/01/07/c-encriptar-un-string-con-md5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
