<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">ponte</title><subtitle type="html">Un blog de Gabriel Flores sobre C#, .NET y tecnología</subtitle><id>http://msmvps.com/blogs/gflores/atom.aspx</id><link rel="alternate" type="text/html" href="http://msmvps.com/blogs/gflores/default.aspx" /><link rel="self" type="application/atom+xml" href="http://msmvps.com/blogs/gflores/atom.aspx" /><generator uri="http://communityserver.org" version="4.1.40407.4157">Community Server</generator><updated>2007-03-22T13:53:00Z</updated><entry><title>Screencasts sobre ADO.NET Entity Framework con C#</title><link rel="alternate" type="text/html" href="/blogs/gflores/archive/2009/09/15/screencasts-sobre-ado-net-entity-framework-con-c.aspx" /><id>/blogs/gflores/archive/2009/09/15/screencasts-sobre-ado-net-entity-framework-con-c.aspx</id><published>2009-09-15T13:13:00Z</published><updated>2009-09-15T13:13:00Z</updated><content type="html">&lt;p&gt;En esta serie de screencasts vemos como hacer cosas sencillas con ADO.NET Entity Framework, para un primer contacto con esta tecnolog&amp;iacute;a.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Introducci&amp;oacute;n&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.youtube.com/watch?v=t34ASNrXh1Y"&gt;&lt;img title="Northwind y pubs" src="http://i1.ytimg.com/vi/t34ASNrXh1Y/default.jpg" alt="Northwind y pubs" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.youtube.com/watch?v=t34ASNrXh1Y"&gt;&lt;span&gt;Northwind y pubs:&lt;/span&gt;&lt;/a&gt; &lt;br /&gt;Para saber como tener instaladas las bases de datos de prueba Northwind y pubs, prove&amp;iacute;das por Microsoft&lt;/p&gt;
&lt;p&gt;

&lt;a href="http://www.youtube.com/watch?v=PuhPIRLokAY"&gt;&lt;img title="Usando C# en ASP.NET con ADO.NET Entity Framework" src="http://i1.ytimg.com/vi/PuhPIRLokAY/default.jpg" alt="Usando C# en ASP.NET con ADO.NET Entity Framework" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.youtube.com/watch?v=PuhPIRLokAY"&gt;&lt;span&gt;Usando C# en ASP.NET con ADO.NET Entity Framework&lt;/span&gt;&lt;/a&gt;
&lt;br /&gt;Un ejemplo r&amp;aacute;pido para ver como es el contexto de uso del ADO.NET Entity Framework

&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Tareas espec&amp;iacute;ficas&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;
&lt;a href="http://www.youtube.com/watch?v=6Rm4z2iUxik"&gt;&lt;img title="B&amp;uacute;squeda en ADO.NET Entity Framework con C#" src="http://i3.ytimg.com/vi/6Rm4z2iUxik/default.jpg" alt="B&amp;uacute;squeda en ADO.NET Entity Framework con C#" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=6Rm4z2iUxik"&gt;&lt;span&gt;B&amp;uacute;squeda en ADO.NET Entity Framework con C#&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;Paso inicial para el resto de las tareas
	&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=mo9FSoHL9nY"&gt;&lt;img title="Alta de registros con ADO.NET Entity Framework con C#" src="http://i2.ytimg.com/vi/mo9FSoHL9nY/default.jpg" alt="Alta de registros con ADO.NET Entity Framework con C#" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=mo9FSoHL9nY"&gt;&lt;span&gt;Alta de registros con ADO.NET Entity Framework con C#&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;Como agregar registros
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=ngZqW0vcUWc"&gt;&lt;img title="Baja de registros con ADO.NET Entity Framework con C#" src="http://i3.ytimg.com/vi/ngZqW0vcUWc/default.jpg" alt="Baja de registros con ADO.NET Entity Framework con C#" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=ngZqW0vcUWc"&gt;&lt;span&gt;&lt;br /&gt;Baja de registros con ADO.NET Entity Framework con C#&lt;/span&gt;&lt;/a&gt;
&lt;br /&gt;Como eliminar registros
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=jeSbsGlQb3E"&gt;&lt;img title="Cambios a registros en ADO.NET Entity Framework con C#" src="http://i3.ytimg.com/vi/jeSbsGlQb3E/default.jpg" alt="Cambios a registros en ADO.NET Entity Framework con C#" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=jeSbsGlQb3E"&gt;&lt;span&gt;Cambios a registros en ADO.NET Entity Framework con C#&lt;/span&gt;&lt;/a&gt;
&lt;br /&gt;Como hacer modificaciones&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1723509" width="1" height="1"&gt;</content><author><name>gflores</name><uri>http://msmvps.com/members/gflores/default.aspx</uri></author><category term="c#" scheme="http://msmvps.com/blogs/gflores/archive/tags/c_2300_/default.aspx" /><category term="nivel:100" scheme="http://msmvps.com/blogs/gflores/archive/tags/nivel_3A00_100/default.aspx" /></entry><entry><title>No abre http://localhost Visual Studio</title><link rel="alternate" type="text/html" href="/blogs/gflores/archive/2009/06/08/no-abre-http-localhost-visual-studio.aspx" /><id>/blogs/gflores/archive/2009/06/08/no-abre-http-localhost-visual-studio.aspx</id><published>2009-06-09T03:57:20Z</published><updated>2009-06-09T03:57:20Z</updated><content type="html">&lt;p&gt;Hace unos días unos compañeros de la universidad me advirtieron de un problema que les ocurría en común a máquinas donde tuvieran Visual Studio 2008 y particularmente en sistema operativo Windows Vista. Se trata de que al intentar correr alguna aplicación ASP.NET desde el entorno de desarrollo les salía Internet Explorer con la infame “Internet Explorer cannot display the webpage” y pues, estaban sin poder continuar con sus trabajos.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gflores.metablogapi/5314.iecannot_5F00_2C07D9A6.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="iecannot" border="0" alt="iecannot" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gflores.metablogapi/4152.iecannot_5F00_thumb_5F00_537EA610.png" width="244" height="153" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Al principio me imaginaba que era algo que tenía que ver con el archivo de hosts y después de &lt;a href="http://stackoverflow.com/questions/657383/localhost-does-not-browser-looks-for-www-localhost-com"&gt;investigar un poco más&lt;/a&gt;, me dieron la razón.&lt;/p&gt;  &lt;p&gt;Lo que debes hacer es usar un editor de texto (como Notepad o Notepad++) y abrir desde el directorio C:\Windows\System32\Drivers\Etc\ un archivo que se llama hosts (sin extensión) y remover la línea que dice algo de localhost. Te puede aparecer así:&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;strong&gt;::1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; localhost&lt;/strong&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;o así   &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;127.0.0.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://www.localhost.com"&gt;www.localhost.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Ahora nada más graba este archivo otra vez, cuidando que no se anexe la extensión txt (y si se anexa, se la quitas). Parece medio absurdo, pero puede ser que si te ocurre este problema, quizás sea por esto.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1694642" width="1" height="1"&gt;</content><author><name>gflores</name><uri>http://msmvps.com/members/gflores/default.aspx</uri></author><category term="nivel:100" scheme="http://msmvps.com/blogs/gflores/archive/tags/nivel_3A00_100/default.aspx" /><category term="howto" scheme="http://msmvps.com/blogs/gflores/archive/tags/howto/default.aspx" /></entry><entry><title>Comunidades Virtuales</title><link rel="alternate" type="text/html" href="/blogs/gflores/archive/2009/05/21/comunidades-virtuales.aspx" /><id>/blogs/gflores/archive/2009/05/21/comunidades-virtuales.aspx</id><published>2009-05-21T15:19:00Z</published><updated>2009-05-21T15:19:00Z</updated><content type="html">&lt;p&gt;De la Facultad de Contadur&amp;iacute;a, Administraci&amp;oacute;n e Inform&amp;aacute;tica de la &lt;a href="http://uabc.mx"&gt;UABC&lt;/a&gt;, me invitaron a dar una pl&amp;aacute;tica acerca de Comunidades Virtuales en la cual les coment&amp;eacute; acerca de como los foros, sitios de redes sociales y otros conforman lo que a todas luces es comunidad que aunque virtuales, llevan un gran sentido de pertenencia y participaci&amp;oacute;n, adem&amp;aacute;s como la &lt;a title="TJNET" href="http://tjnet.org"&gt;Comunidad .NET Tijuana&lt;/a&gt; en particular hace uso de estas herramientas para complementar esta comunidad presencial. Aqu&amp;iacute; algunas fotos y la presentaci&amp;oacute;n misma:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="width:425px;text-align:left;" id="__ss_1467837"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/gabofr/comunidades-virtuales-1467837?type=presentation" title="Comunidades Virtuales"&gt;Comunidades Virtuales&lt;/a&gt;





&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/gabofr"&gt;Gabriel Flores&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
&lt;iframe style="border:1px solid #dde5e9;margin:3px;padding:0pt;width:240px;height:66px;background-color:#ffffff;" src="http://cid-b4329e20a9381067.skydrive.live.com/embedrowdetail.aspx/Pictures/Fotos%20de%20Eventos%20TJNET/Comunidades%20Virtuales" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Por cierto, un agradecimiento a Sergio Quijada y su equipo por la invitaci&amp;oacute;n.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1692874" width="1" height="1"&gt;</content><author><name>gflores</name><uri>http://msmvps.com/members/gflores/default.aspx</uri></author><category term="nivel:100" scheme="http://msmvps.com/blogs/gflores/archive/tags/nivel_3A00_100/default.aspx" /><category term="eventos" scheme="http://msmvps.com/blogs/gflores/archive/tags/eventos/default.aspx" /></entry><entry><title>ADO.NET Entity Framework y llaves foráneas</title><link rel="alternate" type="text/html" href="/blogs/gflores/archive/2009/04/30/ado-net-entity-framework-y-llaves-for-225-neas.aspx" /><id>/blogs/gflores/archive/2009/04/30/ado-net-entity-framework-y-llaves-for-225-neas.aspx</id><published>2009-04-30T16:37:12Z</published><updated>2009-04-30T16:37:12Z</updated><content type="html">&lt;p&gt;Es algo muy normal trabajar con tablas que están relacionadas con otras por medio de llaves foráneas. Si has usado ADO.NET Framework para hacer algunas operaciones con la BD y para mostrar datos en una página ASP.NET, quizás te hayas encontrado con el dilema de mostrar los campos relacionados de la tabla externa a la que estás mostrando.&lt;/p&gt;  &lt;p&gt;Por ejemplo, tomando como ejemplo la clásica base de datos de Northwind, y teniendo las tablas de Products y Categories, y si definimos nuestro modelo de Entidades de esta forma:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gflores/modelo_5F00_405B6A31.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="modelo" border="0" alt="modelo" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gflores/modelo_5F00_thumb_5F00_1270A82A.jpg" width="419" height="312" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Podemos mostrar en un GridView el contenido de Products haciendo la referencia correspondiente:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;pre&gt;        NorthwindModel.NorthwindEntities ne &lt;span style="background-color:white;font-family:courier new;color:red;font-size:11px;"&gt;=&lt;/span&gt; 
            &lt;span style="background-color:white;font-family:courier new;color:blue;font-size:11px;"&gt;new&lt;/span&gt; NorthwindModel.NorthwindEntities();

        var products &lt;span style="background-color:white;font-family:courier new;color:red;font-size:11px;"&gt;=&lt;/span&gt; from p &lt;span style="background-color:white;font-family:courier new;color:blue;font-size:11px;"&gt;in&lt;/span&gt; ne.Products
                       select p;

        grdProductos.DataSource &lt;span style="background-color:white;font-family:courier new;color:red;font-size:11px;"&gt;=&lt;/span&gt; products;
        grdProductos.DataBind();&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gflores/grid_5F00_68FC66E9.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="grid" border="0" alt="grid" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gflores/grid_5F00_thumb_5F00_184DDC74.jpg" width="405" height="321" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Pero ¿qué tal si quiero mostrar en el mismo GridView la descripción de la categoría? Basta incluir en la declaración del campo la propiedad Include para que se pueda cargar ese dato.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;pre&gt;        NorthwindModel.NorthwindEntities ne &lt;span style="background-color:white;font-family:courier new;color:red;font-size:11px;"&gt;=&lt;/span&gt; 
            &lt;span style="background-color:white;font-family:courier new;color:blue;font-size:11px;"&gt;new&lt;/span&gt; NorthwindModel.NorthwindEntities();

        var products &lt;span style="background-color:white;font-family:courier new;color:red;font-size:11px;"&gt;=&lt;/span&gt; from p &lt;span style="background-color:white;font-family:courier new;color:blue;font-size:11px;"&gt;in&lt;/span&gt; ne.Products
                       &lt;strong&gt;.Include(&lt;span style="background-color:#ededed;font-family:courier new;color:#666666;font-size:11px;"&gt;&amp;quot;Categories&amp;quot;&lt;/span&gt;)&lt;/strong&gt;
                       select p;

        grdProductos.DataSource &lt;span style="background-color:white;font-family:courier new;color:red;font-size:11px;"&gt;=&lt;/span&gt; products;
        grdProductos.DataBind();&lt;/pre&gt;

&lt;p&gt;Y con esto tenemos acceso a los campos de la segunda tabla para de esa manera mostrar como fuente de datos de alguna columna del grid algún campo. En este caso, con un Template Field hacemos un Bind usando simplemente &lt;em&gt;Categories.Description&lt;/em&gt; que sería la manera de ligar desde Products a ese campo:&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;pre&gt;    &amp;lt;asp:TemplateField HeaderText=&lt;span style="background-color:#ededed;font-family:courier new;color:#666666;font-size:11px;"&gt;&amp;quot;Category&amp;quot;&lt;/span&gt;&amp;gt;
        &amp;lt;EditItemTemplate&amp;gt;
            &amp;lt;asp:TextBox ID=&lt;span style="background-color:#ededed;font-family:courier new;color:#666666;font-size:11px;"&gt;&amp;quot;TextBox1&amp;quot;&lt;/span&gt; runat=&lt;span style="background-color:#ededed;font-family:courier new;color:#666666;font-size:11px;"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; 
                Text=&amp;#39;&amp;lt;%# Bind(&lt;span style="background-color:#ededed;font-family:courier new;color:#666666;font-size:11px;"&gt;&amp;quot;Categories.Description&amp;quot;&lt;/span&gt;) &lt;span style="background-color:white;font-family:courier new;color:red;font-size:11px;"&gt;%&lt;/span&gt;&amp;gt;&amp;#39;&amp;gt;
                &amp;lt;/asp:TextBox&amp;gt;
        &amp;lt;/EditItemTemplate&amp;gt;
        &amp;lt;ItemTemplate&amp;gt;
            &amp;lt;asp:Label ID=&lt;span style="background-color:#ededed;font-family:courier new;color:#666666;font-size:11px;"&gt;&amp;quot;Label1&amp;quot;&lt;/span&gt; runat=&lt;span style="background-color:#ededed;font-family:courier new;color:#666666;font-size:11px;"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; 
                Text=&amp;#39;&amp;lt;%# Bind(&lt;span style="background-color:#ededed;font-family:courier new;color:#666666;font-size:11px;"&gt;&amp;quot;Categories.Description&amp;quot;&lt;/span&gt;) &lt;span style="background-color:white;font-family:courier new;color:red;font-size:11px;"&gt;%&lt;/span&gt;&amp;gt;&amp;#39;&amp;gt;
            &amp;lt;/asp:Label&amp;gt;
        &amp;lt;/ItemTemplate&amp;gt;
    &amp;lt;/asp:TemplateField&amp;gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gflores/gridconcategoria_5F00_557197F9.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="gridconcategoria" border="0" alt="gridconcategoria" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gflores/gridconcategoria_5F00_thumb_5F00_549BC2C0.jpg" width="544" height="257" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Por supuesto que en lugar de esto pudiéramos usar Vistas desde el servidor SQL Server con todos los campos que ocupemos, pero esta sería una de las formas de resolver como mostrar los campos en tablas mediante llaves foráneas usando código de ADO.NET Entity Framework.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1691629" width="1" height="1"&gt;</content><author><name>gflores</name><uri>http://msmvps.com/members/gflores/default.aspx</uri></author><category term="c#" scheme="http://msmvps.com/blogs/gflores/archive/tags/c_2300_/default.aspx" /><category term="nivel:100" scheme="http://msmvps.com/blogs/gflores/archive/tags/nivel_3A00_100/default.aspx" /><category term="howto" scheme="http://msmvps.com/blogs/gflores/archive/tags/howto/default.aspx" /><category term="asp.net" scheme="http://msmvps.com/blogs/gflores/archive/tags/asp.net/default.aspx" /></entry><entry><title>Formato de fecha en Gridview</title><link rel="alternate" type="text/html" href="/blogs/gflores/archive/2009/04/03/formato-de-fecha-en-gridview.aspx" /><id>/blogs/gflores/archive/2009/04/03/formato-de-fecha-en-gridview.aspx</id><published>2009-04-03T22:01:00Z</published><updated>2009-04-03T22:01:00Z</updated><content type="html">&lt;p&gt;No est&amp;aacute; de m&amp;aacute;s recordar que cuando tienes un GridView con un campo tipo fecha, puedes definir el formato de la cadena a lo que t&amp;uacute; gustes, en lugar de los valores por default de fecha completa:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gflores/fechafull_5F00_3DA5FC98.jpg"&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;img height="170" width="168" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gflores/fechafull_5F00_thumb_5F00_2D99BE92.jpg" alt="fechafull" border="0" title="fechafull" style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Para definir el formato de salida de la cadena en campos ligados, es sencillo, usando la propiedad DataFormatString:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;&amp;lt;asp:BoundField DataField=&lt;span style="background-color:#ededed;font-family:courier new;color:#666666;font-size:11px;"&gt;&amp;quot;Fecha&amp;quot;&lt;/span&gt; DataFormatString=&lt;span style="background-color:#ededed;font-family:courier new;color:#666666;font-size:11px;"&gt;&amp;quot;{0:d}&amp;quot;&lt;/span&gt; &lt;span style="background-color:white;font-family:courier new;color:#ff0000;font-size:11px;"&gt;/&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Pero &amp;iquest;qu&amp;eacute; pasa si tenemos TemplateFields, sencillo, usando la misma funci&amp;oacute;n &lt;strong&gt;Bind&lt;/strong&gt; donde especificamos en el enlace al campo de datos para agregarle el formato que necesitamos:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;&amp;lt;asp:TemplateField HeaderText=&lt;span style="background-color:#ededed;font-family:courier new;color:#666666;font-size:11px;"&gt;&amp;quot;Fecha&amp;quot;&lt;/span&gt;&amp;gt;
  &amp;lt;EditItemTemplate&amp;gt;
    &amp;lt;asp:TextBox ID=&lt;span style="background-color:#ededed;font-family:courier new;color:#666666;font-size:11px;"&gt;&amp;quot;TextBox1&amp;quot;&lt;/span&gt; runat=&lt;span style="background-color:#ededed;font-family:courier new;color:#666666;font-size:11px;"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;             Text=&amp;#39;&amp;lt;%# Bind(&lt;span style="background-color:#ededed;font-family:courier new;color:#666666;font-size:11px;"&gt;&amp;quot;Fecha&amp;quot;&lt;/span&gt;,&lt;span style="background-color:#ededed;font-family:courier new;color:#666666;font-size:11px;"&gt;&amp;quot;{0:d}&amp;quot;&lt;/span&gt;) &lt;span style="background-color:white;font-family:courier new;color:#ff0000;font-size:11px;"&gt;%&lt;/span&gt;&amp;gt;&amp;#39;&amp;gt;&lt;/pre&gt;
&lt;pre&gt;    &amp;lt;/asp:TextBox&amp;gt;
  &amp;lt;/EditItemTemplate&amp;gt;
  &amp;lt;ItemTemplate&amp;gt;
    &amp;lt;asp:Label ID=&lt;span style="background-color:#ededed;font-family:courier new;color:#666666;font-size:11px;"&gt;&amp;quot;Label1&amp;quot;&lt;/span&gt; runat=&lt;span style="background-color:#ededed;font-family:courier new;color:#666666;font-size:11px;"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;              Text=&amp;#39;&amp;lt;%# Bind(&lt;span style="background-color:#ededed;font-family:courier new;color:#666666;font-size:11px;"&gt;&amp;quot;Fecha&amp;quot;&lt;/span&gt;,&lt;span style="background-color:#ededed;font-family:courier new;color:#666666;font-size:11px;"&gt;&amp;quot;{0:d}&amp;quot;&lt;/span&gt;) &lt;span style="background-color:white;font-family:courier new;color:#ff0000;font-size:11px;"&gt;%&lt;/span&gt;&amp;gt;&amp;#39;&amp;gt;&lt;/pre&gt;
&lt;pre&gt;     &amp;lt;/asp:Label&amp;gt;
  &amp;lt;/ItemTemplate&amp;gt;
&amp;lt;/asp:TemplateField&amp;gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;De esta manera podemos mostrar a nuestra conveniencia el formato de los datos que mostramos en un gridview:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gflores/fecha_5F00_089BFE19.jpg"&gt;&lt;img height="161" width="85" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gflores/fecha_5F00_thumb_5F00_1602111F.jpg" alt="fecha" border="0" title="fecha" style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1684484" width="1" height="1"&gt;</content><author><name>gflores</name><uri>http://msmvps.com/members/gflores/default.aspx</uri></author><category term="nivel:100" scheme="http://msmvps.com/blogs/gflores/archive/tags/nivel_3A00_100/default.aspx" /><category term="asp.net" scheme="http://msmvps.com/blogs/gflores/archive/tags/asp.net/default.aspx" /></entry><entry><title>Algunas funciones Javascript útiles para ASP.NET (en C#)</title><link rel="alternate" type="text/html" href="/blogs/gflores/archive/2009/03/05/algunas-funciones-javascript-250-tiles-para-asp-net-en-c.aspx" /><id>/blogs/gflores/archive/2009/03/05/algunas-funciones-javascript-250-tiles-para-asp-net-en-c.aspx</id><published>2009-03-06T00:28:00Z</published><updated>2009-03-06T00:28:00Z</updated><content type="html">&lt;p&gt;Nunca est&amp;aacute; de m&amp;aacute;s conocer algunas funciones &amp;uacute;tiles para hacer m&amp;aacute;s efectiva la programaci&amp;oacute;n web en ASP.NET, entre los que uso bastante son:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ventana de Confirmaci&amp;oacute;n (Messagebox del lado del cliente)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Muy &amp;uacute;til para pedirle confirmaci&amp;oacute;n al usuario cuando se va a hacer alg&amp;uacute;n proceso del cual se puede arrepentir, por ejemplo, pedirle confirmaci&amp;oacute;n para borrar alg&amp;uacute;n registro. En el bot&amp;oacute;n donde se va a agregar la l&amp;oacute;gica para hacerlo, se le agrega el detalle para abrir una ventana y pedir confirmaci&amp;oacute;n. En el evento Load de la p&amp;aacute;gina es un buen lugar para hacerlo:&lt;/p&gt;
&lt;pre&gt;    &lt;span style="font-size:11px;background-color:white;font-family:Courier New;color:blue;"&gt;protected&lt;/span&gt; &lt;span style="font-size:11px;background-color:white;font-family:Courier New;color:blue;"&gt;void&lt;/span&gt; Page_Load(object sender, EventArgs e)&lt;br /&gt;    {&lt;br /&gt;         btnEliminar.Attributes.Add(&lt;span style="font-size:11px;background-color:#ededed;font-family:Courier New;color:#666666;"&gt;&amp;quot;onclick&amp;quot;&lt;/span&gt;, &lt;span style="font-size:11px;background-color:#ededed;font-family:Courier New;color:#666666;"&gt;&lt;br /&gt;         &amp;quot;return confirm(&amp;#39;&amp;iquest;Eliminar registro?&amp;#39;);&amp;quot;&lt;/span&gt;);&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;Si el usuario presiona Ok, se ejecutar&amp;aacute; el c&amp;oacute;digo para borrar el registro, si no, es como si nunca hubiera tocado el bot&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Mostrar una ventana con tama&amp;ntilde;o determinado&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;A veces necesitamos mostrar una ventana extra independiente del &amp;aacute;rea de trabajo del usuario para informaci&amp;oacute;n, alg&amp;uacute;n proceso peque&amp;ntilde;o o algo que para demostrar atenci&amp;oacute;n no puedes abrir en un nuevo tab o en otra ventana del navegador. De esta forma incluso podemos dimensionar la ventana emergente con el tama&amp;ntilde;o adecuado para nuestros fines.&lt;/p&gt;
&lt;pre&gt;    &lt;span style="font-size:11px;background-color:white;font-family:Courier New;color:blue;"&gt;protected&lt;/span&gt; &lt;span style="font-size:11px;background-color:white;font-family:Courier New;color:blue;"&gt;void&lt;/span&gt; Page_Load(object sender, EventArgs e)&lt;br /&gt;    {&lt;br /&gt;        btnNueva.Attributes.Add(&lt;span style="font-size:11px;background-color:#ededed;font-family:Courier New;color:#666666;"&gt;&amp;quot;OnClick&amp;quot;&lt;/span&gt;, &lt;span style="font-size:11px;background-color:#ededed;font-family:Courier New;color:#666666;"&gt;&lt;br /&gt;         &amp;quot;window.open(&amp;#39;Nueva.aspx&amp;#39;,null,&amp;#39;height=220,width=480&amp;#39;);&amp;quot;&lt;/span&gt;);&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;A tomar en cuenta es que el usuario puede tener bloqueadas las ventanas emergentes, as&amp;iacute; que una buena idea es mostrar en alg&amp;uacute;n lado de la aplicaci&amp;oacute;n que desactive para tu sitio este bloqueo.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Cerrar una ventana&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Para casos como el anterior donde despu&amp;eacute;s de abrir una ventana donde se espera generar trabajo pero no se puede confiar o resultar&amp;iacute;a muy engorroso para el usuario cerrar manualmente la ventana, conviene usar este m&amp;eacute;todo. En el ejemplo est&amp;aacute; en el evento Click de un bot&amp;oacute;n pero bien puede figurar despu&amp;eacute;s de terminado alguna funci&amp;oacute;n.&lt;/p&gt;
&lt;pre&gt;    &lt;span style="font-size:11px;background-color:white;font-family:Courier New;color:blue;"&gt;protected&lt;/span&gt; &lt;span style="font-size:11px;background-color:white;font-family:Courier New;color:blue;"&gt;void&lt;/span&gt; btnCerrar_Click(object sender, EventArgs e)&lt;br /&gt;    {&lt;br /&gt;        Response.Write(&lt;span style="font-size:11px;background-color:#ededed;font-family:Courier New;color:#666666;"&gt;&amp;quot;&amp;lt;script&amp;gt;window.close();&amp;lt;/script&amp;gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;Estas son algunas funciones donde es necesario hacer trabajo del lado del cliente para determinado comportamiento, por lo mismo no es para todas las situaciones y eventos posibles. Lo &amp;uacute;nico es preguntarse si son cosas que no se pueden hacer del lado del servidor o que ser&amp;iacute;an m&amp;aacute;s r&amp;aacute;pidas y sencillas que se hicieran del lado del cliente.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1675873" width="1" height="1"&gt;</content><author><name>gflores</name><uri>http://msmvps.com/members/gflores/default.aspx</uri></author><category term="c#" scheme="http://msmvps.com/blogs/gflores/archive/tags/c_2300_/default.aspx" /><category term="nivel:100" scheme="http://msmvps.com/blogs/gflores/archive/tags/nivel_3A00_100/default.aspx" /><category term="howto" scheme="http://msmvps.com/blogs/gflores/archive/tags/howto/default.aspx" /><category term="asp.net" scheme="http://msmvps.com/blogs/gflores/archive/tags/asp.net/default.aspx" /></entry><entry><title>El valor de la capacitación en tiempos de crisis</title><link rel="alternate" type="text/html" href="/blogs/gflores/archive/2009/02/09/el-valor-de-la-capacitaci-243-n-en-tiempos-de-crisis.aspx" /><id>/blogs/gflores/archive/2009/02/09/el-valor-de-la-capacitaci-243-n-en-tiempos-de-crisis.aspx</id><published>2009-02-09T20:02:00Z</published><updated>2009-02-09T20:02:00Z</updated><content type="html">&lt;p&gt;En estas fechas donde es com&amp;uacute;n encontrarte o saber de personas que han perdido su empleo es com&amp;uacute;n tambi&amp;eacute;n encontrar que esa misma situaci&amp;oacute;n va para profesionistas del sector TI, desarrolladores de software y directivos que por la raz&amp;oacute;n que sea, no tienen m&amp;aacute;s su empleo. &lt;/p&gt;
&lt;p&gt;Un tip que hab&amp;iacute;a leido en la extinta Visual Basic Programmers Journal (ahora &lt;a href="http://www.visualstudiomagazine.com"&gt;Visual Studio Magazine&lt;/a&gt;) era que uno puede aprovechar este tiempo &amp;quot;entre trabajos&amp;quot; para ayudarte a capacitarte m&amp;aacute;s. Si tienes un buen manejo del presupuesto personal, y tienes apartado un monto para comprar el nuevo XBox o un iPod, creo que es mejor idea invertirlo en tu propia capacitaci&amp;oacute;n. Y me refiero a capacitaciones de calidad y que te dejen un real valor a tu desempe&amp;ntilde;o profesional. Hay instituciones donde se ofrecen incluso talleres m&amp;aacute;s personalizados y acorde a tus necesidades, aunque un poco m&amp;aacute;s caros. Lo importante es encontrar un curso con el nivel adecuado a tus conocimientos que ya tienes, pero con la tecnolog&amp;iacute;a o &amp;aacute;reas que te hace falta especializarte. Me refiero a que si eres un desarrollador web, quiz&amp;aacute;s te convenga ir viendo como ser&amp;iacute;a desarrollo con Silverlight, por ejemplo. Si eres desarrollador Windows, te conviene capacitarte en desarrollo con WPF o para m&amp;oacute;viles. Si ya dominas Windows Server 2003, ve viendo y aplicando lo nuevo con Windows Server 2008. Y similar para otras tecnolog&amp;iacute;as que tal vez requieras en tu posible nuevo empleo como algo de PHP, Flash, herramientas de dise&amp;ntilde;o y otras que nunca est&amp;aacute; de m&amp;aacute;s por lo menos conocer para que no te agarren en blanco si te preguntan. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://microsoftmva.com"&gt;&lt;img width="159" src="http://s18.photobucket.com/albums/b116/gfr20/th_mva.jpg" alt="MVA" height="88" style="float:left;" /&gt;&lt;/a&gt;Ahora, no todo tienes porque pagarlo. Hay muchas maneras de adquirir estos conocimientos en l&amp;iacute;nea con tutoriales, presentaciones, webcasts y ejemplos pr&amp;aacute;cticos de lo que se te ocurra. Si optas por esta opci&amp;oacute;n, te convendr&amp;aacute; seguir un plan estructurado para no perderte en la nube y poder ir viendo como vas desarroll&amp;aacute;ndote y aplicando tus nuevas habilidades. Una de ellas es con &lt;a href="http://www.dce2005.com"&gt;Desarrollador Cinco Estrellas&lt;/a&gt; que te lleva de la mano desde fundamentos que realmente necesitas como Programaci&amp;oacute;n Orientada a Objetos y bases de .NET Framework hasta cosas m&amp;aacute;s especializadas como WCF, WPF y otros. &lt;a href="http://msdn.microsoft.com/en-us/rampup"&gt;Microsoft Rampup&lt;/a&gt; son una serie de cursos autodid&amp;aacute;cticos en ingl&amp;eacute;s de tecnolog&amp;iacute;as espec&amp;iacute;ficas que quiz&amp;aacute;s consideres mejor opci&amp;oacute;n si ya tienes tiempo desarrollando, sobre todo porque tiene una manera de enfocar los tutoriales y presentaciones si ya tienes experiencia en Java o VB6; se trata pues, de nivelarte a las tecnolog&amp;iacute;as actuales. Por &amp;uacute;ltimo &lt;a href="http://microsoftmva.com"&gt;Microsoft Virtual Academy&lt;/a&gt; agrupa y presenta sus capacitaciones en un formato que te permite elegir una &amp;quot;carrera&amp;quot; y conforme avances en la misma tienes acceso a derechos como una credencial de membres&amp;iacute;a, descuentos y m&amp;aacute;s.&lt;/p&gt;
&lt;p&gt;Lo interesante de estos cursos es que son una punta de lanza de lo que puedes hacer con los conocimientos adquiridos, lo importante es experimentar, jugar con lo aprendido y ponerlo en pr&amp;aacute;ctica. Una vez que ya est&amp;eacute;s m&amp;aacute;s familiarizado con ellos ya podr&amp;aacute;s poner con toda seguridad esa nueva habilidad en tu&amp;nbsp;&lt;a href="http://21agenda.blogspot.com/2009/02/curriculum-vitae.html" title="&amp;iquest;C&amp;oacute;mo hacer un buen curriculum?"&gt;curriculum&lt;/a&gt;&amp;nbsp;y no quedar mal para la siguiente entrevista que tengas.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1670780" width="1" height="1"&gt;</content><author><name>gflores</name><uri>http://msmvps.com/members/gflores/default.aspx</uri></author><category term="tecnolog&amp;#237;a" scheme="http://msmvps.com/blogs/gflores/archive/tags/tecnolog_26002300_237_3B00_a/default.aspx" /><category term="opini&amp;#243;n" scheme="http://msmvps.com/blogs/gflores/archive/tags/opini_26002300_243_3B00_n/default.aspx" /></entry><entry><title>BizSpark</title><link rel="alternate" type="text/html" href="/blogs/gflores/archive/2008/11/07/bizspark.aspx" /><id>/blogs/gflores/archive/2008/11/07/bizspark.aspx</id><published>2008-11-07T23:58:00Z</published><updated>2008-11-07T23:58:00Z</updated><content type="html">&lt;p&gt;&lt;img align="right" src="http://s18.photobucket.com/albums/b116/gfr20/th_BS_Sunburst.gif" style="display:inline;margin-left:0px;margin-right:0px;" alt="" /&gt; Este es un excelente programa de Microsoft para t&amp;iacute; que tienes una compa&amp;ntilde;&amp;iacute;a de software con la &lt;em&gt;siguiente gran idea&lt;/em&gt; que cautivar&amp;aacute; el mercado. Se trata de un ofrecimiento de software, soporte y visibilidad a empresas de reciente nacimiento que ayuda a que desarrollen su potencial.&lt;/p&gt;
&lt;p&gt;Entre lo que engloba la oferta encontramos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Visual Studio Team Suite&lt;/li&gt;
&lt;li&gt;MSDN Premium&lt;/li&gt;
&lt;li&gt;Expression Studio 2&lt;/li&gt;
&lt;li&gt;VSTS Team Foundation Server Standard Edition&lt;/li&gt;
&lt;li&gt;Licencias de: 
&lt;ul&gt;
&lt;li&gt;Windows Server&lt;/li&gt;
&lt;li&gt;SQL Server&lt;/li&gt;
&lt;li&gt;BizTAlk Server&lt;/li&gt;
&lt;li&gt;Office Sharepoint Server&lt;/li&gt;
&lt;li&gt;Systems Center&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Soporte, gu&amp;iacute;a y recursos por un Network Partner&lt;/li&gt;
&lt;li&gt;Newsgroups administrados, librer&amp;iacute;a en l&amp;iacute;nea, etc. de MSDN Premium&lt;/li&gt;
&lt;li&gt;Dos incidentes de soporte t&amp;eacute;cnico&lt;/li&gt;
&lt;li&gt;Disponibilidad global en el cat&amp;aacute;logo de Startups de Microsoft&lt;/li&gt;
&lt;li&gt;Posibilidad de figurar como la Empresa BizSpark de la semana en el &lt;a target="_blank" href="http://www.microsoftstartupzone.com/"&gt;Microsoft Startup Zone&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La empresa de desarrollo de software s&amp;oacute;lo debe cumplir las siguientes caracter&amp;iacute;sticas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Que desarrolle un producto de software o servicio que forme parte crucial de su plan de negocios&lt;/li&gt;
&lt;li&gt;Empresa privada&lt;/li&gt;
&lt;li&gt;Con antig&amp;uuml;edad menor a 3 a&amp;ntilde;os&lt;/li&gt;
&lt;li&gt;Ingresos anuales menores a 1 mill&amp;oacute;n de d&amp;oacute;lares&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para enrolarse en el programa, no se requiere ninguna inversi&amp;oacute;n monetaria. Sin embargo, al salir del programa se debe hacer un pago de 100 d&amp;oacute;lares. Despu&amp;eacute;s de hacer m&amp;aacute;s de un mill&amp;oacute;n, esta cantidad ser&amp;aacute; rid&amp;iacute;cula ;)&lt;/p&gt;
&lt;p&gt;As&amp;iacute; que s&amp;oacute;lo falta ingresar al sitio de &lt;a target="_blank" href="http://microsoft.com/bizspark"&gt;BizSpark&lt;/a&gt; y aprovechar este nuevo programa para impulsar nacientes empresas de desarrollo.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1653431" width="1" height="1"&gt;</content><author><name>gflores</name><uri>http://msmvps.com/members/gflores/default.aspx</uri></author><category term="tecnolog&amp;#237;a" scheme="http://msmvps.com/blogs/gflores/archive/tags/tecnolog_26002300_237_3B00_a/default.aspx" /><category term="negocios" scheme="http://msmvps.com/blogs/gflores/archive/tags/negocios/default.aspx" /></entry><entry><title>Windows Azure</title><link rel="alternate" type="text/html" href="/blogs/gflores/archive/2008/10/27/windows-azure.aspx" /><id>/blogs/gflores/archive/2008/10/27/windows-azure.aspx</id><published>2008-10-28T00:41:00Z</published><updated>2008-10-28T00:41:00Z</updated><content type="html">&lt;p&gt;La espera por fin termin&amp;oacute; y &lt;a href="http://microsoft.com/azure" target="_blank"&gt;Windows Azure&lt;/a&gt; vi&amp;oacute; la luz este lunes 27 de octubre de 2008 en el &lt;a href="http://microsoftpdc.com/" target="_blank"&gt;Professional Developers Conference&lt;/a&gt; de Los Angeles. &amp;iquest;Y porqu&amp;eacute; es tan importante? Pues son los servicios de internet que prove&amp;eacute; Microsoft en sus Datacenters (que por ah&amp;iacute; se dice que son visibles desde el espacio exterior &lt;a href="http://www.bbc.co.uk/blogs/technology/2008/10/the_town_in_the_cloud.html" target="_blank"&gt;por lo enormes que son&lt;/a&gt;). Todos ellos basados en un esfuerzo de interoperabilidad y flexibilidad que permitir&amp;aacute;n a tus aplicaciones coexistir en la red en lo denominado Computaci&amp;oacute;n en la Nube (cloud computing) donde se ven m&amp;aacute;s los desarrollos como algo que es aprovechable a trav&amp;eacute;s de la red y no importando los dispositivos que uses para accederlos. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img src="http://i18.photobucket.com/albums/b116/gfr20/servicesPlatform.jpg?t=1225137235" alt="" /&gt; &lt;/p&gt;
&lt;p&gt;Hay bastantes cosas interesantes en la Plataforma de Servicios Azure adem&amp;aacute;s de aquellas que ya eran aprovechables (como Live Services para consumir y explotar la plataforma Windows Live), me refiero a .NET Services con servicios para manejo de Workflows y Bus de servicios y otros, as&amp;iacute; como SQL Services que no es m&amp;aacute;s que SQL Data Services para poder tener todos tus datos en tiempo real para terceros y para el resto de tus aplicaciones.&lt;/p&gt;
&lt;p&gt;Habr&amp;aacute; mucho m&amp;aacute;s que aventurar en aprender sobre Windows Azure, pero una cosa es cierta, los desarrollos de software &lt;b&gt;ya&lt;/b&gt; deben considerar el consumo de su funcionalidad en un &amp;aacute;mbito global y de uso en cualquier dispositivo.&lt;/p&gt;
&lt;p&gt;M&amp;aacute;s info:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://microsoft.com/azure" target="_blank"&gt;Windows Azure&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/jaimesb/archive/2008/10/27/ray-ozzie-keynote-en-el-pdc.aspx"&gt;Opini&amp;oacute;n de Jaime S&amp;aacute;nchez&lt;/a&gt; de Microsoft&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/blogs/haarongonzalez/archive/2008/10/28/1652264.aspx"&gt;Haar&amp;oacute;n Gonz&amp;aacute;lez&lt;/a&gt; tiene algo que decir tambi&amp;eacute;n&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/luisdans/archive/2008/10/29/octubre-29-2008-azure-un-cielo-con-claridad-y-sin-l-mites.aspx"&gt;Preguntas contestadas&lt;/a&gt; sobre Azure de Luis Daniel Soto&lt;/p&gt;
&lt;p&gt;Descargas:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=130232" target="_blank"&gt;Windows Azure SDK&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=128752" target="_blank"&gt;Windows Azure Tools for Microsoft Visual Studio&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=129448" target="_blank"&gt;Microsoft .NET Services SDK &lt;/a&gt;    &lt;br /&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=129449" target="_blank"&gt;Microsoft SQL Data Services SDK&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Bonus:&lt;/p&gt;
&lt;p&gt;.NET tiene un nuevo logo:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://i18.photobucket.com/albums/b116/gfr20/image_3.png" alt="" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1652158" width="1" height="1"&gt;</content><author><name>gflores</name><uri>http://msmvps.com/members/gflores/default.aspx</uri></author><category term=".net" scheme="http://msmvps.com/blogs/gflores/archive/tags/.net/default.aspx" /><category term="tecnolog&amp;#237;a" scheme="http://msmvps.com/blogs/gflores/archive/tags/tecnolog_26002300_237_3B00_a/default.aspx" /><category term="opini&amp;#243;n" scheme="http://msmvps.com/blogs/gflores/archive/tags/opini_26002300_243_3B00_n/default.aspx" /></entry><entry><title>Verifica tus nulos</title><link rel="alternate" type="text/html" href="/blogs/gflores/archive/2008/09/24/verifica-tus-nulos.aspx" /><id>/blogs/gflores/archive/2008/09/24/verifica-tus-nulos.aspx</id><published>2008-09-24T14:29:00Z</published><updated>2008-09-24T14:29:00Z</updated><content type="html">&lt;p&gt;Es muy sencillo verificar si una variable tiene referencia a null:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;&lt;span style="font-size:11px;background-color:white;font-family:Courier New;color:blue;"&gt;if&lt;/span&gt; (dFecha == &lt;span style="font-size:11px;background-color:white;font-family:Courier New;color:blue;"&gt;null&lt;/span&gt;) &lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Pero &amp;iquest;y si los datos que quieres evaluar vienen de una base de datos? Cuando se trata de un campo de tipo fecha no es suficiente evaluarlo contra null, y asignarlo a una variable DateTime te requiere hacer un cast para que te permita usarla, pero si est&amp;aacute; en null, no te permite hacer esta asignaci&amp;oacute;n:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;&lt;span style="font-size:11px;background-color:white;font-family:Courier New;color:green;"&gt;//Si es null el campo, no permite hacer este cast
&lt;/span&gt;dFecha &lt;span style="font-size:11px;background-color:white;font-family:Courier New;color:red;"&gt;=&lt;/span&gt; (DateTime)miDataReader[&lt;span style="font-size:11px;background-color:#ededed;font-family:Courier New;color:#666666;"&gt;&amp;quot;Fecha&amp;quot;&lt;/span&gt;];&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;La soluci&amp;oacute;n est&amp;aacute; en evaluarla contra DBNull, que contiene precisamente el valor null a nivel de base de datos:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;&lt;span style="font-size:11px;background-color:white;font-family:Courier New;color:blue;"&gt;if&lt;/span&gt; ( miDataReader[&lt;span style="font-size:11px;background-color:#ededed;font-family:Courier New;color:#666666;"&gt;&amp;quot;Fecha&amp;quot;&lt;/span&gt;] == DBNull.Value )&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Evaluando de esta forma nuestros campos de la base de datos, podremos tener mejor c&amp;oacute;digo y m&amp;aacute;s probado.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1648777" width="1" height="1"&gt;</content><author><name>gflores</name><uri>http://msmvps.com/members/gflores/default.aspx</uri></author><category term="c#" scheme="http://msmvps.com/blogs/gflores/archive/tags/c_2300_/default.aspx" /><category term="nivel:100" scheme="http://msmvps.com/blogs/gflores/archive/tags/nivel_3A00_100/default.aspx" /><category term="howto" scheme="http://msmvps.com/blogs/gflores/archive/tags/howto/default.aspx" /></entry><entry><title>Software para la gente</title><link rel="alternate" type="text/html" href="/blogs/gflores/archive/2008/09/13/software-para-la-gente.aspx" /><id>/blogs/gflores/archive/2008/09/13/software-para-la-gente.aspx</id><published>2008-09-13T08:47:00Z</published><updated>2008-09-13T08:47:00Z</updated><content type="html">&lt;p&gt;Ahora que trabajo en el sector p&amp;uacute;blico me toca toparme con muchas situaciones en donde definitivamente hay muchas cosas que mejorar. Esto puede pasar en cualquier lado pero d&amp;eacute;cadas de no poner en su lugar las Tecnolog&amp;iacute;as de Informaci&amp;oacute;n dan pie a que quienes lo iniciaron, quiz&amp;aacute;s no tuvieron en mente m&amp;aacute;s que poder implementar lo mejor posible una soluci&amp;oacute;n a alg&amp;uacute;n problema lo m&amp;aacute;s r&amp;aacute;pido posible sin importar mucho la usabilidad o calidad.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.flickr.com/photos/motti/298650667/"&gt;&lt;img src="http://farm1.static.flickr.com/108/298650667_b60d192026_m.jpg" align="left" height="155" width="103" alt="" /&gt;&lt;/a&gt;Y es que tratando de simplemente cumplir con los requerimientos exclusivamente provoca dejar de lado muchos aspectos importantes en el desarrollo de software. A veces uno no se da cuenta que dar un click primero y despu&amp;eacute;s tener que capturar un dato para luego con el mouse (&amp;iexcl;y s&amp;oacute;lo con el mouse!) poder seleccionar una opci&amp;oacute;n de un combobox y por fin poder presionar el bendito bot&amp;oacute;n de imprimir se puede mejorar de muchas formas. En este ejemplo por supuesto est&amp;aacute; el de agregar atajos de teclado (poniendo en los textos de los botones generalmente &amp;amp; antes de la letra que queramos usar en conjunto con ALT para accionarlo), agrupar en funciones comunes tareas repetitivas, no esconder en men&amp;uacute;es funciones cr&amp;iacute;ticas entre muchas otras. &lt;/p&gt;
&lt;p&gt;Lo importante a darse cuenta es que cualquier mejora en los procesos dentro del sistema ayuda a las personas que lo usan a hacer su trabajo mejor. De lo que se trata es de poner en sus manos las herramientas con las que logren cumplir sus labores y atender sus asuntos, y mientras m&amp;aacute;s r&amp;aacute;pido y eficiente sean, ellos podr&amp;aacute;n tener la satisfacci&amp;oacute;n de un trabajo bien hecho y &amp;iquest;porqu&amp;eacute; no? hasta ser reconocidos como aquellos que tuvieron mejor productividad que nadie. Tiene que ver mucho el nivel de aceptaci&amp;oacute;n y familiaridad con la tecnolog&amp;iacute;a del usuario, pero vuelvo a lo mismo, para muchos de ellos, el sistema, la computadora, la p&amp;aacute;gina web con la que trabaja a diario no es m&amp;aacute;s importante que su engrapadora, tel&amp;eacute;fono o calculadora de escritorio, son s&amp;oacute;lo sus herramientas de trabajo.&lt;/p&gt;
&lt;p&gt;Algo que ayuda mucho es ver directamente al usuario usar el sistema. En la recopilaci&amp;oacute;n de requerimientos, en la planeaci&amp;oacute;n e implementaci&amp;oacute;n de t&amp;eacute;cnicas y pr&amp;aacute;cticas de usabilidad siempre se tratan de poner lo mejor al alcance del usuario. Pero verlo en persona y notar como est&amp;aacute; usando el sistema, ver como aprovecha o no los atajos de teclado, o que tal vez esa caracter&amp;iacute;stica de usabilidad en la que se invirti&amp;oacute; mucho tiempo quiz&amp;aacute;s le parece m&amp;aacute;s tedioso que la soluci&amp;oacute;n m&amp;aacute;s simple, abre mucho los ojos. Esto va m&amp;aacute;s all&amp;aacute; que hacer caso a lo que su gerente ide&amp;oacute; pues quien usar&amp;aacute; el sistema todos los d&amp;iacute;as no ser&amp;aacute; &amp;eacute;l. Conversar, hacer caso a las observaciones del usuario y que vea el punto de vista del equipo de desarrollo siempre ser&amp;aacute; ben&amp;eacute;fico para su productividad, tu satisfacci&amp;oacute;n como quien le brind&amp;oacute; las mejoras y una relaci&amp;oacute;n de provecho a futuro.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://i18.photobucket.com/albums/b116/gfr20/malware.jpg" target="_blank"&gt;&lt;img src="http://s18.photobucket.com/albums/b116/gfr20/th_malware.jpg" alt="Photobucket" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En esta imagen se puede ver como unas simples mejoras de usabilidad hacen m&amp;aacute;s efectiva la interacci&amp;oacute;n del usuario y m&amp;aacute;s entendible para &amp;eacute;l lo que se est&amp;aacute; haciendo. Caso muy diferente al estado original de la aplicaci&amp;oacute;n que se puede ver a la izquierda. Esta imagen se puede ver m&amp;aacute;s a detalle en el &lt;a href="http://www.microsoft.com/mexico/innovationtour08"&gt;Innovation Tour 2008&lt;/a&gt; que ya est&amp;aacute; por todo M&amp;eacute;xico en marcha. Este tipo de mejoras simples aportan un gran valor a las aplicaciones que creamos y tendremos m&amp;aacute;s clientes satisfechos. Si hacemos nuestro trabajo con esta cultura de servicio sin perder de vista que nuestro software lo usar&amp;aacute;n personas de carne y hueso que s&amp;oacute;lo quieren hacer bien su trabajo, tambi&amp;eacute;n nosotros estaremos mejor.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1647676" width="1" height="1"&gt;</content><author><name>gflores</name><uri>http://msmvps.com/members/gflores/default.aspx</uri></author><category term="tecnolog&amp;#237;a" scheme="http://msmvps.com/blogs/gflores/archive/tags/tecnolog_26002300_237_3B00_a/default.aspx" /><category term="opini&amp;#243;n" scheme="http://msmvps.com/blogs/gflores/archive/tags/opini_26002300_243_3B00_n/default.aspx" /></entry><entry><title>Parámetros en aplicaciones</title><link rel="alternate" type="text/html" href="/blogs/gflores/archive/2008/07/17/par-225-metros-en-aplicaciones.aspx" /><id>/blogs/gflores/archive/2008/07/17/par-225-metros-en-aplicaciones.aspx</id><published>2008-07-17T20:49:00Z</published><updated>2008-07-17T20:49:00Z</updated><content type="html">&lt;p&gt;Muchas veces necesitas llamar o recuperar los par&amp;aacute;metros en la aplicaci&amp;oacute;n en C# que est&amp;eacute;s desarrollando. Lo m&amp;aacute;s sencillo es usar el Environment.GetCommandLineArgs() que nos regresa un arreglo con los par&amp;aacute;metros que est&amp;aacute;n mand&amp;aacute;ndonos.&lt;/p&gt;
&lt;p&gt;Lo que es importante tomar en cuenta es que si se est&amp;aacute; enviando una cadena que contiene espacios, por ello mismo nos coloca cada par&amp;aacute;metro en distinta posici&amp;oacute;n del arreglo y s&amp;oacute;lo es suficiente armando de nuevo ese argumento:&lt;/p&gt;
&lt;p&gt;static void Main()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; string[] args =&amp;nbsp; Environment.GetCommandLineArgs();&lt;br /&gt;&amp;nbsp;&amp;nbsp; if (args.GetUpperBound()&amp;nbsp; &amp;gt; 1)&lt;br /&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string sArg = args[1] + &amp;quot; &amp;quot; + args[2] + &amp;quot; &amp;quot; + args[3] + &amp;quot; &amp;quot; + args[4]; &lt;br /&gt;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;}&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1641254" width="1" height="1"&gt;</content><author><name>gflores</name><uri>http://msmvps.com/members/gflores/default.aspx</uri></author><category term="c#" scheme="http://msmvps.com/blogs/gflores/archive/tags/c_2300_/default.aspx" /><category term="nivel:100" scheme="http://msmvps.com/blogs/gflores/archive/tags/nivel_3A00_100/default.aspx" /><category term="howto" scheme="http://msmvps.com/blogs/gflores/archive/tags/howto/default.aspx" /></entry><entry><title>MVP Global Summit 2008</title><link rel="alternate" type="text/html" href="/blogs/gflores/archive/2008/04/23/mvp-global-summit-2008.aspx" /><id>/blogs/gflores/archive/2008/04/23/mvp-global-summit-2008.aspx</id><published>2008-04-23T19:35:00Z</published><updated>2008-04-23T19:35:00Z</updated><content type="html">&lt;p&gt;Como siempre es un placer compartir experiencias e ideas con compañeros &lt;a href="http://blogs.msdn.com/mvplead/archive/2005/10/31/que-es-un-mvp.aspx"&gt;MVP&lt;/a&gt;s y que mejor que sean de otras latitudes donde a pesar de la distancia son notorias las similitudes en cuanto a ánimos y deseos de hacer las cosas. &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.flickr.com/photos/gabofr/2414803253/" title="Japan and Mexico MVPs por gabofr, en Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3209/2414803253_07597b8cea_m.jpg" alt="Japan and Mexico MVPs" align="left" height="160" width="240" /&gt;&lt;/a&gt;El primer día estuvo estupendo, el formato de las conversaciones Open Space permitían precisamente eso, aportar e intercambiar ideas con MVPs de todo el mundo en las tecnologías de las que somos apasionados. En este mismo formato tuvimos una reunión donde por fin alguien más hablaba español y pudimos comentar de lo que en Hispanoamérica acontece y como hacemos frente a los retos en nuestras comunidades.&lt;/p&gt; &lt;p&gt; Los siguientes días resultaron muy provechosas en el sentido de poder intercambiar impresiones con los Product Managers de los productos que usamos a diario. Estas sesiones se daban en el Microsoft Corporate Campus y resultaba bastante curioso oir a otros MVPs realmente quejarse de cierta característica o denunciando la falta de respuesta de Microsoft en otras áreas, y es que el espacio daba para ello y más. &lt;/p&gt; &lt;p&gt;El último día fue una conversación donde MVPs formulaban preguntas a Ray Ozzie y a Steve Ballmer, una oportunidad única. En la que por supuesto se habló de Open Source, Yahoo! y la visión de Microsoft. Steve Ballmer es todo un personaje, sin pelos en la lengua mencionaba y reconocía los aciertos y fallos de la compañía y se dejó ver muy comprometido con las demandas y peticiones de los MVPs.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.flickr.com/photos/gabofr/2421048211/" title="Steve Ballmer por gabofr, en Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3038/2421048211_bcb7fd400b_m.jpg" alt="Steve Ballmer" height="160" width="240" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Y eso fue el &lt;a href="http://www.flickr.com/photos/gabofr/sets/72157604656181720/"&gt;MVP Global Summit 2008&lt;/a&gt;, esperamos vernos el próximo año.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1601609" width="1" height="1"&gt;</content><author><name>gflores</name><uri>http://msmvps.com/members/gflores/default.aspx</uri></author><category term="eventos" scheme="http://msmvps.com/blogs/gflores/archive/tags/eventos/default.aspx" /><category term="mvp global summit" scheme="http://msmvps.com/blogs/gflores/archive/tags/mvp+global+summit/default.aspx" /></entry><entry><title>El anuncio sobre interoperabilidad de Microsoft</title><link rel="alternate" type="text/html" href="/blogs/gflores/archive/2008/02/22/el-anuncio-sobre-interoperabilidad-de-microsoft.aspx" /><id>/blogs/gflores/archive/2008/02/22/el-anuncio-sobre-interoperabilidad-de-microsoft.aspx</id><published>2008-02-23T02:23:26Z</published><updated>2008-02-23T02:23:26Z</updated><content type="html">&lt;p&gt;Quería darme el tiempo de digerir la noticia del jueves 21 de febrero de 2008 por la mañana, donde Steve Ballmer, CEO de Microsoft y Ray Ozzie, Chief Software Architect, anunciaron un nuevo enfoque al que Microsoft apuesta a partir de ese día, la &lt;strong&gt;interoperabilidad&lt;/strong&gt;. Esto es dar poder a los usuarios de sus productos de alto volumen (como lo llaman ellos, a Windows Vista, .NET Framework, Windows Server 2008, SQL Server 2008, Office 2007, Exchange 2007 y Sharepoint Server 2007) de poder usar y manipular a su antojo la información contenida en ellos.&lt;/p&gt; &lt;p&gt;Esta iniciativa de interoperabilidad se describe en estos principios:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;I: Conexiones abiertas en productos de alto volumen&lt;/strong&gt; Microsoft se asegurará de mantener protocolos y APIs abiertos de sus productos ¿cómo se asegurarán de ello?&lt;br /&gt;Los protocolos y APIs usados en los productos mencionados serán ofrecidos de manera abierta a la comunidad de desarrolladres publicando su documentación para beneficio de todos.  &lt;p&gt;&lt;strong&gt;II: Soporte a Estándares&lt;/strong&gt;&lt;br /&gt;Microsoft soportará los estándares asegurando así interoperabilidad. Esto se logra participando en los órganos rectores de estándares contribuyendo en el desarrollo de los mismos y mejorando los existentes. Se guiará en su base de usuarios y la comunidad actual para priorizar estándares a soportar en cada liberación. Publicando la manera en como se soportan estos estándares de la industria, es como se pretende tener mayor compatibilidad en sus productos. En los casos donde algún estandar implementado donde se haya requerido hacer algún tipo de extensión, Microsoft publicará las especificaciones de estas extensiones y en su momento las ingresará a las organizaciones de estándares para su consideración. &lt;p&gt;&lt;strong&gt;III: Portabilidad de datos&lt;/strong&gt;&lt;br /&gt;Los usuarios de los productos de software que almacenan sus datos deben poder acceder a esos datos en la forma que se le permita su uso en otros productos de software. Microsoft diseñará sus productos de alto voluemen para propiciar esta portabilidad de datos y proveerá la documentación necesaria. Se logrará esto usando formatos estandar de acuerdo al principio II, propiciando formatos abiertos (ya sea admitidos por órganos de revisión de estándares o liberados publicamente para su implementación), proveerá la importación y exportación de datos, y permitará a los usuarios la selección de los formatos por defecto a utilizar en sus productos. Esto último no sólo implica poder guardar en Office 2007 en formato 2003 por default, sino también permitir la inclusión de otros formatos a manera de plugins. Para ello se hará valer de la Iniciativa de Interoperabilidad de Documento para informar y entrenar la implementación de estos formatos &lt;/p&gt; &lt;p&gt;&lt;strong&gt;IV: Compromiso abierto&lt;/strong&gt;&lt;br /&gt;Microsoft incrementará sus comunicaciones con las comunidades de clientes, T.I. y de código abierto. Esto se logrará con foros de interoperabilidad donde se fomenten el diálogo y discusión en los temas de importancia para usuarios y compañías de tecnologías de información y con la Iniciativa de Interoperabilidad con Código Abierto donde se busca el acercamiento con la comunidad Open Source para incrementar interoperabilidad y facilitar oportunidades de participación en desarrollo cooperativo.&lt;/p&gt; &lt;p&gt;Cabe destacar que en los casos en los que los protocolos, formatos o especificaciones que sean patentes de Microsoft, se indicará apropiadamente junto con sus términos y tarifas de uso. A notar es que Microsoft se compromete explícitamente a no demandar a desarrolladores de código abierto por desarollos o implementaciones no comerciales de estos protocolos o formatos abiertos y de hecho &lt;strong&gt;no implicará un pago&lt;/strong&gt; de regalías o de algún otro tipo. &lt;p&gt;No, no es Open Source, es abrir los formatos y protocolos de sus productos para consumo de terceros. A final de cuentas, como alguna vez lo discutió &lt;a href="http://mario-chavez.blogspot.com"&gt;Mario Alberto Chávez&lt;/a&gt;, la información que uno alimenta a los sistemas es propiedad de los usuarios, no del creador del sistema. Lo veo más como una oportunidad más de entrar al juego de una creciente demanda por incluir plataformas de trabajo más abiertas. Es una delicia para los desarrolladores poder saber exactamente los protocolos y formatos utilizados en los llamados productos de alto volumen y poder consumir sus datos y explotarlos. Esto a final de cuentas es un beneficio para todos, para tí como desarrollador de soluciones, para tus clientes que buscan mayor integración en sus aplicaciones y para sus otros desarrolladores que quieren aprovechar esta interoperabilidad con sus datos. &lt;p&gt;&lt;a title="Microsoft a apoyar la interoperabilidad de sus productos" href="http://mario-chavez.blogspot.com/2008/02/microsoft-apoyar-la-interoperabilidad.html"&gt;Mario Alberto Chávez adivina que podría pasar en la comunidad Open Source&lt;/a&gt; &lt;p&gt;&lt;a title="Microsoft anuncia interoperabilidad y apertura" href="http://www.error500.net/microsfot-interoperabilidad-apertura"&gt;Antonio Ortiz tiene un punto de vista interesante sobre las razones&lt;/a&gt; &lt;p&gt;&lt;a title="La apertura de Microsoft" href="http://www.uberbin.net/archivos/estrategias/la-apertura-de-microsoft.php"&gt;Mariano Amartino cree que la culpa la tiene Ray Ozzie&lt;/a&gt; &lt;p&gt;&lt;a href="http://www.enriquedans.com/2008/02/%c2%a1%c2%a1el-infierno-se-congela-ii-parte.html"&gt;Enrique Dans piensa que el infierno se ha congelado&lt;/a&gt; &lt;p&gt;&lt;a title="Microsoft makes strategic changes in technology and business practices to expand interoperability" href="http://www.microsoft.com/presspass/press/2008/feb08/02-21ExpandInteroperabilityPR.mspx"&gt;El anuncio de prensa con el anuncio&lt;/a&gt; (en inglés) &lt;p&gt;&lt;a title="Microsoft Interoperability" href="http://www.microsoft.com/interop/"&gt;El sitio oficial de interoperabilidad de Microsoft&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1522045" width="1" height="1"&gt;</content><author><name>gflores</name><uri>http://msmvps.com/members/gflores/default.aspx</uri></author><category term="tecnolog&amp;#237;a" scheme="http://msmvps.com/blogs/gflores/archive/tags/tecnolog_26002300_237_3B00_a/default.aspx" /><category term="opini&amp;#243;n" scheme="http://msmvps.com/blogs/gflores/archive/tags/opini_26002300_243_3B00_n/default.aspx" /></entry><entry><title>Visual Studio Express 2008 liberado</title><link rel="alternate" type="text/html" href="/blogs/gflores/archive/2007/11/19/visual-studio-express-2008-liberado.aspx" /><id>/blogs/gflores/archive/2007/11/19/visual-studio-express-2008-liberado.aspx</id><published>2007-11-19T20:39:00Z</published><updated>2007-11-19T20:39:00Z</updated><content type="html">&lt;p&gt;Ya están disponibles las &lt;a href="http://www.microsoft.com/express/product/default.aspx"&gt;versiones Express&lt;/a&gt; de &lt;a href="http://go.microsoft.com/?linkid=7653518"&gt;Visual C#&lt;/a&gt;, &lt;a href="http://go.microsoft.com/?linkid=7653517"&gt;Visual Basic .NET&lt;/a&gt;, &lt;a href="http://go.microsoft.com/?linkid=7653520"&gt;Visual C++&lt;/a&gt; y &lt;a href="http://go.microsoft.com/?linkid=7653519"&gt;Visual WebDeveloper 2008&lt;/a&gt;. Y tiene de interesante bastantes mejoras que puedes encontrar en Visual Studio 2008 (&lt;a href="http://mario-chavez.blogspot.com/2007/11/visual-studio-2008-y-net-framework-35.html"&gt;que también liberó su RTM&lt;/a&gt;), como son:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Desarrollo de aplicaciones con &lt;a href="http://wpf.netfx3.com/"&gt;WPF&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Aplicaciones con SQL Server Compact Edition&lt;/li&gt; &lt;li&gt;LINQ integrado (también con intellisense)&lt;/li&gt; &lt;li&gt;Mayor integración con &lt;a href="http://popfly.ms"&gt;Popfly&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Toolkit de desarrollo &lt;a href="http://www.microsoft.com/express/samples/c4fp2p/default.aspx"&gt;P2P para Vista&lt;/a&gt;&lt;/li&gt;&lt;a href="http://www.microsoft.com/express/samples/C4FP2P/"&gt;&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/express/samples/facebook/default.aspx"&gt;Developer kit&lt;/a&gt; para &lt;a href="http://www.facebook.com"&gt;Facebook&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;img src="http://www.microsoft.com/express/images/screenshots/VCS_Data_small.jpg" alt="" /&gt; &lt;/p&gt; &lt;p&gt;Y mucho más. &lt;a href="http://www.microsoft.com/express/product/default.aspx"&gt;Descarga&lt;/a&gt; la versión que más te guste, &lt;a href="http://msdn2.microsoft.com/en-us/beginner/default.aspx"&gt;aprende lo nuevo&lt;/a&gt; y empieza a crear tus mejores aplicaciones.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1336559" width="1" height="1"&gt;</content><author><name>gflores</name><uri>http://msmvps.com/members/gflores/default.aspx</uri></author><category term=".net" scheme="http://msmvps.com/blogs/gflores/archive/tags/.net/default.aspx" /><category term="c#" scheme="http://msmvps.com/blogs/gflores/archive/tags/c_2300_/default.aspx" /><category term="nivel:100" scheme="http://msmvps.com/blogs/gflores/archive/tags/nivel_3A00_100/default.aspx" /><category term="wpf" scheme="http://msmvps.com/blogs/gflores/archive/tags/wpf/default.aspx" /><category term="vb.net" scheme="http://msmvps.com/blogs/gflores/archive/tags/vb.net/default.aspx" /></entry><entry><title>Tour Tecnológico 2007</title><link rel="alternate" type="text/html" href="/blogs/gflores/archive/2007/11/16/tour-tecnol-243-gico-2007.aspx" /><id>/blogs/gflores/archive/2007/11/16/tour-tecnol-243-gico-2007.aspx</id><published>2007-11-16T15:35:00Z</published><updated>2007-11-16T15:35:00Z</updated><content type="html">&lt;p&gt;Con un buen sabor de boca concluyó la participación de la &lt;a href="http://www.tjnet.org"&gt;Comunidad .NET Tijuana&lt;/a&gt; en el &lt;a href="http://www.tjnet.org/Eventos/1443.aspx"&gt;Tour Tecnológico 2007&lt;/a&gt; celebrado el 15 de noviembre en &lt;a href="http://www.cesun.edu.mx"&gt;CESUN Universidad&lt;/a&gt;. Las condiciones del día quizás no fueron las mejores para que la pantalla pudiera ser apreciada correctamente pero realmente agradezco a los asistentes la paciencia, el interés y el entusiasmo mostrado a lo largo del evento.&lt;/p&gt; &lt;p&gt;&lt;a href="http://cid-b4329e20a9381067.skydrive.live.com/self.aspx/Pictures/Fotos%20de%20Eventos%20TJNET/Tour%20Tecnol%c3%b3gico%202007%20-%20Audiencia%20mediod%c3%ada%202.jpg" title="Audiencia Tour Tecnológico 2007"&gt;&lt;img src="http://38x1cq.tuk.livefilestore.com/y1pxUg9ncBlge-danUj90xgQOrkJ30dgk0mLa2FBKDL-GySwk8qyQR8xpEVUdqXsug7EOqcwIS_xMjcX07VbvBKc59mHaUSvi_4/Tour%20Tecnol%C3%B3gico%202007%20-%20Audiencia%20mediod%C3%ADa%202.jpg" align="right" border="0" height="120" width="160" alt="" /&gt;&lt;/a&gt;Al rededor de unas 120 personas (a quienes se les entregó Reconocimiento firmado por personal de Microsoft) fueron las asistentes. Una pequeña parte eran estudiantes con quien tuve oportunidad de platicar con ellos y me comentaban sus inquietudes con la carrera que eligieron y con quienes pude aprovechar el vínculo para lograr mayores cosas. También coordinadores de carrera como Cynthia Rentería de &lt;a href="http://www.univer.edu.mx"&gt;UNIVER&lt;/a&gt; quien también desde temprano estuvo acompañándonos. Y algo que fue bastante agradable fue saludar a colegas que ahora están en la industria trabajando muy duro y compartiendo sus experiencias con la plataforma de desarrollo de Visual Studio como Jehu Hernández. Por ahí también me comentaron que entre los directivos de empresas, desarrolladores independientes y empleados de diversas empresas quienes sus patrones les permitieron asistir al evento surgieron oportunidades de negocio que aunque no es un fin primordial de la &lt;a href="http://www.tjnet.org"&gt;Comunidad .NET Tijuana&lt;/a&gt;, sí son bienvenidas.&lt;/p&gt; &lt;p&gt;&lt;a href="http://cid-b4329e20a9381067.skydrive.live.com/self.aspx/Pictures/Fotos%20de%20Eventos%20TJNET/Tour%20Tecnol%c3%b3gico%202007%20-%20Haar%c3%b3n%20Gonz%c3%a1lez%20y%20Gabriel%20Flores.jpg" title="Haarón González y Gabriel Flores"&gt;&lt;img src="http://38x1cq.tuk.livefilestore.com/y1pxUg9ncBlge8BOWBbegoIgM_X9qT50Q9F5VI18QC95quzyy5VU24_k-O4dxUlpjE97OFHlh_Nmg7tfxltWfQHFNVOtgJlg5t3/Tour%20Tecnol%C3%B3gico%202007%20-%20Haar%C3%B3n%20Gonz%C3%A1lez%20y%20Gabriel%20Flores.jpg" align="left" border="0" height="120" width="160" alt="" /&gt;&lt;/a&gt;Muchas gracias a todos los asistentes, al equipo de colaboradores de &lt;a href="http://www.cesun.edu.mx"&gt;CESUN universidad&lt;/a&gt; que aunque no les gustaba salir en la foto estuvieron al pie del cañón en todo momento, a Eduardo Kórnegay de CESUN, a Johnathan de APC, a &lt;a href="http://mario-chavez.blogspot.com/"&gt;Mario Alberto Chávez&lt;/a&gt;, &lt;a href="http://www.msmvps.com/blogs/haarongonzalez"&gt;Haarón González&lt;/a&gt; y &lt;a href="http://team.intellekt.ws/blogs/roman"&gt;Román Lozano&lt;/a&gt; por su estupenda participación. También cabe señalar que no pudo haber sido posible el evento sin el apoyo de Jahdiel Vargas del &lt;a href="http://www.itbaja.com"&gt;Cluster de Tecnologías de Información de Baja California&lt;/a&gt; quien se encargó de la logística, enlace con &lt;a href="http://www.cesun.edu.mx"&gt;CESUN Universidad&lt;/a&gt;, renta de equipo y soporte con las llamadas que hacía cada media hora. Aprovecho también para agradecer a todos los que se acercaron a mí con la inquietud de participar en la comunidad y hacerla más grande.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;iframe src="http://cid-b4329e20a9381067.skydrive.live.com/embedrow.aspx/Pictures/Fotos%20de%20Eventos%20TJNET" style="margin:3px;padding:0pt;width:240px;height:26px;" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe src="http://cid-b4329e20a9381067.skydrive.live.com/embedrow.aspx/Eventos%20TJNET" style="margin:3px;padding:0pt;width:240px;height:26px;" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1320211" width="1" height="1"&gt;</content><author><name>gflores</name><uri>http://msmvps.com/members/gflores/default.aspx</uri></author><category term="eventos" scheme="http://msmvps.com/blogs/gflores/archive/tags/eventos/default.aspx" /></entry><entry><title>Gráficas fáciles para web</title><link rel="alternate" type="text/html" href="/blogs/gflores/archive/2007/08/28/gr-225-ficas-f-225-ciles-para-web.aspx" /><id>/blogs/gflores/archive/2007/08/28/gr-225-ficas-f-225-ciles-para-web.aspx</id><published>2007-08-28T17:20:00Z</published><updated>2007-08-28T17:20:00Z</updated><content type="html">
&lt;p&gt;Una necesidad recurrente en cualquier tipo de proyecto es darle presentación a datos de una manera que rápidamente sea aprovechable y útil para quien toma decisiones. La presentación en gráficas comparativas es algo a lo que ya está acostumbrada la mayoría de las personas aunque para generarlas no siempre se cuenta con la herramienta adecuada.&lt;/p&gt;
 
&lt;p&gt;Carlos Aguilar creó hace unos años un control gratuito para ello, el WebChart. Y usarlo es tan sencillo como ponerlo en tu Toolbox de Visual Studio y arrastrárlo a la página que estás creando. En tu código de la página aparecerá así:&lt;/p&gt;
 
&lt;p&gt;&lt;span style="color:blue;"&gt;&amp;lt;%@&lt;/span&gt;&lt;span&gt; &lt;span style="color:maroon;"&gt;Page&lt;/span&gt;&lt;span style="color:fuchsia;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;C#&amp;quot;&lt;/span&gt;&lt;span style="color:fuchsia;"&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;%&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color:blue;"&gt;&amp;lt;%@&lt;/span&gt;&lt;span&gt; &lt;span style="color:maroon;"&gt;Register&lt;/span&gt;&lt;span style="color:fuchsia;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;tagPrefix&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Web&amp;quot;&lt;/span&gt;&lt;span style="color:fuchsia;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Namespace&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;WebChart&amp;quot;&lt;/span&gt;&lt;span style="color:fuchsia;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Assembly&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;WebChart&amp;quot;&lt;/span&gt;&lt;span style="color:fuchsia;"&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;%&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color:blue;"&gt;&amp;lt;%@&lt;/span&gt;&lt;span&gt; &lt;span style="color:maroon;"&gt;Import&lt;/span&gt;&lt;span style="color:fuchsia;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Namespace&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;System.Drawing&amp;quot;&lt;/span&gt;&lt;span style="color:fuchsia;"&gt;
&lt;/span&gt;&lt;span style="color:blue;"&gt;%&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;html&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;head&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;title&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;WebChart Sample&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;title&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;head&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;body&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Web&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:maroon;"&gt;ChartControl&lt;/span&gt;&lt;span style="color:fuchsia;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;500&amp;quot;&lt;/span&gt;&lt;span style="color:fuchsia;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;350&amp;quot;&lt;/span&gt;&lt;span style="color:fuchsia;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;ChartControl1&amp;quot;&lt;/span&gt;&lt;span style="color:fuchsia;"&gt;
&lt;/span&gt;&lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Server&amp;quot;&lt;/span&gt;&lt;span style="color:fuchsia;"&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;body&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;html&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
 
&lt;p&gt;Para darle funcionalidad es tan simple como cargar un dataset:&lt;/p&gt;
 
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="darkgreen"&gt;//en&amp;nbsp;CrearDataSet&amp;nbsp;está&amp;nbsp;la&amp;nbsp;funcionalidad&amp;nbsp;de&amp;nbsp;conexión&amp;nbsp;a&amp;nbsp;BD&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;DataSet&amp;nbsp;dsPrioridades&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;CrearDataSet()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;PieChart&amp;nbsp;priorityChart&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;PieChart()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;priorityChart.DataSource&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;dsPrioridades.Tables[&lt;/font&gt;&lt;font color="maroon"&gt;0&lt;/font&gt;&lt;font color="black"&gt;].DefaultView&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;
&lt;/p&gt;
 
&lt;p&gt;Y asignarle cuales campos comprenderán tu eje Y y tu eje X, además de cargarlo en el control:&lt;/p&gt;
 
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="black"&gt;priorityChart.DataXValueField&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;Prioridad&amp;quot;&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;priorityChart.DataYValueField&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;Proyectos&amp;quot;&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;priorityChart.DataBind()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;ChartControl1.Charts.Add(priorityChart)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;ChartControl1.RedrawChart()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;

&lt;/p&gt;
 
&lt;p&gt;El resultado es una buena gráfica:&lt;/p&gt;
 
&lt;p&gt;&amp;nbsp;&lt;img src="http://i5.photobucket.com/albums/y152/gabofr/webchartCa.png" title="Gráfica" alt="Gráfica" height="289" width="350" /&gt;&lt;/p&gt;
 
&lt;p&gt;En la misma página de WebChart puedes descargar el archivo de ayuda que te permitirá saber como manipular todas las propiedades y métodos que tiene para lograr resultados más acordes a lo que necesitas. También hay bastantes ejemplos y código de mejoras a las gráficas que puedes generar.&lt;/p&gt;
 &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:1965ac3f-b476-4b59-894a-c7fd604cde30" style="margin:0px;padding:0px;display:inline;"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/webchart" rel="tag"&gt;webchart&lt;/a&gt;, &lt;a href="http://technorati.com/tags/asp.net" rel="tag"&gt;asp.net&lt;/a&gt;, &lt;a href="http://technorati.com/tags/c#" rel="tag"&gt;c#&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1143956" width="1" height="1"&gt;</content><author><name>gflores</name><uri>http://msmvps.com/members/gflores/default.aspx</uri></author><category term="c#" scheme="http://msmvps.com/blogs/gflores/archive/tags/c_2300_/default.aspx" /><category term="nivel:100" scheme="http://msmvps.com/blogs/gflores/archive/tags/nivel_3A00_100/default.aspx" /><category term="howto" scheme="http://msmvps.com/blogs/gflores/archive/tags/howto/default.aspx" /><category term="asp.net" scheme="http://msmvps.com/blogs/gflores/archive/tags/asp.net/default.aspx" /></entry><entry><title>Pronet CodeCamp</title><link rel="alternate" type="text/html" href="/blogs/gflores/archive/2007/05/16/pronet-codecamp.aspx" /><id>/blogs/gflores/archive/2007/05/16/pronet-codecamp.aspx</id><published>2007-05-16T19:10:00Z</published><updated>2007-05-16T19:10:00Z</updated><content type="html">&lt;p&gt;Después de unos días de enfermedad regreso con nuevos bríos. El pasado 2 de mayo por parte de la Comunidad .NET Tijuana con apoyos de Microsoft se llevó a cabo el evento &lt;a href="http://www.tjnet.org/Eventos/1352.aspx"&gt;Pronet CodeCamp&lt;/a&gt; en la que se vieron los temas:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Windows Presentation Foundation, impartido por &lt;a href="http://www.elguille.info"&gt;El Guille&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Desarrollando para Ajax, por el Ing. Leopoldo Uribe&lt;/li&gt;&lt;li&gt;Windows Workflow Foundation, por un servidor&lt;/li&gt;&lt;li&gt;Windows Communication Foundation, brindada por &lt;a href="http://www.msmvps.com/blogs/otelis"&gt;Octavio Telis&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Cardspace, por el &lt;a href="http://www.zoosharp.com"&gt;Ing. Eduardo Arredondo&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;




&lt;p&gt;&lt;a href="http://i18.photobucket.com/albums/b116/gfr20/GustavoRiveraOctavioTelisyGabrielFl.jpg" target="_blank"&gt;&lt;img src="http://s18.photobucket.com/albums/b116/gfr20/th_GustavoRiveraOctavioTelisyGabrielFl.jpg" title="Photo Sharing and Video Hosting at Photobucket" alt="Photo Sharing and Video Hosting at Photobucket" align="right" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;A pesar de unos problemas técnicos me agradó que tenía enfrente a Octavio Telis y a Guillermo Som, además de varias preguntas que se hicieron y que me dieron a entender que hubo interés en el tema. Mi presentación favorita fue la de El Guille, donde nos presentó quizás cosas que ya sabemos de WPF pero viendo como interactúa en vivo con Blend y la siguiente versión de Visual Studio fue un extra muy bueno. Un agradecimiento a Octavio por aportarnos su conocimiento con la presentación de WCF y a su comitiva que vinieron desde la Ciudad de México nerviosos por estar en Tijuana pero deseosos de ver una vez más a Guillermo Som.&lt;/p&gt;

&lt;p&gt;Las instalaciones de la UABC en Tijuana fueron muy funcionales y el apoyo logístico de parte de la célula académica &lt;a href="http://uabc-live-net.spaces.live.com"&gt;UABC Live.NET&lt;/a&gt; con el apoyo del profesor Jesús Reyes estuvo excelente. Así, nos veremos en la próxima ocasión.&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=907741" width="1" height="1"&gt;</content><author><name>gflores</name><uri>http://msmvps.com/members/gflores/default.aspx</uri></author><category term="eventos" scheme="http://msmvps.com/blogs/gflores/archive/tags/eventos/default.aspx" /></entry><entry><title>.NET Framework 3.0</title><link rel="alternate" type="text/html" href="/blogs/gflores/archive/2007/04/17/net-framework-3-0.aspx" /><id>/blogs/gflores/archive/2007/04/17/net-framework-3-0.aspx</id><published>2007-04-17T19:56:29Z</published><updated>2007-04-17T19:56:29Z</updated><content type="html">&lt;p&gt;Esta versión se incorpora al .NET Framework 2.0 y combina este marco de trabajo con nuevas tecnologías para crear:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Experiencias de usuario visualmente atractivas  &lt;li&gt;Comunicación interoperable confiable  &lt;li&gt;Modelos de procesos de negocio&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Siendo una evolución del .NET Framework, proveé una experiencia de desarrollo consistente y familiar para millones de desarrolladores que programan en este ambiente.&lt;/p&gt; &lt;p&gt;Para lograr estos objetivos, se tiene:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Windows Presentation Foundation (WPF)&lt;/strong&gt;, provee clases para construir aplicaciones cliente de siguiente generación que combinan interfaz de usuario, documentos y medios.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Windows Workflow Foundation (WF)&lt;/strong&gt;, con un modelo de programación, motor y herramientas para construir aplicaciones habilitadas para flujos de trabajo que modelan procesos de negocio.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Windows Communication Foundation (WCF)&lt;/strong&gt;, un modelo de pogramación unificado para construir aplicaciones orientados a servicios.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Microsoft Windows Cardspace (antes InfoCard)&lt;/strong&gt;, tecnología para simplificar y mejorar la seguridad al acceder a recursos y compartir información personal de identidad en línea.&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/blogs/gflores/WindowsLiveWriter/.NETFramework3.0_B579/aa663309.20180_dotnet3%5B1%5D%5B3%5D.gif"&gt;&lt;img height="82" src="http://msmvps.com/blogs/gflores/WindowsLiveWriter/.NETFramework3.0_B579/aa663309.20180_dotnet3%5B1%5D_thumb%5B1%5D.gif" width="240"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Espera en las próximas entradas un poco más de detalle de estos componentes del .NET Framework 3.0.&lt;/p&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=822794" width="1" height="1"&gt;</content><author><name>gflores</name><uri>http://msmvps.com/members/gflores/default.aspx</uri></author><category term=".net" scheme="http://msmvps.com/blogs/gflores/archive/tags/.net/default.aspx" /><category term="tecnolog&amp;#237;a" scheme="http://msmvps.com/blogs/gflores/archive/tags/tecnolog_26002300_237_3B00_a/default.aspx" /><category term="nivel:100" scheme="http://msmvps.com/blogs/gflores/archive/tags/nivel_3A00_100/default.aspx" /><category term="wpf" scheme="http://msmvps.com/blogs/gflores/archive/tags/wpf/default.aspx" /><category term="wwf" scheme="http://msmvps.com/blogs/gflores/archive/tags/wwf/default.aspx" /><category term="wcf" scheme="http://msmvps.com/blogs/gflores/archive/tags/wcf/default.aspx" /></entry><entry><title>Referencias para .NET 3.0</title><link rel="alternate" type="text/html" href="/blogs/gflores/archive/2007/03/22/referencias-para-net-3-0.aspx" /><id>/blogs/gflores/archive/2007/03/22/referencias-para-net-3-0.aspx</id><published>2007-03-22T20:53:00Z</published><updated>2007-03-22T20:53:00Z</updated><content type="html">&lt;p&gt;Algunas ligas útiles para desarrollo de aplicaciones con .NET 3.0:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/windowsvista/default.aspx"&gt;Windows Vista Developer Center&lt;/a&gt; &lt;br&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=10cc340b-f857-4a14-83f5-25634c3bf043&amp;amp;DisplayLang=en" title=".NET 3.0 download"&gt;.NET 3.0&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/netframework/aa663300.aspx"&gt;Windows Presentation Foundation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/netframework/aa663299.aspx"&gt;Windows Communication Foundation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/netframework/aa663308.aspx"&gt;Windows Workflow Foundation&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Para empezar a desarrollar:&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=7614FE22-8A64-4DFB-AA0C-DB53035F40A0"&gt;Windows SDK&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=5D61409E-1FA3-48CF-8023-E8F38E709BA6&amp;amp;displaylang=en"&gt;Visual Studio 2005 Extensions for WWF&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=F54F5537-CC86-4BF5-AE44-F5A1E805680D&amp;amp;displaylang=en"&gt;Visual Studio 2005 Extensions for WCF &amp;amp; WPF&lt;/a&gt; &lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Ejemplos, demos y código:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms741723.aspx"&gt;Windows Workflow Foundation Samples&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.google.com/url?sa=t&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fmsdn2.microsoft.com%2Fen-us%2Flibrary%2Fms771449.aspx&amp;amp;ei=zu4CRprgGKL8ggOliKHxDA&amp;amp;usg=__cUydTuyf5YcUHwbqpV1omk9QHMA=&amp;amp;sig2=MMbIvDyt3nLjxDYnUUEujw"&gt;Getting started with WPF Samples&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms751514.aspx"&gt;Windows Communication Foundation Samples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Webcast: Building a Sudoku Game Using Windows Presentation Foundation &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msevents.microsoft.com/cui/eventdetail.aspx?eventID=1032294938&amp;amp;Culture=en-US"&gt;Part 1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msevents.microsoft.com/cui/eventdetail.aspx?eventID=1032294955&amp;amp;Culture=en-US"&gt;Part 2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msevents.microsoft.com/cui/eventdetail.aspx?eventID=1032294957&amp;amp;Culture=en-US"&gt;Part 3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msevents.microsoft.com/cui/eventdetail.aspx?eventID=1032294959&amp;amp;Culture=en-US"&gt;Part 4&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/events/EventDetails.aspx?CMTYSvcSource=MSCOMMedia&amp;amp;Params=%7eCMTYDataSvcParams%5e%7earg+Name%3d%22ID%22+Value%3d%221032294962%22%2f%5e%7earg+Name%3d%22ProviderID%22+Value%3d%22A6B43178-497C-4225-BA42-DF595171F04C%22%2f%5e%7earg+Name%3d%22lang%22+Value%3d%22en%22%2f%5e%7earg+Name%3d%22cr%22+Value%3d%22US%22%2f%5e%7esParams%5e%7e%2fsParams%5e%7e%2fCMTYDataSvcParams%5e"&gt;Part 5&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=702177" width="1" height="1"&gt;</content><author><name>gflores</name><uri>http://msmvps.com/members/gflores/default.aspx</uri></author><category term=".net" scheme="http://msmvps.com/blogs/gflores/archive/tags/.net/default.aspx" /><category term="nivel:100" scheme="http://msmvps.com/blogs/gflores/archive/tags/nivel_3A00_100/default.aspx" /><category term="howto" scheme="http://msmvps.com/blogs/gflores/archive/tags/howto/default.aspx" /><category term="wpf" scheme="http://msmvps.com/blogs/gflores/archive/tags/wpf/default.aspx" /><category term="wwf" scheme="http://msmvps.com/blogs/gflores/archive/tags/wwf/default.aspx" /><category term="wcf" scheme="http://msmvps.com/blogs/gflores/archive/tags/wcf/default.aspx" /></entry></feed>