<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6106231520190694503</id><updated>2012-02-16T12:32:05.818-03:00</updated><category term='CSHARP'/><category term='AJAX'/><category term='Utilidades'/><category term='Diseño'/><category term='GridView'/><category term='ASP.NET'/><category term='Tutorial CSharp'/><category term='70-536'/><title type='text'>Latam Developers - Blog de Pablo Barrientos</title><subtitle type='html'>Blog de desarrollo de aplicaciones web en ASP.NET (C#), orientado a desarrolladores de Latinoamérica y de habla hispana. Este blog también está dedicado a tecnologías e industrias como SEO y WEB 2.0 y en especial a uno de sus componentes fundamentales:AJAX y la implementación de Microsoft: ASP.NET AJAX Toolkit.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>36</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-273304466845323680</id><published>2011-03-09T10:43:00.002-03:00</published><updated>2011-03-09T10:45:30.764-03:00</updated><title type='text'>Hosting de calidad: Bueno, bonito y barato y en español. Casi gratis diria yo</title><content type='html'>&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Estuve probando un servicio de hosting bastante bueno, con muchas características de las que andaba necesitando. Solo para mencionar algunas les listo las siguientes que me gustaron:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;- Totalmente en Español&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;- 3GB de espacio en disco&lt;br /&gt;- Dominio incluido&lt;br /&gt;- Se pueden alojar mas dominios&lt;br /&gt;- Subdominios ilimitados&lt;br /&gt;- Bases de datos MySQL ilimitadas&lt;br /&gt;- Instalador Fantastico para aplicaciones como Wordpress y Joomla&lt;br /&gt;- Además te dan como "bonos" un pack de herramientas muy interesantes&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;En fin, me gustó y se los quería recomendar :)&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Pueden ver el detalle completo del sevicio y contratarlo &lt;a href="http://6f262o8yp8ej9tenwgjm19wmbd.hop.clickbank.net/"&gt;haciendo click aquí&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;.- &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-273304466845323680?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/273304466845323680/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=273304466845323680' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/273304466845323680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/273304466845323680'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2011/03/hosting-de-calidad-bueno-bonito-y.html' title='Hosting de calidad: Bueno, bonito y barato y en español. Casi gratis diria yo'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-8662514276016511528</id><published>2008-11-24T21:27:00.004-02:00</published><updated>2008-11-24T21:33:23.014-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='70-536'/><title type='text'>MCTS 70-536 Links a MSDN en castellano 7/7</title><content type='html'>&lt;table border="0"&gt;&lt;tbody&gt;&lt;tr&gt;      &lt;td width="800"&gt;  &lt;h3&gt;Implementing globalization, drawing, and text manipulation functionality in a .NET Framework application&lt;/h3&gt;&lt;ol type="A"&gt;&lt;br /&gt;   &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/h6270d0z.aspx" target="_new"&gt;Format data based on culture information&lt;/a&gt;. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.globalization.aspx" target="_new"&gt;System.Globalization&lt;/a&gt; namespace)&lt;br /&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/87k6sx8t.aspx" target="_new"&gt;Access culture and region information&lt;/a&gt; in a .NET Framework application.&lt;br /&gt;   &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.globalization.cultureinfo.aspx" target="_new"&gt;CultureInfo&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.globalization.culturetypes.aspx" target="_new"&gt;CultureTypes&lt;/a&gt; enumeration&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.globalization.regioninfo.aspx" target="_new"&gt;RegionInfo&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/5hh873ya.aspx" target="_new"&gt;Format date and time values based on the culture&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.globalization.datetimeformatinfo.aspx" target="_new"&gt;DateTimeFormatInfo&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/syy068tk.aspx" target="_new"&gt;Format number values based on the culture&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.globalization.numberformatinfo.aspx" target="_new"&gt;NumberFormatInfo&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.globalization.numberstyles.aspx" target="_new"&gt;NumberStyles&lt;/a&gt; enumeration&lt;br /&gt; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/a7zyyk0c.aspx" target="_new"&gt;Perform culture-sensitive string comparison&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.globalization.compareinfo.aspx" target="_new"&gt;CompareInfo&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.globalization.compareoptions.aspx" target="_new"&gt;CompareOptions&lt;/a&gt; enumeration&lt;br /&gt; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/ms172469.aspx" target="_new"&gt;Build a custom culture class&lt;/a&gt; based on existing culture and region classes.&lt;br /&gt;   &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.globalization.cultureandregioninfobuilder.aspx" target="_new"&gt;CultureAndRegionInfoBuilder&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.globalization.cultureandregionmodifiers.aspx" target="_new"&gt;CultureAndRegionModifier&lt;/a&gt; enumeration&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/d420az6e.aspx" target="_new"&gt;Enhance the user interface of a .NET Framework application&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt; &lt;/span&gt;by using the &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.aspx" target="_new"&gt;System.Drawing&lt;/a&gt; namespace.&lt;br /&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/yhez825d.aspx" target="_new"&gt;Enhance the user interface&lt;/a&gt; of a .NET Framework application by using &lt;a href="http://msdn2.microsoft.com/es-ar/library/sk9tw65x.aspx" target="_new"&gt;brushes&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/es-ar/library/1903x50d.aspx" target="_new"&gt;pens&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/es-ar/library/yw54xck3.aspx" target="_new"&gt;colors&lt;/a&gt;, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/9why95hd.aspx" target="_new"&gt;fonts&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.brush.aspx" target="_new"&gt;Brush&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.brushes.aspx" target="_new"&gt;Brushes&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.systembrushes.aspx" target="_new"&gt;SystemBrushes&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.texturebrush.aspx" target="_new"&gt;TextureBrush&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.pen.aspx" target="_new"&gt;Pen&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.pens.aspx" target="_new"&gt;Pens&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.systempens.aspx" target="_new"&gt;SystemPens&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.solidbrush.aspx" target="_new"&gt;SolidBrush&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.color.aspx" target="_new"&gt;Color&lt;/a&gt; structure&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.colorconverter.aspx" target="_new"&gt;ColorConverter&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.colortranslator.aspx" target="_new"&gt;ColorTranslator&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.systemcolors.aspx" target="_new"&gt;SystemColors&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.stringformat.aspx" target="_new"&gt;StringFormat&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.font.aspx" target="_new"&gt;Font&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.fontconverter.aspx" target="_new"&gt;FontConverter&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.fontfamily.aspx" target="_new"&gt;FontFamily&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.systemfonts.aspx" target="_new"&gt;SystemFonts&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt; &lt;li&gt;Enhance the user interface of a .NET Framework application by using&lt;br /&gt;         &lt;a href="http://msdn2.microsoft.com/es-ar/library/5y289054.aspx" target="_new"&gt;graphics&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/es-ar/library/8802zys9.aspx" target="_new"&gt;images&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/es-ar/library/at62haz6.aspx" target="_new"&gt;bitmaps&lt;/a&gt;, and icons.&lt;br /&gt;   &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.graphics.aspx" target="_new"&gt;Graphics&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.bufferedgraphics.aspx" target="_new"&gt;BufferedGraphics&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.bufferedgraphicsmanager.aspx" target="_new"&gt;BufferedGraphicsManager&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.image.aspx" target="_new"&gt;Image&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.imageconverter.aspx" target="_new"&gt;ImageConverter&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.imageanimator.aspx" target="_new"&gt;ImageAnimator&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.bitmap.aspx" target="_new"&gt;Bitmap&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.icon.aspx" target="_new"&gt;Icon&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.iconconverter.aspx" target="_new"&gt;IconConverter&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.systemicons.aspx" target="_new"&gt;SystemIcons&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt; &lt;li&gt;Enhance the user interface of a .NET Framework application by using&lt;br /&gt;         &lt;a href="http://msdn2.microsoft.com/es-ar/library/785scy3c.aspx" target="_new"&gt;shapes&lt;/a&gt; and &lt;a href="http://msdn2.microsoft.com/es-ar/library/e06tc8a5%28VS.80%29.aspx" target="_new"&gt;sizes&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.point.aspx" target="_new"&gt;Point&lt;/a&gt; Structure&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.pointconverter.aspx" target="_new"&gt;PointConverter&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.rectangle.aspx" target="_new"&gt;Rectangle&lt;/a&gt; Structure&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.rectangleconverter.aspx" target="_new"&gt;RectangleConverter&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.size.aspx" target="_new"&gt;Size&lt;/a&gt; Structure&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.sizeconverter.aspx" target="_new"&gt;SizeConverter&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.drawing.region.aspx" target="_new"&gt;Region&lt;/a&gt; class&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;Enhance the text handling capabilities of a .NET Framework application (refer&lt;br /&gt;       &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.aspx" target="_new"&gt;System.Text&lt;/a&gt; namespace), and search, modify, and control text in a .NET Framework application by using &lt;a href="http://msdn2.microsoft.com/es-ar/library/28hw3sce.aspx" target="_new"&gt;regular expressions&lt;/a&gt;. (Refer  &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.regularexpressions.aspx" target="_new"&gt;System.Text.RegularExpressions&lt;/a&gt; namespace)&lt;br /&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.stringbuilder.aspx" target="_new"&gt;StringBuilder&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.regularexpressions.regex.aspx" target="_new"&gt;Regex&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.regularexpressions.match.aspx" target="_new"&gt;Match&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.regularexpressions.matchcollection.aspx" target="_new"&gt;MatchCollection&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.regularexpressions.group.aspx" target="_new"&gt;Group&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.regularexpressions.groupcollection.aspx" target="_new"&gt;GroupCollection&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;li&gt;Encode text by using Encoding classes&lt;br /&gt;   &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.encoding.aspx" target="_new"&gt;Encoding&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.encodinginfo.aspx" target="_new"&gt;EncodingInfo&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.asciiencoding.aspx" target="_new"&gt;ASCIIEncoding&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.unicodeencoding.aspx" target="_new"&gt;UnicodeEncoding&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.utf8encoding.aspx" target="_new"&gt;UTF8Encoding&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.encoderfallback.aspx" target="_new"&gt;EncodingFallback&lt;/a&gt; class&lt;br /&gt;      &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.encoderfallbackbuffer.aspx" target="_new"&gt;EncoderFallbackBuffer&lt;/a&gt; class&lt;br /&gt;      &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.encoderfallbackexception.aspx" target="_new"&gt;EncoderFallbackException&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Decode text by using Decoding classes.&lt;br /&gt;   &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.decoder.aspx" target="_new"&gt;Decoder&lt;/a&gt; class&lt;br /&gt;      &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.decoderfallback.aspx" target="_new"&gt;DecoderFallback&lt;/a&gt; class&lt;br /&gt;      &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.decoderfallbackbuffer.aspx" target="_new"&gt;DecoderFallbackBuffer&lt;/a&gt; class&lt;br /&gt;      &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.decoderfallbackexception.aspx" target="_new"&gt;DecoderFallbackException&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.regularexpressions.capture.aspx" target="_new"&gt;Capture&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.text.regularexpressions.capturecollection.aspx" target="_new"&gt;CaptureCollection&lt;/a&gt; class    &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt; &lt;br /&gt; &lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-8662514276016511528?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/8662514276016511528/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=8662514276016511528' title='8 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/8662514276016511528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/8662514276016511528'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2008/11/mcts-70-536-links-msdn-en-castellano-77.html' title='MCTS 70-536 Links a MSDN en castellano 7/7'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-470977179990291230</id><published>2008-11-08T21:18:00.002-02:00</published><updated>2008-11-08T21:21:40.821-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='70-536'/><title type='text'>MCTS 70-536 Links a MSDN en castellano 6/7</title><content type='html'>&lt;table border="0"&gt;  &lt;tbody&gt;&lt;tr&gt;        &lt;td width="800"&gt;        &lt;h3&gt;Implementing interoperability, reflection, and mailing functionality in a .NET Framework application&lt;/h3&gt;    &lt;ol type="A"&gt;&lt;li&gt;          &lt;a href="http://msdn2.microsoft.com/es-ar/library/zsfww439.aspx" target="_new"&gt;.NET Framework components to COM&lt;/a&gt;. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.interopservices.aspx" target="_new"&gt;System.Runtime.InteropServices&lt;/a&gt; namespace)&lt;br /&gt;   &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/xwzy44e4.aspx" target="_new"&gt;Import a type library as an assembly&lt;/a&gt;.&lt;br /&gt;     &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/fwawt96c.aspx" target="_new"&gt;Add references to type libraries&lt;/a&gt;.&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/hfzzah2c.aspx" target="_new"&gt;Type Library Importer (Tlbimp.exe)&lt;/a&gt;&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/697w37zd.aspx" target="_new"&gt;Generate interop assemblies from type libraries&lt;/a&gt;.&lt;br /&gt;  &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/cwhhsx92.aspx" target="_new"&gt;Imported Library Conversion&lt;/a&gt;&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/b6y86f64.aspx" target="_new"&gt;Imported Module Conversion&lt;/a&gt;&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/s8sdycxx.aspx" target="_new"&gt;Imported Type Conversion&lt;/a&gt;&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/k639e386.aspx" target="_new"&gt;Imported Member Conversion&lt;/a&gt;&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/k9c48sba.aspx" target="_new"&gt;Imported Parameter Conversion&lt;/a&gt;&lt;br /&gt;     &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.componentmodel.typeconverter.aspx" target="_new"&gt;TypeConverter&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/3y76b69k.aspx" target="_new"&gt;Create COM types in managed code&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/538aes2a.aspx" target="_new"&gt;Compile an interop project&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/tc0204w0.aspx" target="_new"&gt;Deploy an interop application&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/7fcfby2t.aspx" target="_new"&gt;Qualify the .NET Framework types for interoperation&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/d4w8x20h.aspx" target="_new"&gt;Apply Interop attributes&lt;/a&gt;, such as the &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.interopservices.comvisibleattribute.aspx" target="_new"&gt;ComVisibleAttribute&lt;/a&gt; class.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/bctyca52.aspx" target="_new"&gt;Package an assembly for COM&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/c2850st8.aspx" target="_new"&gt;Deploy an application for COM access&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/26thfadc.aspx" target="_new"&gt;Call unmanaged DLL functions&lt;/a&gt; in a .NET Framework application, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/8c5xx97k.aspx" target="_new"&gt;control the marshaling of data&lt;/a&gt; in a .NET Framework application. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.interopservices.aspx" target="_new"&gt;System.Runtime.InteropServices&lt;/a&gt; namespace)&lt;br /&gt;   &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/0h9e9t7d.aspx" target="_new"&gt;Platform Invoke&lt;/a&gt;&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/khbsw73t.aspx" target="_new"&gt;Create a class to hold DLL functions&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/w4byd5y4.aspx" target="_new"&gt;Create prototypes in managed code&lt;/a&gt;.&lt;br /&gt;     &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.interopservices.dllimportattribute.aspx" target="_new"&gt;DllImportAttribute&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/be80xase.aspx" target="_new"&gt;Call a DLL function&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;Call a DLL function in special cases, such as &lt;a href="http://msdn2.microsoft.com/es-ar/library/awbckfbz.aspx" target="_new"&gt;passing structures&lt;/a&gt; and &lt;a href="http://msdn2.microsoft.com/es-ar/library/d186xcf0.aspx" target="_new"&gt;implementing callback functions&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=6106231520190694503" target="_new"&gt;Create a new Exception class and map it to an HRESULT&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/zah6xy75.aspx" target="_new"&gt;Default marshaling behavior&lt;/a&gt;&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/fzhhdwae.aspx" target="_new"&gt;Marshal data with Platform Invoke&lt;/a&gt;&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/9f9f3yxf.aspx" target="_new"&gt;Marshal data with COM Interop&lt;/a&gt;&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.interopservices.marshalasattribute.aspx" target="_new"&gt;MarshalAsAttribute&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.interopservices.marshal.aspx" target="_new"&gt;Marshal&lt;/a&gt; class&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;Implement &lt;a href="http://msdn2.microsoft.com/es-ar/library/cxz4wk15%28VS.80%29.aspx" target="_new"&gt;reflection&lt;/a&gt; functionality in a .NET Framework application (refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.aspx" target="_new"&gt;System.Reflection&lt;/a&gt; namespace), and &lt;a href="http://msdn2.microsoft.com/es-ar/library/8ffc3x75.aspx" target="_new"&gt;create metadata, Microsoft intermediate language (MSIL), and a PE file&lt;/a&gt; by using the &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.emit.aspx" target="_new"&gt;System.Reflection.Emit&lt;/a&gt; namespace.&lt;br /&gt;   &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.assembly.aspx" target="_new"&gt;Assembly&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;Assembly attributes&lt;br /&gt;     &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.assemblyalgorithmidattribute.aspx" target="_new"&gt;AssemblyAlgorithmIdAttribute&lt;/a&gt; class&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.assemblycompanyattribute.aspx" target="_new"&gt;AssemblyCompanyAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.assemblyconfigurationattribute.aspx" target="_new"&gt;AssemblyConfigurationAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.assemblycopyrightattribute.aspx" target="_new"&gt;AssemblyCopyrightAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.assemblycultureattribute.aspx" target="_new"&gt;AssemblyCultureAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.assemblydefaultaliasattribute.aspx" target="_new"&gt;AssemblyDefaultAliasAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.assemblydelaysignattribute.aspx" target="_new"&gt;AssemblyDelaySignAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.assemblydescriptionattribute.aspx" target="_new"&gt;AssemblyDescriptionAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.assemblyfileversionattribute.aspx" target="_new"&gt;AssemblyFileVersionAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.assemblyflagsattribute.aspx" target="_new"&gt;AssemblyFlagsAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.assemblyinformationalversionattribute.aspx" target="_new"&gt;AssemblyInformationalVersionAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.assemblykeyfileattribute.aspx" target="_new"&gt;AssemblyKeyFileAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.assemblytitleattribute.aspx" target="_new"&gt;AssemblyTitleAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.assemblytrademarkattribute.aspx" target="_new"&gt;AssemblyTrademarkAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.assemblyversionattribute.aspx" target="_new"&gt;AssemblyVersionAttribute&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Info classes&lt;br /&gt;     &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.constructorinfo.aspx" target="_new"&gt;ConstructorInfo&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.methodinfo.aspx" target="_new"&gt;MethodInfo&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.memberinfo.aspx" target="_new"&gt;MemberInfo&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.propertyinfo.aspx" target="_new"&gt;PropertyInfo&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.fieldinfo.aspx" target="_new"&gt;FieldInfo&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.eventinfo.aspx" target="_new"&gt;EventInfo&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.localvariableinfo.aspx" target="_new"&gt;LocalVariableInfo&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.binder.aspx" target="_new"&gt;Binder&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.bindingflags.aspx" target="_new"&gt;BindingFlags&lt;/a&gt; enumeration&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.methodbase.aspx" target="_new"&gt;MethodBase&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.methodbody.aspx" target="_new"&gt;MethodBody&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;Builder classes&lt;br /&gt;     &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.emit.assemblybuilder.aspx" target="_new"&gt;AssemblyBuilder&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.emit.constructorbuilder.aspx" target="_new"&gt;ConstructorBuilder&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.emit.enumbuilder.aspx" target="_new"&gt;EnumBuilder&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.emit.eventbuilder.aspx" target="_new"&gt;EventBuilder&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.emit.fieldbuilder.aspx" target="_new"&gt;FieldBuilder&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.emit.localbuilder.aspx" target="_new"&gt;LocalBuilder&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.emit.methodbuilder.aspx" target="_new"&gt;MethodBuilder&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.emit.modulebuilder.aspx" target="_new"&gt;ModuleBuilder&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.emit.parameterbuilder.aspx" target="_new"&gt;ParameterBuilder&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.emit.propertybuilder.aspx" target="_new"&gt;PropertyBuilder&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.reflection.emit.typebuilder.aspx" target="_new"&gt;TypeBuilder&lt;/a&gt; class&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;Send electronic mail to a Simple Mail Transfer Protocol (SMTP) server for delivery from a .NET Framework application. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.net.mail.aspx" target="_new"&gt;System.Net.Mail&lt;/a&gt; namespace)&lt;br /&gt;   &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.net.mail.mailmessage.aspx" target="_new"&gt;MailMessage&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.net.mail.mailaddress.aspx" target="_new"&gt;MailAddress&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.net.mail.mailaddresscollection.aspx" target="_new"&gt;MailAddressCollection&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.net.mail.smtpclient.aspx" target="_new"&gt;SmtpClient&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.net.mail.smtppermission.aspx" target="_new"&gt;SmtpPermission&lt;/a&gt; class, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.net.mail.smtppermissionattribute.aspx" target="_new"&gt;SmtpPermissionAttribute&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.net.mail.attachment.aspx" target="_new"&gt;Attachment&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.net.mail.attachmentbase.aspx" target="_new"&gt;AttachmentBase&lt;/a&gt; class, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.net.mail.attachmentcollection.aspx" target="_new"&gt;AttachmentCollection&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.net.mail.smtpexception.aspx" target="_new"&gt;SmtpException&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.net.mail.smtpfailedrecipientexception.aspx" target="_new"&gt;SmtpFailedReceipientException&lt;/a&gt; class, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.net.mail.smtpfailedrecipientsexception.aspx" target="_new"&gt;SmtpFailedReceipientsException&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.net.mail.sendcompletedeventhandler.aspx" target="_new"&gt;SendCompletedEventHandler&lt;/a&gt; delegate&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.net.mail.linkedresource.aspx" target="_new"&gt;LinkedResource&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.net.mail.linkedresourcecollection.aspx" target="_new"&gt;LinkedResourceCollection&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.net.mail.alternateview.aspx" target="_new"&gt;AlternateView&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.net.mail.alternateviewcollection.aspx" target="_new"&gt;AlternateViewCollection&lt;/a&gt; class    &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;    &lt;br /&gt;   &lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-470977179990291230?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/470977179990291230/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=470977179990291230' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/470977179990291230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/470977179990291230'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2008/11/mcts-70-536-links-msdn-en-castellano-67.html' title='MCTS 70-536 Links a MSDN en castellano 6/7'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-8965114570199471304</id><published>2008-11-05T06:46:00.003-02:00</published><updated>2008-11-24T21:27:00.555-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='70-536'/><title type='text'>MCTS 70-536 Links a MSDN en castellano 5/7</title><content type='html'>&lt;table border="0"&gt;  &lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;  &lt;td width="110"&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td width="800"&gt;        &lt;h3&gt;Improving the security of the .NET Framework applications by using the .NET Framework 2.0 security features&lt;/h3&gt;    &lt;ol type="A"&gt;&lt;br /&gt;    &lt;li&gt;Implement &lt;a href="http://msdn2.microsoft.com/es-ar/library/930b76w0%28VS.80%29.aspx" target="_new"&gt;code access security&lt;/a&gt; to improve the security of a .NET Framework application. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.aspx" target="_new"&gt;System.Security&lt;/a&gt; namespace)&lt;br /&gt;  &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.securitymanager.aspx" target="_new"&gt;SecurityManager&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.codeaccesspermission.aspx" target="_new"&gt;CodeAccessPermission&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;Modify the Code Access &lt;a href="http://msdn2.microsoft.com/es-ar/library/t0385k7y.aspx" target="_new"&gt;security policy&lt;/a&gt; at the computer, user, and enterprise &lt;a href="http://msdn2.microsoft.com/es-ar/library/628s5x1x.aspx" target="_new"&gt;policy level&lt;/a&gt; by using the&lt;br /&gt;          &lt;a href="http://msdn2.microsoft.com/es-ar/library/cb6t8dtz.aspx" target="_new"&gt;Code Access Security Policy tool (Caspol.exe)&lt;/a&gt;.&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissionset.aspx" target="_new"&gt;PermissionSet&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.namedpermissionset.aspx" target="_new"&gt;NamedPermissionSet&lt;/a&gt; classStandard Security interfaces&lt;br /&gt;    &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.ievidencefactory.aspx" target="_new"&gt;IEvidenceFactory&lt;/a&gt; interface&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.ipermission.aspx" target="_new"&gt;IPermission&lt;/a&gt; interface&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/ms229742%28VS.80%29.aspx" target="_new"&gt;Implement access control&lt;/a&gt; by using the &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.accesscontrol.aspx" target="_new"&gt;System.Security.AccessControl&lt;/a&gt; classes.&lt;br /&gt;  &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.accesscontrol.directorysecurity.aspx" target="_new"&gt;DirectorySecurity&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.accesscontrol.filesecurity.aspx" target="_new"&gt;FileSecurity&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.accesscontrol.filesystemsecurity.aspx" target="_new"&gt;FileSystemSecurity&lt;/a&gt; class, and&lt;br /&gt;          &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.accesscontrol.registrysecurity.aspx" target="_new"&gt;RegistrySecurity&lt;/a&gt; class &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.accesscontrol.accessrule.aspx" target="_new"&gt;AccessRule&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.accesscontrol.authorizationrule.aspx" target="_new"&gt;AuthorizationRule&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.accesscontrol.authorizationrulecollection.aspx" target="_new"&gt;AuthorizationRuleCollection&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.accesscontrol.commonace.aspx" target="_new"&gt;CommonAce&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.accesscontrol.commonacl.aspx" target="_new"&gt;CommonAcl&lt;/a&gt; class,  &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.accesscontrol.compoundace.aspx" target="_new"&gt;CompoundAce&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.accesscontrol.genericace.aspx" target="_new"&gt;GenericAce&lt;/a&gt; class, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.accesscontrol.genericacl.aspx" target="_new"&gt;GenericAcl&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.accesscontrol.auditrule.aspx" target="_new"&gt;AuditRule&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.accesscontrol.mutexsecurity.aspx" target="_new"&gt;MutexSecurity&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.accesscontrol.objectsecurity.aspx" target="_new"&gt;ObjectSecurity&lt;/a&gt; class, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.accesscontrol.semaphoresecurity.aspx" target="_new"&gt;SemaphoreSecurity&lt;/a&gt; class&lt;/li&gt;&lt;br /&gt;  &lt;/ul&gt;&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;Implement a custom authentication scheme by using the &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.authentication.aspx" target="_new"&gt;System.Security.Authentication&lt;/a&gt; classes. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.authentication.aspx" target="_new"&gt;System.Security.Authentication&lt;/a&gt; namespace)&lt;br /&gt;  &lt;ul&gt;&lt;li&gt;Authentication algorithms and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.authentication.sslprotocols.aspx" target="_new"&gt;SSL protocols&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/ms172378.aspx" target="_new"&gt;Encrypt, decrypt, and hash data&lt;/a&gt; by using the &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.aspx" target="_new"&gt;System.Security.Cryptography&lt;/a&gt; classes. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.aspx" target="_new"&gt;System.Security.Cryptography&lt;/a&gt; namespace)&lt;br /&gt;  &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.des.aspx" target="_new"&gt;DES&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.descryptoserviceprovider.aspx" target="_new"&gt;DESCryptoServiceProvider&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.hashalgorithm.aspx" target="_new"&gt;HashAlgorithm&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.dsa.aspx" target="_new"&gt;DSA&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.dsacryptoserviceprovider.aspx" target="_new"&gt;DSACryptoServiceProvider&lt;/a&gt; class&lt;/li&gt;&lt;li&gt;            &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.sha1cryptoserviceprovider.aspx" target="_new"&gt;SHA1CryptoServiceProvider&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.tripledes.aspx" target="_new"&gt;TripleDES&lt;/a&gt; and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.tripledescryptoserviceprovider.aspx" target="_new"&gt;TripleDESCryptoServiceProvider&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.md5.aspx" target="_new"&gt;MD5&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.md5cryptoserviceprovider.aspx" target="_new"&gt;MD5CryptoServiceProvider&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.rsa.aspx" target="_new"&gt;RSA&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.rsacryptoserviceprovider.aspx" target="_new"&gt;RSACryptoServiceProvider&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.randomnumbergenerator.aspx" target="_new"&gt;RandomNumberGenerator&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.cryptoconfig.aspx" target="_new"&gt;CryptoConfig&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.rc2.aspx" target="_new"&gt;RC2&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.rc2cryptoserviceprovider.aspx" target="_new"&gt;RC2CryptoServiceProvider&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.asymmetricalgorithm.aspx" target="_new"&gt;AssymetricAlgorithm&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.protecteddata.aspx" target="_new"&gt;ProtectedData&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.protectedmemory.aspx" target="_new"&gt;ProtectedMemory&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.rijndaelmanaged.aspx" target="_new"&gt;RijndaelManaged&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.rijndaelmanagedtransform.aspx" target="_new"&gt;RijndaelManagedTransform&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.cspparameters.aspx" target="_new"&gt;CspParameters&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.cryptoapitransform.aspx" target="_new"&gt;CryptoAPITransform&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;Hash-based Message Authentication Code (HMAC)&lt;br /&gt;    &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.hmacmd5.aspx" target="_new"&gt;HMACMD5&lt;/a&gt; class&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.hmacripemd160.aspx" target="_new"&gt;HMACRIPEMD160&lt;/a&gt; class&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.hmacsha1.aspx" target="_new"&gt;HMACSHA1&lt;/a&gt; class&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.hmacsha256.aspx" target="_new"&gt;HMACSHA256&lt;/a&gt; class&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.hmacsha384.aspx" target="_new"&gt;HMACSHA384&lt;/a&gt; class&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.cryptography.hmacsha512.aspx" target="_new"&gt;HMACSHA512&lt;/a&gt; class&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;Control &lt;a href="http://msdn2.microsoft.com/es-ar/library/5ba4k1c5.aspx" target="_new"&gt;permissions&lt;/a&gt; for resources by using the &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.aspx" target="_new"&gt;System.Security.Permissions&lt;/a&gt; classes. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.aspx" target="_new"&gt;System.Security.Permissions&lt;/a&gt; namespace)&lt;br /&gt;  &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.securitypermission.aspx" target="_new"&gt;SecurityPermission&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.principalpermission.aspx" target="_new"&gt;PrincipalPermission&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.fileiopermission.aspx" target="_new"&gt;FileIOPermission&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.strongnameidentitypermission.aspx" target="_new"&gt;StrongNameIdentityPermission&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.uipermission.aspx" target="_new"&gt;UIPermission&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.urlidentitypermission.aspx" target="_new"&gt;UrlIdentityPermission&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.publisheridentitypermission.aspx" target="_new"&gt;PublisherIdentityPermission&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.gacidentitypermission.aspx" target="_new"&gt;GacIdentityPermission&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.filedialogpermission.aspx" target="_new"&gt;FileDialogPermission&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.dataprotectionpermission.aspx" target="_new"&gt;DataProtectionPermission&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.environmentpermission.aspx" target="_new"&gt;EnvironmentPermission&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.iunrestrictedpermission.aspx" target="_new"&gt;IUnrestrictedPermission&lt;/a&gt; interface&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.registrypermission.aspx" target="_new"&gt;RegistryPermission&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.isolatedstoragefilepermission.aspx" target="_new"&gt;IsolatedStorageFilePermission&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.keycontainerpermission.aspx" target="_new"&gt;KeyContainerPermission&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.reflectionpermission.aspx" target="_new"&gt;ReflectionPermission&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.storepermission.aspx" target="_new"&gt;StorePermission&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.siteidentitypermission.aspx" target="_new"&gt;SiteIdentityPermission&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.permissions.zoneidentitypermission.aspx" target="_new"&gt;ZoneIdentityPermission&lt;/a&gt; class&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/c1k0eed6.aspx" target="_new"&gt;Control code privileges&lt;/a&gt; by using &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.aspx" target="_new"&gt;System.Security.Policy&lt;/a&gt; classes. (Refer&lt;br /&gt;        &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.aspx" target="_new"&gt;System.Security.Policy&lt;/a&gt; namespace)&lt;br /&gt;  &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.applicationsecurityinfo.aspx" target="_new"&gt;ApplicationSecurityInfo&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.applicationsecuritymanager.aspx" target="_new"&gt;ApplicationSecurityManager&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.applicationtrust.aspx" target="_new"&gt;ApplicationTrust&lt;/a&gt; class and&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.applicationtrustcollection.aspx" target="_new"&gt;ApplicationTrustCollection&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.evidence.aspx" target="_new"&gt;Evidence&lt;/a&gt; class and&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.permissionrequestevidence.aspx" target="_new"&gt;PermissionRequestEvidence&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.codegroup.aspx" target="_new"&gt;CodeGroup&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.filecodegroup.aspx" target="_new"&gt;FileCodeGroup&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.firstmatchcodegroup.aspx" target="_new"&gt;FirstMatchCodeGroup&lt;/a&gt; class,&lt;br /&gt;          &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.netcodegroup.aspx" target="_new"&gt;NetCodeGroup&lt;/a&gt; class, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.unioncodegroup.aspx" target="_new"&gt;UnionCodeGroup&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;Condition classes&lt;br /&gt;    &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.allmembershipcondition.aspx" target="_new"&gt;AllMembershipCondition&lt;/a&gt; class&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.applicationdirectory.aspx" target="_new"&gt;ApplicationDirectory&lt;/a&gt; class and&lt;br /&gt;            &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.applicationdirectorymembershipcondition.aspx" target="_new"&gt;ApplicationDirectoryMembershipCondition&lt;/a&gt; class&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.gacinstalled.aspx" target="_new"&gt;GacInstalled&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.gacmembershipcondition.aspx" target="_new"&gt;GacMembershipCondition&lt;/a&gt; class&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.hash.aspx" target="_new"&gt;Hash&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.hashmembershipcondition.aspx" target="_new"&gt;HashMembershipCondition&lt;/a&gt; class&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.publisher.aspx" target="_new"&gt;Publisher&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.publishermembershipcondition.aspx" target="_new"&gt;PublisherMembershipCondition&lt;/a&gt; class&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.site.aspx" target="_new"&gt;Site&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.sitemembershipcondition.aspx" target="_new"&gt;SiteMembershipCondition&lt;/a&gt; class&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.strongname.aspx" target="_new"&gt;StrongName&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.strongnamemembershipcondition.aspx" target="_new"&gt;StrongNameMembershipCondition&lt;/a&gt; class&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.url.aspx" target="_new"&gt;Url&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.urlmembershipcondition.aspx" target="_new"&gt;UrlMembershipConditon&lt;/a&gt; class&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.zone.aspx" target="_new"&gt;Zone&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.zonemembershipcondition.aspx" target="_new"&gt;ZoneMembershipCondition&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.policylevel.aspx" target="_new"&gt;PolicyLevel&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.policystatement.aspx" target="_new"&gt;PolicyStatement&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.iapplicationtrustmanager.aspx" target="_new"&gt;IApplicationTrustManager&lt;/a&gt; interface, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.imembershipcondition.aspx" target="_new"&gt;IMembershipCondition&lt;/a&gt; interface, and&lt;br /&gt;          &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.policy.iidentitypermissionfactory.aspx" target="_new"&gt;IIdentityPermissionFactory&lt;/a&gt; interface&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/52kd59t0.aspx" target="_new"&gt;Access and modify identity information&lt;/a&gt; by using the &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.principal.aspx" target="_new"&gt;System.Security.Principal&lt;/a&gt; classes.  (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.principal.aspx" target="_new"&gt;System.Security.Principal&lt;/a&gt; namespace)&lt;br /&gt;  &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.principal.genericidentity.aspx" target="_new"&gt;GenericIdentity&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.principal.genericprincipal.aspx" target="_new"&gt;GenericPrincipal&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.principal.windowsidentity.aspx" target="_new"&gt;WindowsIdentity&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.principal.windowsprincipal.aspx" target="_new"&gt;WindowsPrincipal&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.principal.ntaccount.aspx" target="_new"&gt;NTAccount&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.principal.securityidentifier.aspx" target="_new"&gt;SecurityIdentifier&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.principal.iidentity.aspx" target="_new"&gt;IIdentity&lt;/a&gt; interface and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.principal.iprincipal.aspx" target="_new"&gt;IPrincipal&lt;/a&gt; interface&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.principal.windowsimpersonationcontext.aspx" target="_new"&gt;WindowsImpersonationContext&lt;/a&gt; class&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.principal.identityreference.aspx" target="_new"&gt;IdentityReference&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.security.principal.identityreferencecollection.aspx" target="_new"&gt;IdentityReferenceCollection&lt;/a&gt; class    &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;  &lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-8965114570199471304?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/8965114570199471304/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=8965114570199471304' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/8965114570199471304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/8965114570199471304'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2008/11/mcts-70-536-links-msdn-en-castellano-57.html' title='MCTS 70-536 Links a MSDN en castellano 5/7'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-6620738140333308302</id><published>2008-11-04T18:41:00.003-02:00</published><updated>2008-11-04T18:48:50.345-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='70-536'/><title type='text'>MCTS 70-536 Links a MSDN en castellano 4/7</title><content type='html'>&lt;table border="0"&gt;  &lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;  &lt;td width="110"&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;  &lt;td width="800"&gt;&lt;h3&gt;Implementing serialization and input/output functionality in a .NET Framework application&lt;/h3&gt;&lt;ol type="A"&gt;&lt;li&gt;Serialize or deserialize an object or an object graph by using runtime &lt;a href="http://msdn2.microsoft.com/es-ar/library/7ay27kt9.aspx" target="_new"&gt;serialization&lt;/a&gt; techniques. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.aspx" target="_new"&gt;System.Runtime.Serialization&lt;/a&gt; namespace)&lt;br /&gt;   &lt;ul&gt;&lt;li&gt;Serialization interfaces&lt;br /&gt;     &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.ideserializationcallback.aspx" target="_new"&gt;IDeserializationCallback&lt;/a&gt; interface&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.iformatter.aspx" target="_new"&gt;IFormatter&lt;/a&gt; interface and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.iformatterconverter.aspx" target="_new"&gt;IFormatterConverter&lt;/a&gt; interface&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.iserializable.aspx" target="_new"&gt;ISerializable&lt;/a&gt; interface&lt;br /&gt;   &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Serilization attributes&lt;br /&gt;     &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.ondeserializedattribute.aspx" target="_new"&gt;OnDeserializedAttribute&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.ondeserializingattribute.aspx" target="_new"&gt;OnDeserializingAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.onserializedattribute.aspx" target="_new"&gt;OnSerializedAttribute&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.onserializingattribute.aspx" target="_new"&gt;OnSerializingAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.optionalfieldattribute.aspx" target="_new"&gt;OptionalFieldAttribute&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.serializationentry.aspx" target="_new"&gt;SerializationEntry&lt;/a&gt; structure and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.serializationinfo.aspx" target="_new"&gt;SerializationInfo&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.objectmanager.aspx" target="_new"&gt;ObjectManager&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.formatter.aspx" target="_new"&gt;Formatter&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.formatterconverter.aspx" target="_new"&gt;FormatterConverter&lt;/a&gt; class, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.formatterservices.aspx" target="_new"&gt;FormatterServices&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.streamingcontext.aspx" target="_new"&gt;StreamingContext&lt;/a&gt; structure&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;Control the &lt;a href="http://msdn2.microsoft.com/es-ar/library/90c86ass.aspx" target="_new"&gt;serialization of an object into XML&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt; &lt;/span&gt;format by using the &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.xml.serialization.aspx" target="_new"&gt;System.Xml.Serialization&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt; &lt;/span&gt;namespace.&lt;br /&gt;   &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/szzyf24s.aspx" target="_new"&gt;Serialize&lt;/a&gt; and &lt;a href="http://msdn2.microsoft.com/es-ar/library/fa420a9y.aspx" target="_new"&gt;deserialize&lt;/a&gt; objects into XML format by using the &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.xml.serialization.xmlserializer.aspx" target="_new"&gt;XmlSerializer&lt;/a&gt; class.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/2baksw0z.aspx" target="_new"&gt;Control serialization by using serialization attributes&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;Implement &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.xml.serialization.aspx" target="_new"&gt;XML Serialization&lt;/a&gt; interfaces to provide custom formatting for XML serialization.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/17sde2xt.aspx" target="_new"&gt;Delegates and event&lt;/a&gt; handlers are provided by the &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.xml.serialization.aspx" target="_new"&gt;System.Xml.Serialization&lt;/a&gt; namespace&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;Implement custom &lt;a href="http://msdn2.microsoft.com/es-ar/library/7ay27kt9.aspx" target="_new"&gt;serialization&lt;/a&gt; formatting by using the Serialization Formatter classes.&lt;br /&gt;   &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.formatters.soap.soapformatter.aspx" target="_new"&gt;SoapFormatter&lt;/a&gt; class (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.formatters.soap.aspx" target="_new"&gt;System.Runtime.Serialization.Formatters.Soap&lt;/a&gt; namespace)&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.formatters.binary.binaryformatter.aspx" target="_new"&gt;BinaryFormatter&lt;/a&gt; class (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.serialization.formatters.binary.aspx" target="_new"&gt;System.Runtime.Serialization.Formatters.Binary&lt;/a&gt; namespace)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/336wast5.aspx" target="_new"&gt;Access files and folders by using the File System classes&lt;/a&gt;. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.aspx" target="_new"&gt;System.IO&lt;/a&gt; namespace)&lt;br /&gt;   &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.file.aspx" target="_new"&gt;File&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.fileinfo.aspx" target="_new"&gt;FileInfo&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.directory.aspx" target="_new"&gt;Directory&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.directoryinfo.aspx" target="_new"&gt;DirectoryInfo&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.driveinfo.aspx" target="_new"&gt;DriveInfo&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.drivetype.aspx" target="_new"&gt;DriveType&lt;/a&gt; enumeration&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.filesysteminfo.aspx" target="_new"&gt;FileSystemInfo&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.filesystemwatcher.aspx" target="_new"&gt;FileSystemWatcher&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.path.aspx" target="_new"&gt;Path&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.erroreventargs.aspx" target="_new"&gt;ErrorEventArgs&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.erroreventhandler.aspx" target="_new"&gt;ErrorEventHandler&lt;/a&gt; delegate&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.renamedeventargs.aspx" target="_new"&gt;RenamedEventArgs&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.renamedeventhandler.aspx" target="_new"&gt;RenamedEventHandler&lt;/a&gt; delegate&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;Manage &lt;a href="http://msdn2.microsoft.com/es-ar/library/e4y2dch9.aspx" target="_new"&gt;byte streams&lt;/a&gt; by using Stream classes. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.aspx" target="_new"&gt;System.IO&lt;/a&gt; namespace)&lt;br /&gt;   &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.filestream.aspx" target="_new"&gt;FileStream&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.stream.aspx" target="_new"&gt;Stream&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.memorystream.aspx" target="_new"&gt;MemoryStream&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.bufferedstream.aspx" target="_new"&gt;BufferedStream&lt;/a&gt; class&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;Manage the .NET Framework application data by using &lt;a href="http://msdn2.microsoft.com/es-ar/library/e4y2dch9.aspx" target="_new"&gt;Reader and Writer&lt;/a&gt; classes. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.aspx" target="_new"&gt;System.IO&lt;/a&gt; namespace)&lt;br /&gt;   &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.stringreader.aspx" target="_new"&gt;StringReader&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.stringwriter.aspx" target="_new"&gt;StringWriter&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.textreader.aspx" target="_new"&gt;TextReader&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.textwriter.aspx" target="_new"&gt;TextWriter&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.streamreader.aspx" target="_new"&gt;StreamReader&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.streamwriter.aspx" target="_new"&gt;StreamWriter&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.binaryreader.aspx" target="_new"&gt;BinaryReader&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.binarywriter.aspx" target="_new"&gt;BinaryWriter&lt;/a&gt; class&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/336wast5.aspx" target="_new"&gt;Compress or decompress stream&lt;/a&gt; information in a .NET Framework application (refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.compression.aspx" target="_new"&gt;System.IO.Compression&lt;/a&gt; namespace), and improve the security of application data by using isolated storage. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.isolatedstorage.aspx" target="_new"&gt;System.IO.IsolatedStorage&lt;/a&gt; namespace)&lt;br /&gt;   &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.isolatedstorage.isolatedstoragefile.aspx" target="_new"&gt;IsolatedStorageFile&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.isolatedstorage.isolatedstoragefilestream.aspx" target="_new"&gt;IsolatedStorageFileStream&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.compression.deflatestream.aspx" target="_new"&gt;DeflateStream&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.io.compression.gzipstream.aspx" target="_new"&gt;GZipStream&lt;/a&gt; class   &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;    &lt;br /&gt;  &lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-6620738140333308302?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/6620738140333308302/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=6620738140333308302' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/6620738140333308302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/6620738140333308302'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2008/11/mcts-70-536-links-msdn-en-castellano-47.html' title='MCTS 70-536 Links a MSDN en castellano 4/7'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-125333955361573840</id><published>2008-11-04T07:47:00.002-02:00</published><updated>2008-11-04T07:52:16.049-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='70-536'/><title type='text'>70-536 Links a MSDN en español 3/7</title><content type='html'>&lt;table border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="800"&gt;    &lt;h3&gt;Embedding configuration, diagnostic, management, and installation features into a .NET Framework application&lt;/h3&gt;    &lt;ol type="A"&gt;&lt;br /&gt;     &lt;li&gt;Embed &lt;a href="http://msdn2.microsoft.com/es-ar/library/kza1yk3a.aspx" target="_new"&gt;configuration management functionality&lt;/a&gt; into a&lt;br /&gt;     .NET Framework application. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.aspx" target="_new"&gt;System.Configuration&lt;/a&gt; namespace)&lt;br /&gt;   &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.configuration.aspx" target="_new"&gt;Configuration&lt;/a&gt; class and&lt;br /&gt;           &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.configurationmanager.aspx" target="_new"&gt;ConfigurationManager&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.configurationsettings.aspx" target="_new"&gt;ConfigurationSettings&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.configurationelement.aspx" target="_new"&gt;ConfigurationElement&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.configurationelementcollection.aspx" target="_new"&gt;ConfigurationElementCollection&lt;/a&gt; class, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.configurationelementproperty.aspx" target="_new"&gt;ConfigurationElementProperty&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;Implement &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.iconfigurationsectionhandler.aspx" target="_new"&gt;IConfigurationSectionHandler&lt;/a&gt; interface&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.configurationsection.aspx" target="_new"&gt;ConfigurationSection&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.configurationsectioncollection.aspx" target="_new"&gt;ConfigurationSectionCollection&lt;/a&gt; class,  &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.configurationsectiongroup.aspx" target="_new"&gt;ConfigurationSectionGroup&lt;/a&gt; class, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.configurationsectiongroupcollection.aspx" target="_new"&gt;ConfigurationSectionGroupCollection&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;Implement &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.isettingsproviderservice.aspx" target="_new"&gt;ISettingsProviderService&lt;/a&gt; interface&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;Implement &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.iapplicationsettingsprovider.aspx" target="_new"&gt;IApplicationSettingsProvider&lt;/a&gt; interface&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.configurationvalidatorbase.aspx" target="_new"&gt;ConfigurationValidatorBase&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;Implement &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.iconfigurationsystem.aspx" target="_new"&gt;IConfigurationSystem&lt;/a&gt; interface&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;Create a custom Microsoft Windows &lt;a href="http://msdn2.microsoft.com/es-ar/library/9kxfdfxs.aspx" target="_new"&gt;Installer&lt;/a&gt; for the .NET Framework components by using the &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.install.aspx" target="_new"&gt;System.Configuration.Install&lt;/a&gt; namespace, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/kza1yk3a.aspx" target="_new"&gt;configure the .NET Framework applications&lt;/a&gt; by using configuration files, environment variables, and the .NET Framework &lt;a href="http://msdn2.microsoft.com/es-ar/library/2bc0cxhc.aspx" target="_new"&gt;Configuration tool (Mscorcfg.msc)&lt;/a&gt;.&lt;br /&gt;   &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.install.installer.aspx" target="_new"&gt;Installer&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/f4kkd0k5.aspx" target="_new"&gt;Configure which runtime version a .NET Framework application should use&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/4191fzwb.aspx" target="_new"&gt;Configure where the runtime should search for an assembly&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;Configure the location of an assembly and which version of the assembly to use.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;Direct the runtime to use the &lt;a href="http://msdn2.microsoft.com/es-ar/library/cskzh7h6.aspx" target="_new"&gt;DEVPATH environment variable&lt;/a&gt; when you search for assemblies.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.install.assemblyinstaller.aspx" target="_new"&gt;AssemblyInstaller&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.install.componentinstaller.aspx" target="_new"&gt;ComponentInstaller&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;Configure a .NET Framework application by using the .NET Framework &lt;a href="http://msdn2.microsoft.com/es-ar/library/2bc0cxhc.aspx" target="_new"&gt;Configuration tool (Mscorcfg.msc)&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.install.managedinstallerclass.aspx" target="_new"&gt;ManagedInstaller&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.install.installcontext.aspx" target="_new"&gt;InstallContext&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.install.installercollection.aspx" target="_new"&gt;InstallerCollection&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;Implement &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.install.imanagedinstaller.aspx" target="_new"&gt;IManagedInstaller&lt;/a&gt; interface&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.configuration.install.installeventhandler.aspx" target="_new"&gt;InstallEventHandler&lt;/a&gt; delegate&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;Configure concurrent &lt;a href="http://msdn2.microsoft.com/es-ar/library/0xy59wtx.aspx" target="_new"&gt;garbage collection&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/2fs42683.aspx" target="_new"&gt;Register remote objects by using configuration files&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/e6t4tk09.aspx" target="_new"&gt;Manage an event log&lt;/a&gt; by using the &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.aspx" target="_new"&gt;System.Diagnostics&lt;/a&gt; namespace.&lt;br /&gt;   &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/k00ce235.aspx" target="_new"&gt;Write to an event log&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/k6b9a7h8.aspx" target="_new"&gt;Read from an event log&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/49dwckkz.aspx" target="_new"&gt;Create a new event log&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/4z4t818a.aspx" target="_new"&gt;Manage system processes&lt;/a&gt; and &lt;a href="http://msdn2.microsoft.com/es-ar/library/wz3d1wc5.aspx" target="_new"&gt;monitor the performance&lt;/a&gt; of a .NET Framework  application by using the diagnostics functionality of the .NET Framework 2.0. (Refer&lt;br /&gt;         &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.aspx" target="_new"&gt;System.Diagnostics&lt;/a&gt; namespace)&lt;br /&gt;   &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/348b2484.aspx" target="_new"&gt;Get a list of all running processes&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/fd89becd.aspx" target="_new"&gt;Retrieve information about the current process&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/27688t9c.aspx" target="_new"&gt;Get a list of all modules that are loaded by a process&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.performancecounter.aspx" target="_new"&gt;PerformanceCounter&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.performancecountercategory.aspx" target="_new"&gt;PerformanceCounterCategory&lt;/a&gt;, and  &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.countercreationdata.aspx" target="_new"&gt;CounterCreationData&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/z01ckb6y.aspx" target="_new"&gt;Start a process both by using and by not using command-line arguments&lt;/a&gt;.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.stacktrace.aspx" target="_new"&gt;StackTrace&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.stackframe.aspx" target="_new"&gt;StackFrame&lt;/a&gt; class&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/7fe0dd2y.aspx" target="_new"&gt;Debug&lt;/a&gt; and trace a .NET Framework application by using the &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.aspx" target="_new"&gt;System.Diagnostics&lt;/a&gt; namespace.&lt;br /&gt;   &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.debug.aspx" target="_new"&gt;Debug&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.debugger.aspx" target="_new"&gt;Debugger&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.trace.aspx" target="_new"&gt;Trace&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.correlationmanager.aspx" target="_new"&gt;CorrelationManager&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.tracelistener.aspx" target="_new"&gt;TraceListener&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.tracesource.aspx" target="_new"&gt;TraceSource&lt;/a&gt; class,  &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.traceswitch.aspx" target="_new"&gt;TraceSwitch&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.xmlwritertracelistener.aspx" target="_new"&gt;XmlWriterTraceListener&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.delimitedlisttracelistener.aspx" target="_new"&gt;DelimitedListTraceListener&lt;/a&gt; class, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.eventlogtracelistener.aspx" target="_new"&gt;EventlogTraceListener&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;Debugger attributes&lt;br /&gt;     &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.debuggerbrowsableattribute.aspx" target="_new"&gt;DebuggerBrowsableAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.debuggerdisplayattribute.aspx" target="_new"&gt;DebuggerDisplayAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.debuggerhiddenattribute.aspx" target="_new"&gt;DebuggerHiddenAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.debuggernonusercodeattribute.aspx" target="_new"&gt;DebuggerNonUserCodeAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.debuggerstepperboundaryattribute.aspx" target="_new"&gt;DebuggerStepperBoundaryAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.debuggerstepthroughattribute.aspx" target="_new"&gt;DebuggerStepThroughAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.debuggertypeproxyattribute.aspx" target="_new"&gt;DebuggerTypeProxyAttribute&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.diagnostics.debuggervisualizerattribute.aspx" target="_new"&gt;DebuggerVisualizerAttribute&lt;/a&gt; class&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;Embed &lt;a href="http://msdn2.microsoft.com/es-ar/library/ms257340%28VS.80%29.aspx" target="_new"&gt;management information&lt;/a&gt; and events into a .NET Framework application. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.management.aspx" target="_new"&gt;System.Management&lt;/a&gt; namespace)&lt;br /&gt;   &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/ms186120%28VS.80%29.aspx" target="_new"&gt;Retrieve a collection of Management objects&lt;/a&gt; by using the &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.management.managementobjectsearcher.aspx" target="_new"&gt;ManagementObjectSearcher&lt;/a&gt; class and its derived classes.&lt;br /&gt;     &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Enumerate all disk drivers, network adapters, and processes on a computer.&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;Retrieve information about all network connections.&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;Retrieve information about all services that are paused.&lt;br /&gt;   &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.management.managementquery.aspx" target="_new"&gt;ManagementQuery&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.management.eventquery.aspx" target="_new"&gt;EventQuery&lt;/a&gt; class&lt;br /&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.management.objectquery.aspx" target="_new"&gt;ObjectQuery&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/ms186151.aspx" target="_new"&gt;Subscribe to management events&lt;/a&gt; by using the&lt;br /&gt;           &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.management.managementeventwatcher.aspx" target="_new"&gt;ManagementEventWatcher&lt;/a&gt; class.&lt;/li&gt;&lt;br /&gt;   &lt;/ul&gt;&lt;br /&gt;   &lt;/li&gt;&lt;/ol&gt;       &lt;br /&gt;   &lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-125333955361573840?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/125333955361573840/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=125333955361573840' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/125333955361573840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/125333955361573840'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2008/11/70-536-links-msdn-en-espaol-37.html' title='70-536 Links a MSDN en español 3/7'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-6296798519871794440</id><published>2008-11-03T10:37:00.001-02:00</published><updated>2008-11-03T10:44:20.521-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='70-536'/><title type='text'>70-536 Links a MSDN en castellano 2/7</title><content type='html'>&lt;h3&gt;Implementing service processes, threading, and application domains in a .NET Framework application&lt;br /&gt;       &lt;/h3&gt;&lt;ol type="A"&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/9k985bc9.aspx" target="_new"&gt;Implement&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/es-ar/library/sd8zc8ha.aspx" target="_new"&gt;install&lt;/a&gt;, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/htkdfk18.aspx" target="_new"&gt;control&lt;/a&gt; a service. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.serviceprocess.aspx" target="_new"&gt;System.ServiceProcess&lt;/a&gt; namespace)&lt;br /&gt;         &lt;ul&gt;&lt;li&gt;Inherit from &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.serviceprocess.servicebase.aspx" target="_new"&gt;ServiceBase&lt;/a&gt; class&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.serviceprocess.servicecontroller.aspx" target="_new"&gt;ServiceController&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.serviceprocess.servicecontrollerpermission.aspx" target="_new"&gt;ServiceControllerPermission&lt;/a&gt; class&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.serviceprocess.serviceinstaller.aspx" target="_new"&gt;ServiceInstaller&lt;/a&gt; and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.serviceprocess.serviceprocessinstaller.aspx" target="_new"&gt;ServiceProcessInstaller&lt;/a&gt; class&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.serviceprocess.sessionchangedescription.aspx" target="_new"&gt;SessionChangeDescription&lt;/a&gt; structure and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.serviceprocess.sessionchangereason.aspx" target="_new"&gt;SessionChangeReason&lt;/a&gt; enumeration &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;       &lt;/li&gt;&lt;li&gt;Develop &lt;a href="http://msdn2.microsoft.com/es-ar/library/ms173178.aspx" target="_new"&gt;multithreaded&lt;/a&gt; .NET Framework applications. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.aspx" target="_new"&gt;System.Threading&lt;/a&gt; namespace)&lt;br /&gt;         &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.thread.aspx" target="_new"&gt;Thread&lt;/a&gt; class&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.threadpool.aspx" target="_new"&gt;ThreadPool&lt;/a&gt; class&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.threadstart.aspx" target="_new"&gt;ThreadStart&lt;/a&gt; delegate, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.parameterizedthreadstart.aspx" target="_new"&gt;ParameterizedThreadStart&lt;/a&gt; delegate, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.synchronizationcontext.aspx" target="_new"&gt;SynchronizationContext&lt;/a&gt; class&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.timeout.aspx" target="_new"&gt;Timeout&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.timer.aspx" target="_new"&gt;Timer&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.timercallback.aspx" target="_new"&gt;TimerCallback&lt;/a&gt; delegate, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.waitcallback.aspx" target="_new"&gt;WaitCallback&lt;/a&gt; delegate, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.waithandle.aspx" target="_new"&gt;WaitHandle&lt;/a&gt; class, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.waitortimercallback.aspx" target="_new"&gt;WaitOrTimerCallback&lt;/a&gt; delegate&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.threadexceptioneventargs.aspx" target="_new"&gt;ThreadExceptionEventArgs&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.threadexceptioneventhandler.aspx" target="_new"&gt;ThreadExceptionEventHandler&lt;/a&gt; delegate&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.threadstate.aspx" target="_new"&gt;ThreadState&lt;/a&gt; enumeration and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.threadpriority.aspx" target="_new"&gt;ThreadPriority&lt;/a&gt; enumeration&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.readerwriterlock.aspx" target="_new"&gt;ReaderWriterLock&lt;/a&gt; class&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.autoresetevent.aspx" target="_new"&gt;AutoResetEvent&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.manualresetevent.aspx" target="_new"&gt;ManualResetEvent&lt;/a&gt; class&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.iasyncresult.aspx" target="_new"&gt;IAsyncResult&lt;/a&gt; interface (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.aspx" target="_new"&gt;System&lt;/a&gt; namespace)&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.eventwaithandle.aspx" target="_new"&gt;EventWaitHandle&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.registeredwaithandle.aspx" target="_new"&gt;RegisterWaitHandle&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.sendorpostcallback.aspx" target="_new"&gt;SendOrPostCallback&lt;/a&gt; delegate, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.iocompletioncallback.aspx" target="_new"&gt;IOCompletionCallback&lt;/a&gt; delegate&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.interlocked.aspx" target="_new"&gt;Interlocked&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.nativeoverlapped.aspx" target="_new"&gt;NativeOverlapped&lt;/a&gt; structure, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.overlapped.aspx" target="_new"&gt;Overlapped&lt;/a&gt; class&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.executioncontext.aspx" target="_new"&gt;ExecutionContext&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.hostexecutioncontext.aspx" target="_new"&gt;HostExecutionContext&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.hostexecutioncontextmanager.aspx" target="_new"&gt;HostExecutionContextManager&lt;/a&gt; class, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.contextcallback.aspx" target="_new"&gt;ContextCallback&lt;/a&gt; delegate&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.lockcookie.aspx" target="_new"&gt;LockCookie&lt;/a&gt; structure, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.monitor.aspx" target="_new"&gt;Monitor&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.mutex.aspx" target="_new"&gt;Mutex&lt;/a&gt; class, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.threading.semaphore.aspx" target="_new"&gt;Semaphore&lt;/a&gt; class &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;       &lt;/li&gt;&lt;li&gt;Create a unit of isolation for common language runtime in a .NET Framework application by using &lt;a href="http://msdn2.microsoft.com/es-ar/library/dah4cwez.aspx" target="_new"&gt;application domains&lt;/a&gt;. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.aspx" target="_new"&gt;System&lt;/a&gt; namespace)&lt;br /&gt;         &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/6s0z09xw.aspx" target="_new"&gt;Create an application domain&lt;/a&gt;.&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/c5b8a8f9.aspx" target="_new"&gt;Unload an application domain&lt;/a&gt;.&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/c8hk0245.aspx" target="_new"&gt;Configure an application domain&lt;/a&gt;.&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/dxh1dy9h.aspx" target="_new"&gt;Retrieve setup information from an application domain&lt;/a&gt;.&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/dah4cwez.aspx" target="_new"&gt;Load assemblies into an application domain&lt;/a&gt;.&lt;br /&gt;       &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;     &lt;hr color="#66ccff"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-6296798519871794440?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/6296798519871794440/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=6296798519871794440' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/6296798519871794440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/6296798519871794440'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2008/11/70-536-links-msdn-en-castellano-27.html' title='70-536 Links a MSDN en castellano 2/7'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-652473946810684193</id><published>2008-11-03T06:57:00.005-02:00</published><updated>2008-11-03T07:33:37.044-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='70-536'/><title type='text'>70-536 Links a MSDN en castellano 1/7</title><content type='html'>&lt;table border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="800"&gt;&lt;h3&gt;Developing applications that use system types and collections&lt;br /&gt;   &lt;/h3&gt;    &lt;ol type="A"&gt;&lt;li&gt;Manage data in a .NET Framework application by using the .NET Framework 2.0 system &lt;a href="http://msdn2.microsoft.com/es-ar/library/ms173104.aspx" target="_new"&gt;types&lt;/a&gt;. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.aspx" target="_new"&gt;System&lt;/a&gt; namespace)&lt;br /&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/s1ax56ch.aspx" target="_new"&gt;Value types&lt;/a&gt;&lt;br /&gt;   &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/1t3y8s4s.aspx" target="_new"&gt;Nullable types&lt;/a&gt;&lt;br /&gt; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/490f96s2.aspx" target="_new"&gt;Reference types&lt;/a&gt;&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/z0w1kczw.aspx" target="_new"&gt;Attributes&lt;/a&gt;&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/512aeb7t.aspx" target="_new"&gt;Generic types&lt;/a&gt;&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/ms173160.aspx" target="_new"&gt;Exception classes&lt;/a&gt;&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/yz2be5wk.aspx" target="_new"&gt;Boxing and UnBoxing&lt;/a&gt;&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.runtime.compilerservices.typeforwardedtoattribute.aspx" target="_new"&gt;TypeForwardedToAttribute Class&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;Manage a group of associated data in a .NET Framework application by using &lt;a href="http://msdn2.microsoft.com/es-ar/library/7y3x785f.aspx" target="_new"&gt;collections&lt;/a&gt;. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.aspx" target="_new"&gt;System.Collections&lt;/a&gt; namespace)&lt;br /&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.arraylist.aspx" target="_new"&gt;ArrayList&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;li&gt;Collection interfaces&lt;br /&gt;   &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.icollection.aspx" target="_new"&gt;ICollection&lt;/a&gt; interface and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.ilist.aspx" target="_new"&gt;IList&lt;/a&gt; interface&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.icomparer.aspx" target="_new"&gt;IComparer&lt;/a&gt; interface and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.iequalitycomparer.aspx" target="_new"&gt;IEqualityComparer&lt;/a&gt; interface&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.idictionary.aspx" target="_new"&gt;IDictionary&lt;/a&gt; interface and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.idictionaryenumerator.aspx" target="_new"&gt;IDictionaryEnumerator&lt;/a&gt; interface&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.ienumerable.aspx" target="_new"&gt;IEnumerable&lt;/a&gt; interface and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.ienumerator.aspx" target="_new"&gt;IEnumerator&lt;/a&gt; interface&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.ihashcodeprovider.aspx" target="_new"&gt;IHashCodeProvider&lt;/a&gt; interface&lt;br /&gt; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/dscyy5s0.aspx" target="_new"&gt;Iterators&lt;/a&gt;&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.hashtable.aspx" target="_new"&gt;Hashtable&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.collectionbase.aspx" target="_new"&gt;CollectionBase&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.readonlycollectionbase.aspx" target="_new"&gt;ReadOnlyCollectionBase&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.dictionarybase.aspx" target="_new"&gt;DictionaryBase&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.dictionaryentry.aspx" target="_new"&gt;DictionaryEntry&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.comparer.aspx" target="_new"&gt;Comparer&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.queue.aspx" target="_new"&gt;Queue&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.sortedlist.aspx" target="_new"&gt;SortedList&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.bitarray.aspx" target="_new"&gt;BitArray&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.stack.aspx" target="_new"&gt;Stack&lt;/a&gt; class&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;Improve type safety and application performance in a .NET Framework application by using &lt;a href="http://msdn2.microsoft.com/es-ar/library/ms172181.aspx" target="_new"&gt;generic collections&lt;/a&gt;. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.generic.aspx" target="_new"&gt;System.Collections.Generic&lt;/a&gt; namespace)&lt;br /&gt; &lt;ul&gt;&lt;li&gt;Collection.Generic interfaces&lt;br /&gt;   &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/4d7sx9hd.aspx" target="_new"&gt;Generic IComparable&lt;/a&gt; interface (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.aspx" target="_new"&gt;System&lt;/a&gt; namespace)&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/92t2ye13.aspx" target="_new"&gt;Generic ICollection&lt;/a&gt; interface and &lt;a href="http://msdn2.microsoft.com/es-ar/library/5y536ey6.aspx" target="_new"&gt;Generic IList&lt;/a&gt; interface&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/8ehhxeaf.aspx" target="_new"&gt;Generic IComparer&lt;/a&gt; interface and &lt;a href="http://msdn2.microsoft.com/es-ar/library/ms132151.aspx" target="_new"&gt;Generic IEqualityComparer&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt; &lt;/span&gt;interface&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/s4ys34ea.aspx" target="_new"&gt;Generic IDictionary&lt;/a&gt; interface&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/9eekhta0.aspx" target="_new"&gt;Generic IEnumerable&lt;/a&gt; interface and &lt;a href="http://msdn2.microsoft.com/es-ar/library/78dfe2yb.aspx" target="_new"&gt;Generic IEnumerator&lt;/a&gt; interface&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/cfcwey02.aspx" target="_new"&gt;IHashCodeProvider&lt;/a&gt; interface&lt;br /&gt; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Generic Dictionary&lt;br /&gt;   &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/xfhwa508.aspx" target="_new"&gt;Generic Dictionary&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/k3z2hhax.aspx" target="_new"&gt;Generic Dictionary.Enumerator&lt;/a&gt; structure&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/3fcwy8h6.aspx" target="_new"&gt;Generic Dictionary.KeyCollection&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/8a7wk24w.aspx" target="_new"&gt;Dictionary.KeyCollection.Enumerator&lt;/a&gt; structure&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/x8bctb9c.aspx" target="_new"&gt;Generic Dictionary.ValueCollection&lt;/a&gt; class and&lt;br /&gt;           &lt;a href="http://msdn2.microsoft.com/es-ar/library/ax9d1dzh.aspx" target="_new"&gt;Dictionary.ValueCollection.Enumerator&lt;/a&gt; structure&lt;br /&gt; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/cfttsh47.aspx" target="_new"&gt;Generic Comparer&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/ms132123.aspx" target="_new"&gt;Generic EqualityComparer&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/5tbh8a42.aspx" target="_new"&gt;Generic KeyValuePair&lt;/a&gt; structure&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/6sh2ey19.aspx" target="_new"&gt;Generic List&lt;/a&gt; class, &lt;a href="http://msdn2.microsoft.com/es-ar/library/x854yt9s.aspx" target="_new"&gt;Generic List.Enumerator&lt;/a&gt; structure, and &lt;a href="http://msdn2.microsoft.com/es-ar/library/ms132319.aspx" target="_new"&gt;Generic SortedList&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/7977ey2c.aspx" target="_new"&gt;Generic Queue&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/1ttzy8a4.aspx" target="_new"&gt;Generic Queue.Enumerator&lt;/a&gt; structure&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/f7fta44c.aspx" target="_new"&gt;Generic SortedDictionary&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;li&gt;Generic LinkedList&lt;br /&gt;   &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/he2s3bh7.aspx" target="_new"&gt;Generic LinkedList&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/2s4xk11f.aspx" target="_new"&gt;Generic LinkedList.Enumerator&lt;/a&gt; structure&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/ahf4c754.aspx" target="_new"&gt;Generic LinkedListNode&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/3278tedw.aspx" target="_new"&gt;Generic Stack&lt;/a&gt; class and &lt;a href="http://msdn2.microsoft.com/es-ar/library/x2bb46cs.aspx" target="_new"&gt;Generic Stack.Enumerator&lt;/a&gt; structure&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;Manage data in a .NET Framework application by using &lt;a href="http://msdn2.microsoft.com/es-ar/library/7hyz15wf.aspx" target="_new"&gt;specialized collections&lt;/a&gt;. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.specialized.aspx" target="_new"&gt;System.Collections.Specialized&lt;/a&gt; namespace)&lt;br /&gt; &lt;ul&gt;&lt;li&gt;Specialized String classes&lt;br /&gt;   &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.specialized.stringcollection.aspx" target="_new"&gt;StringCollection&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.specialized.stringdictionary.aspx" target="_new"&gt;StringDictionary&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.specialized.stringenumerator.aspx" target="_new"&gt;StringEnumerator&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Specialized Dictionary&lt;br /&gt;   &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.specialized.hybriddictionary.aspx" target="_new"&gt;HybridDictionary&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.specialized.iordereddictionary.aspx" target="_new"&gt;IOrderedDictionary&lt;/a&gt; interface and &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.specialized.ordereddictionary.aspx" target="_new"&gt;OrderedDictionary&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.specialized.listdictionary.aspx" target="_new"&gt;ListDictionary&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Named collections&lt;br /&gt;   &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.specialized.nameobjectcollectionbase.aspx" target="_new"&gt;NameObjectCollectionBase&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.specialized.nameobjectcollectionbase.keyscollection.aspx" target="_new"&gt;NameObjectCollectionBase.KeysCollection&lt;/a&gt; class&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.specialized.namevaluecollection.aspx" target="_new"&gt;NameValueCollection&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.specialized.collectionsutil.aspx" target="_new"&gt;CollectionsUtil&lt;/a&gt;&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.specialized.bitvector32.aspx" target="_new"&gt;BitVector32&lt;/a&gt; structure and&lt;br /&gt;         &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.collections.specialized.bitvector32.section.aspx" target="_new"&gt;BitVector32.Section&lt;/a&gt; structure&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;Implement .NET Framework &lt;a href="http://msdn2.microsoft.com/es-ar/library/87d83y5b.aspx" target="_new"&gt;interfaces&lt;/a&gt; to cause components to comply with standard contracts. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.aspx" target="_new"&gt;System&lt;/a&gt; namespace)&lt;br /&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.icomparable.aspx" target="_new"&gt;IComparable&lt;/a&gt; interface&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.idisposable.aspx" target="_new"&gt;IDisposable&lt;/a&gt; interface&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.iconvertible.aspx" target="_new"&gt;IConvertible&lt;/a&gt; interface&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.icloneable.aspx" target="_new"&gt;ICloneable&lt;/a&gt; interface&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/ms131187.aspx" target="_new"&gt;IEquatable&lt;/a&gt; interface&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.iformattable.aspx" target="_new"&gt;IFormattable&lt;/a&gt; interface&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;Control interactions between .NET Framework application components by using&lt;br /&gt;   &lt;a href="http://msdn2.microsoft.com/es-ar/library/awbftdfh.aspx" target="_new"&gt;events&lt;/a&gt; and &lt;a href="http://msdn2.microsoft.com/es-ar/library/ms173171.aspx" target="_new"&gt;delegates&lt;/a&gt;. (Refer &lt;a href="http://msdn2.microsoft.com/es-ar/library/system.aspx" target="_new"&gt;System&lt;/a&gt; namespace)&lt;br /&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.delegate.aspx" target="_new"&gt;Delegate&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.eventargs.aspx" target="_new"&gt;EventArgs&lt;/a&gt; class&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/es-ar/library/system.eventhandler.aspx" target="_new"&gt;EventHandler&lt;/a&gt; delegates    &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt; &lt;br /&gt;&lt;br /&gt; &lt;hr color="#66ccff"&gt;&lt;br /&gt;&lt;br /&gt; &lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-652473946810684193?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/652473946810684193/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=652473946810684193' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/652473946810684193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/652473946810684193'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2008/11/70-536-links-msdn-en-castellano-17.html' title='70-536 Links a MSDN en castellano 1/7'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-8729629106962875476</id><published>2008-07-02T20:42:00.001-03:00</published><updated>2008-07-02T20:42:29.889-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial CSharp'/><title type='text'>CH01- Resumen - Preguntas y Respuestas</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Resumen Capítulo 1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;*- La plataforma .NET da soporte al CLS (Common Language Specification), el cual detalla el comportamiento que deben tener los lenguajes compatibles. Incluye la especificación de tipos comunes (CTS – Common Type Specifications) detallando los tipos para todos los lenguajes .NET&lt;br /&gt;&lt;br /&gt;*- C# es el lenguaje ideal para el desarrollo de cualquier tipo de aplicaciones de la plataforma .NET&lt;br /&gt;&lt;br /&gt;*- El programa Hola Mundo ilustra los fundamentos de cualquier programa en C#&lt;br /&gt;&lt;br /&gt;*- Los pasos a seguir son: escribir el código fuente en un archivo .cs, compilar y ejecutar.&lt;br /&gt;&lt;br /&gt;*- El producto de la compilación no es código nativo sino que es código IL (Microsoft Intermediate Language). El CLR () convierte este código IL en un programa ejecutable en un proceso conocido como JIT (Just in Time)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Preguntas y Respuestas – Capítulo 1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1-    Qué es ADO.NET?&lt;br /&gt;Es la tecnología incluida en el Framework como reemplazo de ADO; provee un modelo de objetos para interactuar con proveedores de datos como por ejemplo bases de datos relacionales.&lt;br /&gt;&lt;br /&gt;2-    Qué es MSIL?&lt;br /&gt;Es el código generado por el compilador. Se trata de código intermedio que es utilizado por el JIT para la generación de código ejecutable. La principal ventaja de este código IL es que diferentes lenguajes compatibles con .NET generan IL casi idéntico lo que permite utilizar componentes desarrollados en un lenguaje diferente siempre y cuando respete el CLS.&lt;br /&gt;&lt;br /&gt;3-    Cuales son los tipos de comentarios soportados en C#?&lt;br /&gt;Existen tres tipos de comentarios soportados en C#. Los comentarios de bloque (/**/), los comentarios que afectan una sola línea de código (//) y por ultimo los comentarios de documentación XML (///)&lt;br /&gt;&lt;br /&gt;4-    Qué es un namespace?&lt;br /&gt;Es simplemente una forma de organizar la jerarquía de clases comunes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;En la próxima entrada comenzaremos con el capítulo 2 de este tutorial donde veremos los fundamentos del lenguaje&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-8729629106962875476?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/8729629106962875476/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=8729629106962875476' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/8729629106962875476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/8729629106962875476'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2008/07/ch01-resumen-preguntas-y-respuestas.html' title='CH01- Resumen - Preguntas y Respuestas'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-2024965888352381387</id><published>2008-07-01T17:29:00.001-03:00</published><updated>2008-07-01T17:35:08.680-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial CSharp'/><title type='text'>CH01-02 - Primer programa en C# - Parte II</title><content type='html'>En esta entrada seguiremos viendo los elementos constitutivos de un programa simple en C#&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Comentarios:&lt;/span&gt;&lt;br /&gt;En este ejemplo simple podemos ver una línea que comienza con dos barras (//)&lt;br /&gt;&lt;br /&gt;//Imprimir en pantalla&lt;br /&gt;&lt;br /&gt;Esta línea se trata de un comentario en C#, no es mas que una nota o recordatorio o como su nombre lo indica un comentario :) que el desarrollador puede escribir sin afectar en nada la normal ejecución del programa. C# tiene soporte para tres tipos de comentarios como se detalla en la siguiente lista:&lt;br /&gt;&lt;br /&gt;* Comentarios de bloque al estilo de C /* */&lt;br /&gt;* Comentarios de línea al estilo C++&lt;br /&gt;* Comentarios de documentación XML ///&lt;br /&gt;&lt;br /&gt;Los comentarios al estilo C son utilizados para comentar bloques de código completos usualmente de muchas líneas. Comienzan con barra-asterisco y cierran con asterisco-barra. Por lo general se utiliza para deshabilitar de forma temporal bloques de código.&lt;br /&gt;&lt;br /&gt;Los comentarios mas comunes que vamos a encontrar o utilizar son los del estilo de C++ de las doble barra (//) Este tipo de comentarios se aplican a una línea en particular desde su ubicación hasta el final de la línea, esto significa que podemos utilizarlos tanto al comienzo como en cualquier parte de la línea. Los ejemplos de abajo ilustran lo expuesto.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//Sumamos dos números&lt;br /&gt;c =  a + b;&lt;br /&gt;&lt;br /&gt;c = a + b; //Sumamos dos numeros&lt;br /&gt;&lt;br /&gt;El tercer tipo de comentarios son los comentarios de documentación XML. Aprenderemos más sobre esta poderosa característica mas adelante en este tutorial. Básicamente son comentarios pensados en describir las características de nuestros métodos, tipos retornados y parámetros recibidos para de tal forma que con una herramienta se colecte esta información para generar documentación a partir de estos comentarios especiales.&lt;br /&gt;&lt;br /&gt;Los comentarios son una técnica muy poderosa si se utilizan bien. Una de las claves para tener éxito con los comentarios es agregar el propósito de&lt;br /&gt;una determinada línea de código mas que la descripción de lo que la línea de código hace. Código bien escrito es código bien comentado. Mas de una vez nos sorprendemos de volver sobre código que escribimos hace no mucho y nos preguntamos cual fue el propósito de escribirlo de esa forma. Los comentarios también serán útiles para los pobres desdichados que deban leer nuestro código, por lo tanto no debemos escatimar esfuerzos en lograr un buen equilibrio entre cantidad y calidad de comentarios en nuestras aplicaciones.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Console&lt;/span&gt;&lt;br /&gt;La última línea de nuestro programa de ejemplo es la que realiza todo el trabajo&lt;br /&gt;&lt;br /&gt;System.Console.WriteLine("Hola Mundo!");&lt;br /&gt;&lt;br /&gt;Lo primeros que tenemos que decir es que se trata de una aplicación de consola. Las aplicaciones de consola corren en una ventana de consola usualmente llamada una consola DOS. La consola es nuestro monitor y la aplicación simplemente escribe en la consola, por ello, en el monitor.&lt;br /&gt;&lt;br /&gt;Las aplicaciones de consola son muy simples, con poco o nada de soporte para Interfaces Gráficas de Usuario (GUI). En los primeros capítulos de este tutorial vamos a realizar un uso intensivo de este tipo de aplicaciones de consola ya que nos permiten enfocarnos en las nociones del lenguaje sin tener que lidiar con las complicaciones de las interfaces de usuario.&lt;br /&gt;&lt;br /&gt;Para este ejemplo diremos que C# maneja su consola a través del objeto Console. WriteLine es uno de los métodos de este objeto, el cual recibe un string como parámetro y su función es, como ya adivinaron, escribir en la consola (nuestro monitor)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Namespaces&lt;/span&gt;&lt;br /&gt;Otra de las cosas que notamos es que Console esta precedida por System. System es el espacio de nombres (namespace) donde reside la clase Console. La librería de clases del framework de .NET posee miles de clases sumamente útiles. Cada clase posee un número de métodos. Los espacios de nombre ayudan a organizar de forma ordenada el agrupamiento de clases afines. Accedemos a las clases dentro de un namespace de la misma forma que invocamos un metodo dentro de una clase, con el operador punto (.). De esta forma accedemos a System.Console o bien System.Console.WriteLine("")&lt;br /&gt;&lt;br /&gt;En la próxima entrada veremos un resumen de conceptos claves de este capítulo I, como así también preguntas y respuestas relacionadas a los temas expuestos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-2024965888352381387?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/2024965888352381387/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=2024965888352381387' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/2024965888352381387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/2024965888352381387'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2008/07/ch01-02-primer-programa-en-c-parte-ii.html' title='CH01-02 - Primer programa en C# - Parte II'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-5524150098326911744</id><published>2008-06-30T10:33:00.002-03:00</published><updated>2008-06-30T10:43:28.971-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial CSharp'/><title type='text'>CH01-02 - Primer programa en C# - Parte I</title><content type='html'>Como marca la tradición de cada libro y tutorial de cualquier lenguaje de programación, comenzaremos por el programa más simple que se puede escribir y veremos en detalle sus partes constitutivas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Código Fuente:&lt;/span&gt;&lt;br /&gt;Todo programa consiste básicamente de una cierta cantidad de lineas de código fuente. Este código fuente es el que el desarrollador escribe en un archivo (en nuestro caso, archivos con extensión .cs).&lt;br /&gt;Luego este archivo de código fuente es compilado a IL (Microsoft Intermediate Languaje). Al ejecutar el programa, el CLR convierte el código IL en código nativo para la plataforma sobre la que se esta ejecutando. Una vez compilado este código se guarda en un cache de memoria de tal forma que la próxima vez que es invocado está listo para ejecutarse sin necesidad de volver a compilarse.&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; Tutorial&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; HolaMundo&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;//Imprimir en pantalla&lt;/span&gt;&lt;br /&gt;            System.Console.WriteLine(&lt;span class="str"&gt;"Hola Mundo!"&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Aunque es un ejemplo de lo mas simple, es muy útil para ilustrar diferentes conceptos del lenguaje. Veamos en detalle parte por parte.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;-Clases:&lt;/span&gt;&lt;br /&gt;Lo primero que notamos es la palabra reservada "class" en la tercera linea: **class HolaMundo**&lt;br /&gt;La palabra reservada class crea un nuevo tipo. Un tipo es una cosa y el mundo está lleno de cosas como una mesa, una silla, el telefono, etc. El perro, mi hermano, mis hijos son cosas también. El cielo es una cosa, las ideas del amor y el honor son cosas.&lt;br /&gt;Como podemos ver, somos una especie orientada a cosas (objetos) y C# es un lenguaje orientado a objetos también. Algunas cosas son concretas (mesa, silla) y otras son abstractas (amor, libertad) y C# tiene la habilidad de representar ambos tipos.&lt;br /&gt;&lt;br /&gt;Una clase define una nueva cosa o una nueva entidad. Un objeto es una instancia de una clase. Por ejemplo la palabra perro describe la generalidad de la idea y mi perro Snoopy es una instancia de la clase perro, es un perro especifico.&lt;br /&gt;De la misma forma, en una aplicación Windows, la palabra botón describe como son los botones y que capacidades poseen los botnoes de una aplicación y los botones Aceptar, Cancelar o Imprimir son instancias especificas de la clase botón.&lt;br /&gt;&lt;br /&gt;Las clases definen nuevos tipos. Desde la perspectiva del lenguaje, un tipo describe el tamaño y las capacidades de los objetos. C# provee un número de tipos propios (built-in) como int, long, double, y al mismo tiempo como desarrolladores podemos crear nuestros propios tipos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Metodos:&lt;/span&gt;&lt;br /&gt;Si miramos el codigo dentro de la clase, encontramos el metod main:&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="rem"&gt;//Imprimir en pantalla&lt;/span&gt;&lt;br /&gt;            System.Console.WriteLine(&lt;span class="str"&gt;"Hola Mundo!"&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Cada clase posee propiedades y comportamiento. De hecho, en C#, todo lo que sucede, sucede dentro de una clase. Por esta razón una clase no es solo una palabra clave del lenguaje sino es un concepto clave sobre el cual se fundamentan muchos otros conceptos.&lt;br /&gt;El comportamiento de una clase está definido por sus métodos (funciones miembros). Los métodos son tipicamente nombres de acciones que un objeto determinado puede realizar, como por ejemplo ListarNombres o WriteLine. Cada programa debe tener un método especial llamado &lt;span style="font-weight: bold; font-style: italic;"&gt;Main()&lt;/span&gt;, el cual no tiene un nombre de acción pero tiene un rol especial en cada programa: es el punto de entrada, esto significa que lo primero que se invoca al llamar a un programa es este método.&lt;br /&gt;&lt;br /&gt;Otro aspecto de este metodo es que debe ser marcado como estatico, es decir anteponiendo la palabra reservada static. Mas adelante veremos que significa marcar un metodo con esta palabra reservada. Mientras tanto lo que necesitamos saber es que todo metodo Main() debe ser marcado como static.&lt;br /&gt;&lt;br /&gt;De forma general, un metodo posee: un nombre, parametros y un tipo retornado. Cuando un métodono devuelve ningún tipo este tipo es void.&lt;br /&gt;Por ejemplo veamos el siguiente codigo:&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;int&lt;/span&gt; SumarNumeros(&lt;span class="kwrd"&gt;int&lt;/span&gt; num1, &lt;span class="kwrd"&gt;int&lt;/span&gt; num2)&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;int&lt;/span&gt; resultado = 0;&lt;br /&gt;    resultado = num1 + num2;&lt;br /&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; resultado;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;El nombre del metodo es SumarNumeros al cual se le pasan dos parametros de tipo entero y retorna otro tipo entero. Las variables que se pasan por parámetro actúan como varibales locales al método y son destruídas al finalizar la invocación al método. &lt;br /&gt;&lt;br /&gt;Veremos en mayor detalle los conceptos de variables, su ámbito y alcance, como asi también invocaciones a métodos. Lo que necesitamos concoer a este nivel es la utilidad de los metodos en una clase: manipular los datos de la clase y permitir la interacción con otros objetos.&lt;br /&gt;&lt;br /&gt;En la siguiente entrada continuaremos con el análisis de nuestro primer programa en CSharp. Veremos otros conceptos claves: comentartios, el objeto Console y namespaces.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-5524150098326911744?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/5524150098326911744/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=5524150098326911744' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/5524150098326911744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/5524150098326911744'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2008/06/ch01-02-primer-programa-en-c-parte-i.html' title='CH01-02 - Primer programa en C# - Parte I'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-2495051813067168112</id><published>2008-06-22T20:46:00.004-03:00</published><updated>2008-12-14T12:13:02.348-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial CSharp'/><title type='text'>CH01-01 Arquitectura .NET y Lenguaje C#</title><content type='html'>Con esta entrada vamos a comenzar un tutorial en C# (pronunciado CSharp) y temas relacionados con el .NET Framework 2.0.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Objetivos en la creación de C# (CSharp)&lt;/span&gt;&lt;br /&gt;Este lenguaje fue diseñado con los siguientes objetivos en mente:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Simple:&lt;/span&gt; C# es un lenguaje simple con 80 palabras reservadas y nua docena de tipos&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Seguro:&lt;/span&gt; C# es un lenguaje type-safe (seguro en tipos) lo que significa que el compilador está preparado para asistirnos en la prevención de errores mientras desarrollamos&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Orientado a Objetos:&lt;/span&gt; C# fue construido sobre las lecciones aprendidas de C++ y Java en lo que se refiere a orientación a objetos. Los objetos son los elementos fundamentales de toda aplicación y representan entidades reales del dominio de la aplicación que estamos construyendo.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Centralizado en Internet: &lt;/span&gt;Este objetivo está relacionado con la idea de integrar las aplicaciones de escritorio con aplicaciones de Internet aprovechando la gran propagación de entornos conectados.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- De alto rendimiento: &lt;/span&gt;Finalmente, C# no sacrifica las características de alto rendimiento de los lenguajes de programación de la familia de C.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;El Common Language Runtime (CLR)&lt;/span&gt;&lt;br /&gt;El CLR ofrece la plataforma orientada a objetos para el desarrollo de aplicaciones tanto Windows como Web. Es el CLR quien interpreta el código de la aplicación e interactúa con la plataforma subyacente.&lt;br /&gt;El CLR además es el host para el compilador JIT (Just in Time), los tipos intrínsecos y el soporte para el manejo de excepciones.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Arquitectura .NET&lt;/span&gt;&lt;br /&gt;El framework de .NET ha sido construido en una capa por encima del CLR, el cual a su vez reside una capa por encima de la plataforma Windows. La siguiente figura nos ayuda a entender su arquitectura.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_f-l7YecKCvE/SF7k8n431pI/AAAAAAAAAEQ/t-xO9JZV__8/s1600-h/NET-Architecture.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_f-l7YecKCvE/SF7k8n431pI/AAAAAAAAAEQ/t-xO9JZV__8/s400/NET-Architecture.JPG" alt="" id="BLOGGER_PHOTO_ID_5214857148692420242" border="0" /&gt;&lt;/a&gt;Vamos a explicar el gráfico comenzando por la capa inferior hasta la superior.&lt;br /&gt;Como ya dijimos, la plataforma Windows es la primera capa por sobre la cual se encuentra el CLR con los elementos que ya explicamos.&lt;br /&gt;&lt;br /&gt;Por encima del CLR encontramos las clases del framework propiamente dicho. El Framework es una colección de clases que de otra forma deberíamos escribir nosotros mismos. Estas clases incluyen entre otras, clases para el manejo de hilos, streams, seguridad, trabajo con archivos, etc.&lt;br /&gt;&lt;br /&gt;ADO.NET es la capa construida encima del .NET Framework que nos provee una abstracción de alto nivel para trabajar con tablas y sus relaciones en una base de datos. Veremos en mas detalle mas adelante.&lt;br /&gt;&lt;br /&gt;Por encima de todas las capas anteriores, encontramos el soporte para la creación de aplicaciones Windows, Web y Web Services. Los Web Services son aplicaciones web sin interfaz de usuario y proveen funcionalidad a otras aplicaciones. Ejemplos de web services son los servicios de clima proveyendo una determinada ubicación.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MSIL&lt;/span&gt;&lt;br /&gt;MSIL (Microsot Intermediate Language) o simplemente IL es el código que genera la compilación de nuestro código fuente (nuestros archivos .cs). Se trata de código intermedio tal como su nombre lo indica y este código intermedio es traducido por el CLR a código nativo. Este código intermedio es el que permite utilizar diferentes componentes escritos en diferentes lenguajes que soportados por .NET. Podríamos por ejemplo en una aplicación escrita en C# utilizar un componente escrito en VB.NET ya que el código IL es virtualmente idéntico.&lt;br /&gt;&lt;br /&gt;Esto ha sido todo por hoy, en la próxima entrada vamos a comenzar con nuestro primer programa escrito en C#. Como en todo tutorial, tendremos nuestro "Hola Mundo!" y explicaremos sus partes constitutivas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-2495051813067168112?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/2495051813067168112/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=2495051813067168112' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/2495051813067168112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/2495051813067168112'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2008/06/ch01-01-arquitectura-net-y-lenguaje-c.html' title='CH01-01 Arquitectura .NET y Lenguaje C#'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_f-l7YecKCvE/SF7k8n431pI/AAAAAAAAAEQ/t-xO9JZV__8/s72-c/NET-Architecture.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-3000744446180852514</id><published>2008-06-05T09:41:00.002-03:00</published><updated>2008-06-05T09:45:52.609-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSHARP'/><title type='text'>Clases publicas por defecto en Visual Studio</title><content type='html'>Hace tiempo publiqué un post acerca de la generacion de clases en Visual Studio.&lt;br /&gt;Por defecto las crea privadas y por lo general no lo tenemos en cuenta sino hasta la hora de la compilación.&lt;br /&gt;Como ya estaba cansado de esto y queria crearlas publicas por defecto, encontré un post muy útil donde explicaba exactamente lo que necesitaba.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;El truco es el siguiente:&lt;/span&gt;&lt;br /&gt;Vamos a la carpeta donde están instalados los templates de cada item del IDE de Visual Studio. En mi caso uso Visual Studio 2005 y la ruta puede variar dependiendo tambien del idioma que tengamos en el Sistema Operativo.&lt;br /&gt;La ruta en cuestión es &lt;span style="font-weight: bold;"&gt;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ItemTemplates\CSharp\1033&lt;/span&gt;&lt;br /&gt;Alli encontraremos un archivo Class.zip que al abrirlo veremos que contiene un archivo .cs que lista lo siguiente:&lt;br /&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Text;&lt;br /&gt;&lt;br /&gt;namespace $rootnamespace$&lt;br /&gt;{&lt;br /&gt;    class $safeitemrootname$&lt;br /&gt;    {&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Lo unico que hay que hacer es modificar este template de acuerdo a nuestras preferencias agregando public.&lt;br /&gt;&lt;br /&gt;Tambien podemos agregar los namespaces que son más utilizados en nuestras aplicaciones y por ejemplo podria quedar algo como&lt;br /&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Text;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;using System.IO;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;using System.Reflection;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;namespace $rootnamespace$&lt;br /&gt;{&lt;br /&gt;   &lt;span style="font-weight: bold;"&gt; public &lt;/span&gt;class $safeitemrootname$&lt;br /&gt;    {&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;El último paso que necesitamos es recargar el template modificado para que Visual Studio lo use. Esto se logra con el siguiente comando:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;devenv /installvstemplates&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esto toma un poco de tiempo, asi que paciencia.&lt;br /&gt;Eso es todo, ahora cada nueva clase se creará con el template que nosotros hemos definido&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-3000744446180852514?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/3000744446180852514/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=3000744446180852514' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/3000744446180852514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/3000744446180852514'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2008/06/clases-publicas-por-defecto-en-visual.html' title='Clases publicas por defecto en Visual Studio'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-4504490463089821566</id><published>2008-05-08T11:52:00.004-03:00</published><updated>2008-05-08T11:58:19.410-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='70-536'/><category scheme='http://www.blogger.com/atom/ns#' term='CSHARP'/><title type='text'>Examen 70-536. MSDN Rampup. Herramientas y links</title><content type='html'>Luego de una ausencia importante, volvemos a publicar :)&lt;br /&gt;&lt;br /&gt;En esta entrada les quiero contar que me estoy preparando para rendir la certificación de Microsoft: TS: Microsoft .NET Framework 2.0—Application Development Foundation&lt;br /&gt;El exámen es el 70-536:&lt;br /&gt;&lt;a href="http://www.microsoft.com/learning/exams/70-536.mspx"&gt;http://www.microsoft.com/learning/exams/70-536.mspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Voy a ir agregando entradas referidas a este tema en los próximos meses, pero les voy adelantando los libros y links que estoy utilizando, como así también una iniciativa de Microsoft llamada MSDN Rampup para promover esta certificación.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;- Libro:&lt;/strong&gt; "MCTS Self-Paced Training Kit (Exam 70-536): Microsoft .NET Framework 2.0 Application Development Foundation". Es la guía recomendada  de forma oficial para autoaprendizaje. Es un libro bastante extenso con 16 capítulos dedicados solo al Framework 2.0.&lt;br /&gt;Lo pueden encontrar en Amazon:&lt;br /&gt;&lt;a href="http://www.amazon.com/MCTS-Self-Paced-Training-Exam-70-536/dp/0735622779/ref=pd_bxgy_b_text_b"&gt;http://www.amazon.com/MCTS-Self-Paced-Training-Exam-70-536/dp/0735622779/ref=pd_bxgy_b_text_b&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;- Libro:&lt;/strong&gt; "Programming Microsoft® Visual C#® 2005: The Language". Es el otro libro recomendado por Microsoft para la preparación del examen 70-536. Es un libro más que interesante que desarrolla con buena profundidad las clases del Framework 2.0.&lt;br /&gt;En Amazon:&lt;br /&gt;&lt;a href="http://www.amazon.com/Programming-Microsoft%C2%AE-Visual-2005-Developer/dp/0735621810/ref=pd_sim_b_title_6"&gt;http://www.amazon.com/Programming-Microsoft%C2%AE-Visual-2005-Developer/dp/0735621810/ref=pd_sim_b_title_6&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;- Libro:&lt;/strong&gt; CLR via C#. Si bien no está recomendado para este examen sino para un examen posterior, cayó en mis manos y me pareció realmente muy buen libro y de gran ayuda para este examen. El complemento perfecto para el libro anterior.&lt;br /&gt;También lo pueden encontrar en Amazon:&lt;br /&gt;&lt;a href="http://www.amazon.com/CLR-via-Second-Pro-Developer/dp/0735621632/ref=pd_sim_b_title_10"&gt;http://www.amazon.com/CLR-via-Second-Pro-Developer/dp/0735621632/ref=pd_sim_b_title_10&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;- Link:&lt;/strong&gt; Página de Public Joe: Este recurso es de lo mas interesantes ya que el buen amigo Joe se tomó la tarea de buscar en MSDN todos los links de los temas necesarios para el examen.&lt;br /&gt;&lt;a href="http://www.publicjoe.f9.co.uk/536/70-536.html"&gt;http://www.publicjoe.f9.co.uk/536/70-536.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;-&lt;/strong&gt; &lt;strong&gt;MSDN Rampup:&lt;/strong&gt; Este es un programa que permite tomar contacto con algunas de las prestaciones del framework. Eligiendo el track "Visual Studio 2002/2003 Developer" se accede a una serie de trainings en 4 niveles cada uno con su examen. Al concluir todo el programa (los 4 niveles con sus exámenes), se accede a una serie de premios que incluyen:&lt;br /&gt;1) voucher de descuento de 50% para rendir el examen,&lt;br /&gt;2) voucher 50% descuento para la colección de E-learning&lt;br /&gt;3) voucher de 30% de descuento para la compra de la guía oficial de autoaprendizaje.&lt;br /&gt;Link a MSDN Rampup:&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/rampup/default.aspx"&gt;http://msdn.microsoft.com/en-us/rampup/default.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Esto es todo por el momento, es una cantidad importante de material y cada uno aporta lo suyo.&lt;br /&gt;Espero que les sea de utilidad.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-4504490463089821566?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/4504490463089821566/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=4504490463089821566' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/4504490463089821566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/4504490463089821566'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2008/05/examen-70-536-msdn-rampup-herramientas.html' title='Examen 70-536. MSDN Rampup. Herramientas y links'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-6400400993851416982</id><published>2008-03-04T17:30:00.003-02:00</published><updated>2008-12-14T12:13:02.519-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Introduccion a AJAX, extensiones AJAX y Toolkit</title><content type='html'>Para comenzar a hablar de estos temas vamos a valernos de un mapa que tuve que confeccionar con contenidos introductorios al mundo de AJAX y ASP.NET&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_f-l7YecKCvE/R82kfqC5HyI/AAAAAAAAAD8/VMpphsYd2aw/s1600-h/AJAX-Intro.jpeg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5173972410687889186" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_f-l7YecKCvE/R82kfqC5HyI/AAAAAAAAAD8/VMpphsYd2aw/s400/AJAX-Intro.jpeg" border="0" /&gt;&lt;/a&gt; Con esta entrada vamos a comenzar a escribir acerca de AJAX, la implementación de Microsoft, es decir las extensiones de ASP.NET AJAX y por supuesto el AJAX Control Toolkit.&lt;br /&gt;&lt;br /&gt;Anteriormente hemos visto como se realiza el download y la instalación de estos componentes; comenzaremos a realizar un poco de repaso por la teoría y también vamos a ver implementaciones de código de las extensiones de ASP.NET AJAX los controles del toolkit.&lt;br /&gt;&lt;br /&gt;Para comenzar vamos a basarnos en este mapa y voy a ir agregando información acerca de cada uno de los nodos del mismo.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;Como siempre todos sus comentarios son bienvenidos.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-6400400993851416982?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/6400400993851416982/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=6400400993851416982' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/6400400993851416982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/6400400993851416982'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2008/03/introduccion-ajax-extensiones-ajax-y.html' title='Introduccion a AJAX, extensiones AJAX y Toolkit'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_f-l7YecKCvE/R82kfqC5HyI/AAAAAAAAAD8/VMpphsYd2aw/s72-c/AJAX-Intro.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-2414402580429640399</id><published>2008-03-01T19:15:00.004-02:00</published><updated>2008-12-14T12:13:03.801-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utilidades'/><title type='text'>Resharper 3.0 - Buscar y navegar</title><content type='html'>&lt;span style="" lang="ES-TRAD"&gt;Siguiendo con la serie de entradas dedicadas a Resharper 3.0, en esta entrada vamos a ver la categoría Navegación y búsqueda. Hay muchas prestaciones y características. A continuación enumero solo algunas.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;span style="font-weight: bold;"&gt;Ir a tipo por nombre:&lt;/span&gt;&lt;br /&gt;A través de un atajo de teclado, en este caso CTRL+N podemos encontrar rápidamente un archivo de nuestra solución. Con esta funcionalidad podemos ingresar parte del nombre del archivo y Resharper genera de forma dinámica una lista de las clases, archivo o carpetas de nuestra solución que respondan al criterio de búsqueda. Esta característica nos permite utilizar caracteres comodines (*, ?). Como podemos observar en la imagen basta con ingresar pag para que Resharper busque todas nuestras clases o carpetas que comienzan con esa combinación de teclas.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_f-l7YecKCvE/R8nHs6tSXUI/AAAAAAAAADE/SZsuX9biIr8/s1600-h/02_001.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_f-l7YecKCvE/R8nHs6tSXUI/AAAAAAAAADE/SZsuX9biIr8/s400/02_001.JPG" alt="" id="BLOGGER_PHOTO_ID_5172885221499100482" border="0" /&gt;&lt;/a&gt;&lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;span style="font-weight: bold;"&gt;Ir a miembro del archivo:&lt;/span&gt;&lt;br /&gt;De la misma forma que buscamos archivos en nuestra solución con la característica anterior, es posible buscar nombres de elementos (atributos, métodos) dentro de un determinado archivo. Para esta funcionalidad existe también un atajo de teclas, en este caso CTRL+F12&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_f-l7YecKCvE/R8nHtKtSXVI/AAAAAAAAADM/S6UGg8GPq1k/s1600-h/02_002.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_f-l7YecKCvE/R8nHtKtSXVI/AAAAAAAAADM/S6UGg8GPq1k/s400/02_002.JPG" alt="" id="BLOGGER_PHOTO_ID_5172885225794067794" border="0" /&gt;&lt;/a&gt;&lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;span style="font-weight: bold;"&gt;Encontrar Usos:&lt;/span&gt;&lt;br /&gt;A través de esta característica, podemos visualizar de forma rápida todos los usos de un determinado elemento (tipo, método, atributo, etc). En este caso, el atajo de teclado es ALT+F7.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;Resharper abre una nueva ventana con los resultados de la búsqueda.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_f-l7YecKCvE/R8nHtatSXWI/AAAAAAAAADU/vGRlJ8mlnaI/s1600-h/02_003.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_f-l7YecKCvE/R8nHtatSXWI/AAAAAAAAADU/vGRlJ8mlnaI/s400/02_003.JPG" alt="" id="BLOGGER_PHOTO_ID_5172885230089035106" border="0" /&gt;&lt;/a&gt;&lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;span style="font-weight: bold;"&gt;Vista de tipo jerárquica:&lt;/span&gt;&lt;br /&gt;Esta característica nos permite ver la jerarquía de clases y herencia para una clase determinada de nuestra solución y poder navegar de forma directa a través de ella, todo esto desde una ventana emergente. En esta caso la combinación de teclas para acceder de modo directo es CTRL+ALT+H.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_f-l7YecKCvE/R8nHtqtSXXI/AAAAAAAAADc/tXSZ16p5IbQ/s1600-h/02_004.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_f-l7YecKCvE/R8nHtqtSXXI/AAAAAAAAADc/tXSZ16p5IbQ/s400/02_004.JPG" alt="" id="BLOGGER_PHOTO_ID_5172885234384002418" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;span style="font-weight: bold;"&gt;Vista de estructura de archivo:&lt;/span&gt;&lt;br /&gt;Con este tipo de vista que básicamente explora la estructura de un determinado archivo de nuestra solución es posible dirigirnos y seleccionar un elemento determinado tales como regiones, atributos y métodos. Una de las cosas que me resultó de lo más atractivo es la sincronización con el editor, de tal forma que si arrastramos un elemento en esta vista (por ejemplo mover la ubicación de un determinado método), automáticamente el código es modificado en el editor. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_f-l7YecKCvE/R8nHtqtSXYI/AAAAAAAAADk/RrFYLtNDBUg/s1600-h/02_005.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_f-l7YecKCvE/R8nHtqtSXYI/AAAAAAAAADk/RrFYLtNDBUg/s400/02_005.JPG" alt="" id="BLOGGER_PHOTO_ID_5172885234384002434" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-TRAD"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-2414402580429640399?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/2414402580429640399/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=2414402580429640399' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/2414402580429640399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/2414402580429640399'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2008/03/resharper-30-buscar-y-navegar.html' title='Resharper 3.0 - Buscar y navegar'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_f-l7YecKCvE/R8nHs6tSXUI/AAAAAAAAADE/SZsuX9biIr8/s72-c/02_001.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-4454019809842983712</id><published>2008-02-29T11:46:00.005-02:00</published><updated>2008-02-29T12:20:47.542-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><title type='text'>AJAX: Tecnologías que la componen</title><content type='html'>&lt;strong&gt;Asynchronous JavaScript and XML, o AJAX&lt;/strong&gt;, es posible gracias a la combinación de tecnologías. Algunas de estas tecnologías son utilizadas del lado del cliente, pero algunas requieren componentes del lado del servidor para trabajar correctamente. Debido a esta característica de tratarse de una serie de tecnologías relacionadas, realizar debug en aplicaciones AJAX puede ser un proceso complicado. Veamos los principales componentes de AJAX:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;- HTML:&lt;/strong&gt; Hypertext Markup Language, o HTML es el standard aceptado para mostrar aplicaciones web tradicionales en un browser y esto no cambia al comenzar a utilizar AJAX. Es posible utilizar el nuevo HTML extensible o XHTML que posee mejoras en la sintaxis, pero en líneas generales podremos crear la interfaz de usuario de la misma forma en que lo veníamos haciendo con este lenguaje.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;- CSS: &lt;/strong&gt;Las hojas de estilo en cascadas o Cascading Style Sheets es el standard utilizado para agregar estilos y diseño a nuestras paginas HTML o XHTML. CSS es extremadamente util ya que permite separar el contenido de la pagina HTML de la forma en la que será visualizado pudiendo almacenarse en un archivo separado y ser aplicado en muchas o todas las paginas de una determinada aplicación.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;- DOM:&lt;/strong&gt; El Document Object Model, o DOM, es una forma de representar HTML o XHTML en una estructura jerárquica y también proveer acceso de forma programática a los elementos de nuestras aplicaciones, ya sea contenido, estilos o información misma de la estructura.- JavaScript: JavaScript es lenguaje mejor soportado y el mas utilizado para agregar funcionalidad del lado del cliente en aplicaciones web. Utilizando JavaScript podemos crear páginas web más dinámicas manipulando DOM desde el cliente respondiendo a eventos generados por el usuario. HTML, CSS, DOM y JavaScript se pueden combinar para crear aplicaciones DHTML (Dynamic HTML).&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;- XML: &lt;/strong&gt;Extensible Markup Language, o XML, es el lenguaje de marcado que se ha convertido en el standard para representar datos en formato de texto e independientes de la plataforma. AJAX utiliza XML para comunicar datos desde el cliente al servidor. Además cuenta con la ventaja de que al tratarse de un standard, existen disponibles muchas herramientas como Stylus Studio o Altova XML SPy.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;- JSON: &lt;/strong&gt;JavaScript Object Notation es un formato para el intercambio de datos que es muy util para la representación de objetos en JavaScript permitiendo la serialización y deserialización de objetos.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;-XMLHTTP: &lt;/strong&gt;El protocolo XMLHTTP es una forma de intercambio de datos en formato XML entre el cliente y el servidor. Se puede acceder a este protocolo del lado del cliente a través del objeto XmlHttpRequest. AJAX combina el uso de este protocolo con la otras tecnologías listadas anteriormente para montar el framework que posibilita la llamada de postbacks de forma asincrónica.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-4454019809842983712?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/4454019809842983712/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=4454019809842983712' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/4454019809842983712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/4454019809842983712'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2008/02/ajax-tecnologas-que-la-componen.html' title='AJAX: Tecnologías que la componen'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-5190785709561326751</id><published>2008-02-28T17:34:00.007-02:00</published><updated>2008-12-14T12:13:05.513-02:00</updated><title type='text'>Revisión de Resharper 3.0 de JetBrains</title><content type='html'>Tuve la oportunidad de utilizar este add-in en mi actual empleo. En mi empleo anterior habia tenido la oportunidad de utilizarlo en su versión 2.5 y los resultados habían sido muy buenos. Con esta nueva versión que nos provee JetBrains, mis expectativas han sido superadas.&lt;br /&gt;&lt;br /&gt;Para conseguirlo visiten &lt;a href="http://www.jetbrains.com/resharper/"&gt;http://www.jetbrains.com/resharper/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Las principales ventajas que he encontrado a este producto son las siguientes:&lt;br /&gt;* Es tanto una herramienta para ser utilizada en tareas de refactoring sino que incrementa la calidad de nuestro código.&lt;br /&gt;* Está perfectamente integrada con el IDE de desarrollo de Visual Studio 2005&lt;br /&gt;* Implementa las mejores prácticas de programación para brindarnos sugerencias a la hora de escribir código.&lt;br /&gt;* Posee una API abierta lo cual posibilita la creación de plugins de terceras partes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Como no existe el producto perfecto, las desventajas también existen:&lt;br /&gt;* Las herramientas para test de unidad (UT) no se integran con Visual Studio Team Suite. Esto podría solucionarse con productos de terceras partes.&lt;br /&gt;* Si bien es mucho más ágil que la versión anterior, aún tiene algunos aspectos de performance que por lo general se mitigan agregando mas RAM.&lt;br /&gt;* Las reglas de análisis de código parecen no ser personalizables y digo parecen porque no lo he podido lograr aún anque necesita mas investigación.&lt;br /&gt;&lt;br /&gt;Mas allá de estas desventajas, se trata de un producto que me resultó de mucha utilidad y ayuda.&lt;br /&gt;Con esta entrada del blog comienzo una serie de entradas en las que voy a mostrar algunas de las características que he tenido la oportunidad de utilizar, testear y aprovechar. Vamos a comenzar separando las prestaciones en diferentes categorías:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;I) Categoría: Análisis de Código&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;a) Análisis dinámico de código&lt;br /&gt;&lt;/strong&gt;Resharper detecta de forma automática e instantánea errores en nuestro código y lo resalta sin que tengamos la necesidad de compilar siquiera. Realiza esta operación mientras estamos trabajando. Si posicionamos el mouse en la sección resaltada aparece un tooltip con la descripción del error&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5172401681196014818" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_f-l7YecKCvE/R8gP7KtSXOI/AAAAAAAAACU/S3ynzFjuXSs/s400/rs_001.JPG" border="0" /&gt; &lt;strong&gt;b) Advertencias&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;Además de los errores y advertencias que son detectables por el compilador, Resharper nos provee advertencias adicionales que pueden llegar a ser errores reaales de código.&lt;br /&gt;Por citar algunos ejemplos nos brinda avisos de casteos redundantes, formateo incorrecto de strings, variables locales declaradas pero nunca utilizadas, etc&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5172401685490982130" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_f-l7YecKCvE/R8gP7atSXPI/AAAAAAAAACc/DQMulMDa-rU/s400/rs_002.JPG" border="0" /&gt; &lt;strong&gt;c) Sugerencias de Código&lt;/strong&gt;&lt;br /&gt;Resharper realiza un análisis en profundidad en la estructura de nuestro código activando sugerencias de código, las cuales no representan que existen errores pero nos proporciona información que es muy útil conocer, dado que están basadas en las mejores prácticas de diseño.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5172401689785949442" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_f-l7YecKCvE/R8gP7qtSXQI/AAAAAAAAACk/hU26S3EHI0E/s400/rs_003.JPG" border="0" /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;d) Quick-fixes&lt;/strong&gt;&lt;br /&gt;Cuando Resharper detecta un error, lo señaliza a traves del ícono de una lampara roja en la parte izquierda de la linea que contiene el error. A través de un shortccut (ALT+ENTER) aparecen las diferentes opciones de fix y al seleccionar la opción que mejor se adecua a nuestras necesidades se corrige automáticamente.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5172401694080916754" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_f-l7YecKCvE/R8gP76tSXRI/AAAAAAAAACs/ujV1TfOascE/s400/rs_004.JPG" border="0" /&gt; &lt;strong&gt;e) Indicador de estado&lt;/strong&gt;&lt;br /&gt;Al abrir un archivo, Resharper ejecuta un análisas en profundidad utilizando las reglas y mejores prácticas y nos informa a traves de códigos de colores el "estado de salud" del código que contiene nuestro archivo. Este indicador de estado lo encontramos en la esquina superior derecha del archivo, pero adicionalmente posee indicadores de color en cada linea (también en la parte derecha de nuestro editor).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5172401694080916770" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_f-l7YecKCvE/R8gP76tSXSI/AAAAAAAAAC0/1dTN6Lsyv5w/s400/rs_005.JPG" border="0" /&gt; &lt;strong&gt;f) Análisis de valor&lt;/strong&gt;&lt;br /&gt;Este tipo de análisis está relacionado a los valores de nuestras variables y objetos. Es utilizada principalmente para detectar valores que pueden estar seteados a null y brindar un aviso inmediatamente. Otra utilización frecuente es avisarnos de que una variable del tipo boolean está siempre seteada a true o a false.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;img id="BLOGGER_PHOTO_ID_5172402411340455218" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_f-l7YecKCvE/R8gQlqtSXTI/AAAAAAAAAC8/8UtScOrojnY/s400/rs_006.JPG" border="0" /&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-5190785709561326751?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/5190785709561326751/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=5190785709561326751' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/5190785709561326751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/5190785709561326751'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2008/02/revisin-de-resharper-30-de-jetbrains.html' title='Revisión de Resharper 3.0 de JetBrains'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_f-l7YecKCvE/R8gP7KtSXOI/AAAAAAAAACU/S3ynzFjuXSs/s72-c/rs_001.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-3285950474814200471</id><published>2007-10-31T21:01:00.001-03:00</published><updated>2007-10-31T21:05:08.797-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSHARP'/><title type='text'>Sistema de Archivos: Unidades de Disco</title><content type='html'>La clase DriveInfo nos brinda los elementos necesarios para poder acceder a la información de las unidades disponibles en nuestro sistema. esto incluye no solo los discos rigidos, sino las unidades de red que tengamos mapeadas, unidades extraibles, etc.-&lt;br /&gt;&lt;br /&gt;Esta clase posee un único metodo estático (&lt;span style="font-weight: bold;"&gt;GetDrives()&lt;/span&gt;) el cual devuelve la lista de todas las unidades de nuestro sistema.&lt;br /&gt;&lt;br /&gt;Las instancias de esta clase cuentan con las siguientes propiedades:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- AvailableFreeSpace: &lt;/span&gt;Retorna el espacio disponible de una unidad (en bytes). Puede diferir del valor retornado por TotalFreeSpace, dependiendo de las cuotas de discos.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- DriveFormat: &lt;/span&gt;Retorna el formato de la unidad tal como FAT32 o NTFS.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- DriveType: &lt;/span&gt;Retorna una enumeración (ver el ejemplo) para el tipo de la unidad (Fijo, Optico, Red, etc.)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- IsReady: &lt;/span&gt;Retorna el estado de la unidad. Especifica si la unidad esta lista para ser accedida (por ejemplo no es posible acceder a mi unidad de CD mientras escucho mi CD de musica)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Name: &lt;/span&gt;El nombre de la unidad.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- RootDirectory: &lt;/span&gt;Retorna un objeto DirectoryInfo que representa el directorio raiz de la unidad.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- TotalFreeSpace: &lt;/span&gt;Retorna el total de espacio libre en la unidad (en bytes).&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- TotalSize: &lt;/span&gt;Retorna el tamaño total de la unidad.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- VolumeLabel:&lt;/span&gt; Retorna o escribe una etiqueta para unidades que no sean de solo lectura (CD/DVD).&lt;br /&gt;&lt;br /&gt;Veamos un ejemplo utilizando algunos de estos conceptos:&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; Exam70536.FileSystemTest&lt;br /&gt;{&lt;br /&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt; {&lt;br /&gt;     &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; HARD_DRIVES = &lt;span class="str"&gt;"Unidades de Discos duros"&lt;/span&gt;;&lt;br /&gt;     &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; NETWORK_DRIVES = &lt;span class="str"&gt;"Unidades de Red"&lt;/span&gt;;&lt;br /&gt;     &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; OPTICAL_DRIVES = &lt;span class="str"&gt;"Unidades de CD/DVD"&lt;/span&gt;;&lt;br /&gt;     &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; REMOVABLE_DRIVES = &lt;span class="str"&gt;"Unidades Extraibles"&lt;/span&gt;;&lt;br /&gt;     &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; LINE = &lt;span class="str"&gt;"--------------------------------------------"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;     {&lt;br /&gt;         ViewSystemDrives();&lt;br /&gt;         Console.ReadKey();&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ViewSystemDrives()&lt;br /&gt;     {&lt;br /&gt;         DriveInfo[] drives = DriveInfo.GetDrives();&lt;br /&gt;         List&amp;lt;DriveInfo&amp;gt; hardDrives = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;         List&amp;lt;DriveInfo&amp;gt; opticalDrives = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;         List&amp;lt;DriveInfo&amp;gt; netDrives = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;         List&amp;lt;DriveInfo&amp;gt; remDrives = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;      &lt;br /&gt;         &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;         {&lt;br /&gt;             hardDrives = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;DriveInfo&amp;gt;();&lt;br /&gt;             opticalDrives = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;DriveInfo&amp;gt;();&lt;br /&gt;             netDrives = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;DriveInfo&amp;gt;();&lt;br /&gt;             remDrives = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;DriveInfo&amp;gt;();&lt;br /&gt;&lt;br /&gt;             &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (DriveInfo drive &lt;span class="kwrd"&gt;in&lt;/span&gt; drives)&lt;br /&gt;             {                                                    &lt;br /&gt;                 &lt;span class="kwrd"&gt;switch&lt;/span&gt; (drive.DriveType)&lt;br /&gt;                 {&lt;br /&gt;                     &lt;span class="kwrd"&gt;case&lt;/span&gt; DriveType.CDRom:&lt;br /&gt;                         &lt;span class="kwrd"&gt;if&lt;/span&gt; (drive.IsReady)&lt;br /&gt;                             opticalDrives.Add(drive);&lt;br /&gt;                         &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                     &lt;span class="kwrd"&gt;case&lt;/span&gt; DriveType.Fixed:&lt;br /&gt;                         hardDrives.Add(drive);&lt;br /&gt;                         &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                     &lt;span class="kwrd"&gt;case&lt;/span&gt; DriveType.Network:&lt;br /&gt;                         netDrives.Add(drive);&lt;br /&gt;                         &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                     &lt;span class="kwrd"&gt;case&lt;/span&gt; DriveType.NoRootDirectory:&lt;br /&gt;                         &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                     &lt;span class="kwrd"&gt;case&lt;/span&gt; DriveType.Ram:&lt;br /&gt;                         &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                     &lt;span class="kwrd"&gt;case&lt;/span&gt; DriveType.Removable:&lt;br /&gt;                         remDrives.Add(drive);&lt;br /&gt;                         &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                     &lt;span class="kwrd"&gt;case&lt;/span&gt; DriveType.Unknown:&lt;br /&gt;                         &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                     &lt;span class="kwrd"&gt;default&lt;/span&gt;:&lt;br /&gt;                         &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;                 }&lt;br /&gt;             }&lt;br /&gt;&lt;br /&gt;             Console.WriteLine(HARD_DRIVES);&lt;br /&gt;             Console.WriteLine(LINE);&lt;br /&gt;             &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (DriveInfo hDrive &lt;span class="kwrd"&gt;in&lt;/span&gt; hardDrives)&lt;br /&gt;             {&lt;br /&gt;                 Console.WriteLine(&lt;span class="str"&gt;"{0}  Tamaño:{1}GB  Espacio disponible:{2}GB"&lt;/span&gt;,&lt;br /&gt;                     hDrive.Name,&lt;br /&gt;                     hDrive.TotalSize / 1024 / 1024 / 1024,&lt;br /&gt;                     hDrive.AvailableFreeSpace / 1024 / 1024 / 1024);&lt;br /&gt;             }&lt;br /&gt;&lt;br /&gt;             Console.WriteLine();&lt;br /&gt;             Console.WriteLine(OPTICAL_DRIVES);&lt;br /&gt;             Console.WriteLine(LINE);&lt;br /&gt;             &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (DriveInfo oDrive &lt;span class="kwrd"&gt;in&lt;/span&gt; opticalDrives)&lt;br /&gt;             {&lt;br /&gt;                 Console.WriteLine(&lt;span class="str"&gt;"{0}"&lt;/span&gt;, oDrive.Name);&lt;br /&gt;             }&lt;br /&gt;&lt;br /&gt;             Console.WriteLine();&lt;br /&gt;             Console.WriteLine(REMOVABLE_DRIVES);&lt;br /&gt;             Console.WriteLine(LINE);&lt;br /&gt;             &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (DriveInfo rDrive &lt;span class="kwrd"&gt;in&lt;/span&gt; remDrives)&lt;br /&gt;             {&lt;br /&gt;                 Console.WriteLine(&lt;span class="str"&gt;"{0}"&lt;/span&gt;, rDrive.Name);&lt;br /&gt;             }&lt;br /&gt;&lt;br /&gt;             Console.WriteLine();&lt;br /&gt;             Console.WriteLine(NETWORK_DRIVES);&lt;br /&gt;             Console.WriteLine(LINE);&lt;br /&gt;             &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (DriveInfo nDrive &lt;span class="kwrd"&gt;in&lt;/span&gt; netDrives)&lt;br /&gt;             {&lt;br /&gt;                 Console.WriteLine(&lt;span class="str"&gt;"{0}"&lt;/span&gt;, nDrive.Name);&lt;br /&gt;             }          &lt;br /&gt;         }&lt;br /&gt;         &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)&lt;br /&gt;         {&lt;br /&gt;             Console.WriteLine(ex.Message);&lt;br /&gt;         }&lt;br /&gt;     }&lt;br /&gt; } &lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-3285950474814200471?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/3285950474814200471/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=3285950474814200471' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/3285950474814200471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/3285950474814200471'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2007/10/sistema-de-archivos-unidades-de-disco.html' title='Sistema de Archivos: Unidades de Disco'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-7741867598016170401</id><published>2007-08-29T16:22:00.000-03:00</published><updated>2007-08-30T08:02:45.722-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>ASP.NET AJAX Extensions: Introduccion</title><content type='html'>AJAX  es un término genérico para definir una colección de tecnologías y procesos que podemos utilizar en nuestras aplicaciones web. ASP.NET AJAX es la implementación comenzada por Microsoft y que luego pasó a ser mantenida por una comunidad e incluye varios beneficios para los desarrolladores.&lt;br /&gt;&lt;br /&gt;Muchos desarrolladores hemos encontrado un poco complicado crear aplicaciones con AJAX debido a la complejidad relacionada con JavaScript para implementar funcionalidad AJAX.&lt;br /&gt;&lt;br /&gt;ASP.NET AJAX combina una extensa librería de código con una coleccion de componentes del lado del servidor que hacen la vida de los desarrolladores mucho mas simple y pueden ser utilizadas en nuestras aplicaciones AJAX-enabled. Algunos de los beneficios principales de la utilización de esta tecnología harán que nuestras aplicaciones web sean:&lt;br /&gt;&lt;br /&gt;- Más dinámicas.&lt;br /&gt;- Con mejores tiempos de respuesta.&lt;br /&gt;- Más fáciles de utilizar.&lt;br /&gt;- Más interesantes desde el punto de vista de usuario.&lt;br /&gt;- Compatibles con la gran mayoria de los browsers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Funcionalidad del lado del Cliente:&lt;/strong&gt;&lt;br /&gt;Del lado del cliente, ASP.NET AJAX provee un conjunto de archivos con código JavaScript conocidos como AJAX Library lista para ser agregada a nuestras aplicaciones web. Estos archivos. Estos archivos usan extensiones del lenguaje JavaScript para hacer posible que el código sea parecido a C#, incluyendo el uso de estructuras de Programación Orientada a Objetos (POO) . Esto nos permite a los desarrolles agregar codigo JavaScript a nuestras aplicaciones web de una forma mucho mas fácil. Además, esta librería trabaja con todos los browsers actuales liberando al desarrollador de la tediosa tarea de escribir código específico para cada browser.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Funcionalidad del lado del Servidor:&lt;/strong&gt;&lt;br /&gt;Para los desarrolladores ASP.NET 2.0 está disponible una serie de controles de servidor conocido como AJAX extensions, estos controles del lado del servidor permiten escribir muy pocas o ninguna linea de código JavaScript. Todos los controles de servidor generan el código JavaScript necesario. Algunos de estos controles conocidos como extenders afectan la funcionalidad o comportamiento de otros controles en vez de proveer su propia interfaz de usuario. De esta forma, podemos utilizar por ejemplo un text box extender para agregar la funcionalidad a un text box de nuestra aplicación para por ejemplo agregar la funcionalidad de autocompletar.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Framework Extensible:&lt;/strong&gt;&lt;br /&gt;ASP.NET AJAX nos permite extender o ampliar la funcionalidad existente, tanto de código del lado del cliento como de codigo del lado del servidor. Hay disponibles clases bases y archivos JavaScript de los cuales se pueden heredar y agregar funcionalidad. También se puede descargar el AJAX Control Toolkit con el cual tendremos disponibles muchos componentes listos para utilizar (extenders).&lt;br /&gt;El AJAX Control Toolkit incluye una plantilla para simplificar la creación de componentes del lado del cliente.&lt;br /&gt;&lt;br /&gt;Hasta aqui una breve introduccion. En proximas entradas ire profundizando en conceptos relaciondos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-7741867598016170401?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/7741867598016170401/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=7741867598016170401' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/7741867598016170401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/7741867598016170401'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2007/08/aspnet-ajax-extensions-introduccion.html' title='ASP.NET AJAX Extensions: Introduccion'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-6860078111668336841</id><published>2007-08-03T07:39:00.000-03:00</published><updated>2007-08-03T20:48:06.235-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utilidades'/><title type='text'>Visual Studio add-in: GhostDoc</title><content type='html'>&lt;p&gt;&lt;strong&gt;GhostDoc &lt;/strong&gt;es un add-in para Microsoft Visual Studio 2003/2005 que permite generar de forma automátizada comentarios XML indispensables para la documentación en nuestros desarrollos. El mayor problema de escribir estos comentarios XML es quye es un trabajo tedioso que demanda tiempo y por lo general se termina escribiendo siempre comentarios generales y similares. El objetivo de GhostDoc es automatizar este trabajo tedioso mirando el nombre de nuestras clases y métodos como así también y realizar una "adivinanza" de lo que los comentarios XML deberían incluir. El único problema, pero que a largo plazo redunda en mejoras a nuestro código es que funciona en inglés y de acuerdo a las recomendaciones en la nomenclatura de nuestros elementos (clases, interfaces o métodos). No debería reemplazar nuestra tarea de documentación pero al menos se encarga de la parte repetitiva de la misma.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p class="MsoNormal"&gt; &lt;strong&gt;- Source / Download: &lt;a href="http://www.roland-weigelt.de/ghostdoc/"&gt;http://www.roland-weigelt.de/ghostdoc/&lt;/a&gt;&lt;/strong&gt;  &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;- Licencia:&lt;/strong&gt; FREE. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;- COPYRIGHT&lt;/strong&gt;. Copyright © Roland Weigelt    &lt;/p&gt;&lt;span style=";font-family:Verdana;font-size:9;"  &gt; &lt;/span&gt;  &lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;- Proceso de instalación:&lt;/strong&gt; En el sitio web se pueden obtener los instaladores para las diferentes versiones de VS.NET (2003/2005). El proceso de instalación es bien sencillo y no ofrece complicaciones.  &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;- Integración con el IDE de Desarrollo:&lt;/strong&gt; Luego de la instalación al abrir VS 2005 nos aparecen dos pantallas para terminar de configurar el ad-in. En las mismas se nos requiere asignar un atajo de teclado donde CTRL+Shift+D es el atajo por defecto aunque podemos seleccionar de un drop down list otras opciones e incluso podemos omitir este paso. Este add-in tiene tres formas principales de integrarse a nuestro IDE&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A través de una opcion en el menú Tools -&gt; GhostDoc&lt;/li&gt;&lt;li&gt;A través del menú contextual con la opción "Document this"&lt;/li&gt;&lt;li&gt;A través del atajo de teclado una vez que hemos seleccionado un elemento (clase, interface, método) &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;- Veamos un ejemplo:&lt;/strong&gt; &lt;/p&gt;&lt;p class="MsoNormal"&gt; &lt;!-- {\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20     \cf2 public\cf0  \cf10 DataSet\cf0  getEmployeeList(\cf2 long\cf0  companyId, \cf2 string\cf0  companyName)\par ??    \{\par ??        \cf10 DataSet\cf0  dsEmployees = \cf2 new\cf0  \cf10 DataSet\cf0 ();\par ??        \cf11 // Code for getting DataSet\par ??\cf0         \cf2 return\cf0  dsEmployees; \par ??    \}\par ??} --&gt; &lt;/p&gt;&lt;div face="Courier New" size="10pt" color="black" style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;!-- {\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20     \cf2 public\cf0  \cf10 DataSet\cf0  getEmployeeList(\cf2 long\cf0  companyId, \cf2 string\cf0  companyName)\par ??    \{\par ??        \cf10 DataSet\cf0  dsEmployees = \cf2 new\cf0  \cf10 DataSet\cf0 ();\par ??        \cf11 // Code for getting DataSet\par ??\cf0         \cf2 return\cf0  dsEmployees; \par ??    \}} --&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Supongamos que tenemos el siguiente método&lt;br /&gt;&lt;/p&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; DataSet getEmployeeList(&lt;span class="kwrd"&gt;long&lt;/span&gt; companyId, &lt;span class="kwrd"&gt;string&lt;/span&gt; companyName)&lt;br /&gt;{&lt;br /&gt;DataSet dsEmployees = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataSet();&lt;br /&gt;&lt;span class="rem"&gt;// Code for getting DataSet&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; dsEmployees;&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Al seleccionar el método y utilizar cualquiera de las tres opciones enumeradas anteriormente veremos que se genera de forma automática lo siguiente:&lt;br /&gt;&lt;/p&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;/// Gets the employee list.&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;/// &amp;lt;param name="companyId"&amp;gt;The company id.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;/// &amp;lt;param name="companyName"&amp;gt;Name of the company.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; DataSet getEmployeeList(&lt;span class="kwrd"&gt;long&lt;/span&gt; companyId, &lt;span class="kwrd"&gt;string&lt;/span&gt; companyName)&lt;br /&gt;{&lt;br /&gt;DataSet dsEmployees = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataSet();&lt;br /&gt;&lt;span class="rem"&gt;// Code for getting DataSet&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; dsEmployees;&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Como se puede observar, dependiendo de cuan descriptivo sean nuestros nombres de métodos y parámetros y las recomendaciones seguidas en cuestión de nomenclatura, resulta un complemento de mucha utilidad.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-6860078111668336841?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/6860078111668336841/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=6860078111668336841' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/6860078111668336841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/6860078111668336841'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2007/08/visual-studio-add-in-ghostdoc.html' title='Visual Studio add-in: GhostDoc'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-5136404978349529876</id><published>2007-08-03T07:36:00.000-03:00</published><updated>2007-08-03T20:48:16.228-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utilidades'/><title type='text'>Visual Studio add-in: CopySourceAsHtml</title><content type='html'>&lt;strong&gt;CopySourceAsHtml &lt;/strong&gt;es un add-in para Microsoft Visual Studio 2003/2005 que permite copiar código fuente, coloreo de sintaxis y todo el formato provisto por Visual Studio como HTML para que sea muy cómodo insertarlo en nuestros sitios webs, blogs o foros. En nuestra fase de prueba hemos notado algunos problemas en como se visualiza en Blogger pero si se edita el HTML de Blogger se pueden lograr resultados aceptables. Más abajo incluimos una sección de código C# (aunque puede ser utilizado con VB.NET o cualquier lenguaje soportado por el Framework) para dar un ejemplo de cómo funciona. La idea de este add-in es lograr que un browser visualice el código lo más parecido posible al entorno de desarrollo y lo logra de forma más que aceptable.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;- Source / Download: &lt;a href="http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/"&gt;http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;- Licencia:&lt;/strong&gt; FREE. COPYRIGHT NOTICE. Copyright © 2006 J.T. Leigh &amp;amp; Associates Inc. All rights reserved.    &lt;p&gt;&lt;br /&gt;&lt;strong&gt;- Proceso de instalación:&lt;/strong&gt; En el sitio web se pueden obtener los instaladores para las diferentes versiones de VS.NET (2003/2005). El proceso de instalación es bien sencillo y no ofrece complicaciones.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;- Integración con el IDE de Desarrollo:&lt;/strong&gt; La integración con el IDE de desarrollo es realmente muy simple, intuitiva y efectiva. Todo lo que necesitamos es seleccionar nuestro código fuente y realizar click derecho donde encontraremos la opción "Copy As HTML". Esta opción abre una caja de diálogo donde podemos setear numerosas propiedades como agregar números de línea, el tamaño de la indentación, y hasta podemos incluir código CSS personalizado.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-5136404978349529876?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/5136404978349529876/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=5136404978349529876' title='6 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/5136404978349529876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/5136404978349529876'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2007/08/visual-studio-add-in-copysourceashtml.html' title='Visual Studio add-in: CopySourceAsHtml'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-6054046772539430347</id><published>2007-08-02T20:03:00.000-03:00</published><updated>2007-08-02T20:06:58.959-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='GridView'/><title type='text'>GridView - Paginacion y Ordenamiento simultaneo</title><content type='html'>Cuando trabajamos con el componente GridView las tareas mas comunes son las de Ordenamiento y de Paginación.&lt;br /&gt;El hecho de lograr ambas tareas de forma simultanea en páginas ASP.NET presenta un pequeño cuidado; se debe mantener el índice de la página en la que estamos cuando establecemos un nuevo criterio de ordenamiento. De la misma forma debemos mantener el criterio de ordenamiento al cambiar el índice de la página a la que queremos acceder.&lt;br /&gt;&lt;br /&gt;El código que sigue es un ejemplo o una de las formas, siempre hay mas de una forma :),  de como se puede lograr esta tarea.-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- SortingPaging.aspx (nuestra página aspx)&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:GridView&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="gridSample"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;AutoGenerateColumns&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt;&lt;br /&gt;     &lt;span class="attr"&gt;AllowPaging&lt;/span&gt; = &lt;span class="kwrd"&gt;"true"&lt;/span&gt; &lt;span class="attr"&gt;OnPageIndexChanging&lt;/span&gt; = &lt;span class="kwrd"&gt;"gridView_PageIndexChanging"&lt;/span&gt;&lt;br /&gt;     &lt;span class="attr"&gt;PageSize&lt;/span&gt; = &lt;span class="kwrd"&gt;"5"&lt;/span&gt;&lt;br /&gt;     &lt;span class="attr"&gt;AllowSorting&lt;/span&gt; = &lt;span class="kwrd"&gt;"true"&lt;/span&gt; &lt;span class="attr"&gt;OnSorting&lt;/span&gt; = &lt;span class="kwrd"&gt;"gridView_Sorting"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Columns&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:BoundField&lt;/span&gt; &lt;span class="attr"&gt;HeaderText&lt;/span&gt;&lt;span class="kwrd"&gt;="Nombre"&lt;/span&gt;&lt;br /&gt;             &lt;span class="attr"&gt;DataField&lt;/span&gt;&lt;span class="kwrd"&gt;="Nombre"&lt;/span&gt;&lt;br /&gt;             &lt;span class="attr"&gt;SortExpression&lt;/span&gt; = &lt;span class="kwrd"&gt;"Nombre"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:BoundField&lt;/span&gt; &lt;span class="attr"&gt;HeaderText&lt;/span&gt;&lt;span class="kwrd"&gt;="Edad"&lt;/span&gt;&lt;br /&gt;             &lt;span class="attr"&gt;DataField&lt;/span&gt;&lt;span class="kwrd"&gt;="edad"&lt;/span&gt;&lt;br /&gt;             &lt;span class="attr"&gt;SortExpression&lt;/span&gt; = &lt;span class="kwrd"&gt;"edad"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Columns&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:GridView&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;- SortingPaging.aspx.cs (nuestro archivo de code behind)&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Data;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI.WebControls;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; SortingPaging : Page {&lt;br /&gt; &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Page_Load(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e) {&lt;br /&gt;     DataSet ds = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataSet();&lt;br /&gt;     &lt;span class="rem"&gt;// Aqui llenamos nuestro DataSet&lt;/span&gt;&lt;br /&gt;     DataView dv = ds.Tables[0].DefaultView;&lt;br /&gt;     dv = sortDataView(dv, &lt;span class="kwrd"&gt;true&lt;/span&gt;);&lt;br /&gt;     gridSample.DataSource = dv;&lt;br /&gt;     gridSample.DataBind();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GridSampleSortDirection {&lt;br /&gt;     get { &lt;span class="kwrd"&gt;return&lt;/span&gt; ViewState[&lt;span class="str"&gt;"SortDirection"&lt;/span&gt;] &lt;span class="kwrd"&gt;as&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ?? &lt;span class="str"&gt;"ASC"&lt;/span&gt;; }&lt;br /&gt;     set { ViewState[&lt;span class="str"&gt;"SortDirection"&lt;/span&gt;] = &lt;span class="kwrd"&gt;value&lt;/span&gt;; }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GridSampleSortExpression {&lt;br /&gt;     get { &lt;span class="kwrd"&gt;return&lt;/span&gt; ViewState[&lt;span class="str"&gt;"SortExpression"&lt;/span&gt;] &lt;span class="kwrd"&gt;as&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ?? &lt;span class="str"&gt;"Nombre"&lt;/span&gt;; }&lt;br /&gt;     set { ViewState[&lt;span class="str"&gt;"SortExpression"&lt;/span&gt;] = &lt;span class="kwrd"&gt;value&lt;/span&gt;; }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; getSortDirection() {&lt;br /&gt;     &lt;span class="kwrd"&gt;switch&lt;/span&gt; (GridSampleSortDirection) {&lt;br /&gt;         &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;"ASC"&lt;/span&gt;:&lt;br /&gt;             GridSampleSortDirection = &lt;span class="str"&gt;"DESC"&lt;/span&gt;;&lt;br /&gt;             &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;"DESC"&lt;/span&gt;:&lt;br /&gt;             GridSampleSortDirection = &lt;span class="str"&gt;"ASC"&lt;/span&gt;;&lt;br /&gt;             &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;     }&lt;br /&gt;     &lt;span class="kwrd"&gt;return&lt;/span&gt; GridSampleSortDirection;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; gridView_PageIndexChanging(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, GridViewPageEventArgs e) {&lt;br /&gt;     gridSample.DataSource = sortDataView(gridSample.DataSource &lt;span class="kwrd"&gt;as&lt;/span&gt; DataView, &lt;span class="kwrd"&gt;true&lt;/span&gt;);&lt;br /&gt;     gridSample.PageIndex = e.NewPageIndex;&lt;br /&gt;     gridSample.DataBind();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;protected&lt;/span&gt; DataView sortDataView(DataView dataView, &lt;span class="kwrd"&gt;bool&lt;/span&gt; isPageIndexChanging) {&lt;br /&gt;     &lt;span class="kwrd"&gt;if&lt;/span&gt; (isPageIndexChanging) {&lt;br /&gt;         dataView.Sort = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0} {1}"&lt;/span&gt;,&lt;br /&gt;         GridSampleSortExpression,&lt;br /&gt;         GridSampleSortDirection);&lt;br /&gt;     } &lt;span class="kwrd"&gt;else&lt;/span&gt; {&lt;br /&gt;         dataView.Sort = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0} {1}"&lt;/span&gt;,&lt;br /&gt;         GridSampleSortExpression,&lt;br /&gt;         getSortDirection());&lt;br /&gt;     }&lt;br /&gt;     &lt;span class="kwrd"&gt;return&lt;/span&gt; dataView;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; gridView_Sorting(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, GridViewSortEventArgs e) {&lt;br /&gt;     GridSampleSortExpression = e.SortExpression;&lt;br /&gt;     &lt;span class="kwrd"&gt;int&lt;/span&gt; pageIndex = gridSample.PageIndex;&lt;br /&gt;     gridSample.DataSource = sortDataView(gridSample.DataSource &lt;span class="kwrd"&gt;as&lt;/span&gt; DataView, &lt;span class="kwrd"&gt;false&lt;/span&gt;);&lt;br /&gt;     gridSample.DataBind();&lt;br /&gt;     gridSample.PageIndex = pageIndex;&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-6054046772539430347?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/6054046772539430347/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=6054046772539430347' title='9 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/6054046772539430347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/6054046772539430347'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2007/08/gridview-paginacion-y-ordenamiento_02.html' title='GridView - Paginacion y Ordenamiento simultaneo'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-8028888232192980416</id><published>2007-07-31T20:43:00.000-03:00</published><updated>2008-12-14T12:13:05.737-02:00</updated><title type='text'>Navega tu sitio con siteMapPath</title><content type='html'>Vamos a ver un ejemplo de como agregar navegación simplificada a través de diferentes secciones de nuestro sitio sin importar la estructura de directorios del mismo.&lt;br /&gt;&lt;br /&gt;Siguiendo con la idea de utilizar nuestra &lt;a href="http://latamdevelopers.blogspot.com/2007/03/creando-el-esqueleto-de-una-aplicacin.html"&gt;aplicación base de ejemplo&lt;/a&gt;, vamos suponer que tenemos una sección de inscripciones de alumnos y que vamos a mostrar en determinadas páginas de nuestro sitio el camino que recorre la aplicación (Inicio &amp;gt; Alumnos &amp;gt; Inscripciones).&lt;br /&gt;&lt;br /&gt;Para ello ASP.NET nos provee de elementos que nos hacen la vida muy facil. Para nuestro ejemplo vamos a utilizar 3 elementos:&lt;br /&gt;&lt;br /&gt;- &amp;lt;asp:SiteMapDataSource/&amp;gt;&lt;br /&gt;- &amp;lt;asp:SiteMapPath/&amp;gt;&lt;br /&gt;- Archivo Site Map (xml)&lt;br /&gt;&lt;br /&gt;Como se trata de código que nos gustaría utilizar en diferentes páginas de nuestro sitio, vamos a crear un web user control y vamos a agregarle los dos primeros elementos que mencionamos. El código sería algo como lo siguiente:&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="asp"&gt;&amp;lt;%@ Control Language="C#" AutoEventWireup="true"&lt;br /&gt;CodeFile="siteNavigation.ascx.cs" Inherits="commonControls_siteNavigation" %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:SiteMapDataSource&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="SiteMapDataSource1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:SiteMapPath&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="SiteMapPath1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Luego necesitamos crear el archivo web.siteMap.xml. Esto es tan simple como hacer click derecho en la aplicación &amp;gt; Add Item y seleccionar Site Map de las opciones en Visual Studio o bien agregar un archivo xml y nombrarlo web.siteMap.xml.&lt;br /&gt;&lt;br /&gt;La estructura de este archivo es como el ejemplo que sigue. Note que todos los archivos están en el directorio raiz de mi aplicación pero a través de los nodos siteMapNode puedo lograr la creación de secciones lógicas de acuerdo a mis necesidades.&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;="1.0"&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;="utf-8"&lt;/span&gt; ?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;siteMap&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0"&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;siteMapNode&lt;/span&gt; &lt;span class="attr"&gt;url&lt;/span&gt;&lt;span class="kwrd"&gt;="~\inicio.aspx"&lt;/span&gt; &lt;span class="attr"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;="Inicio"&lt;/span&gt; &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;=""&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;siteMapNode&lt;/span&gt; &lt;span class="attr"&gt;url&lt;/span&gt;&lt;span class="kwrd"&gt;="~\alumnos.aspx"&lt;/span&gt; &lt;span class="attr"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;="Alumnos"&lt;/span&gt; &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;=""&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;siteMapNode&lt;/span&gt; &lt;span class="attr"&gt;url&lt;/span&gt;&lt;span class="kwrd"&gt;="~\alumnoInscripcion.aspx"&lt;/span&gt;&lt;br /&gt;            &lt;span class="attr"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;="Inscripciones"&lt;/span&gt; &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;=""&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;siteMapNode&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;siteMapNode&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;siteMap&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;Por último incluimos el web user control que creamos antes en las páginas que necesitamos que se muestre el path de la aplicación. Por ejemplo en nuestra página alumnoInscripcion.aspx:&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="asp"&gt;&amp;lt;%@ Page Language="C#" MasterPageFile="~/MasterPage.master"&lt;br /&gt;  AutoEventWireup="true"&lt;br /&gt;  CodeFile="alumnoInscripcion.aspx.cs" Inherits="alumnoInscripcion"&lt;br /&gt;  Title="Untitled Page" %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="asp"&gt;&amp;lt;%@ Register Src="~/commonControls/siteNavigation.ascx"&lt;br /&gt;   TagName="siteNavigation" TagPrefix= "uc1" %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Content&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="Content1"&lt;/span&gt; &lt;span class="attr"&gt;ContentPlaceHolderID&lt;/span&gt;&lt;span class="kwrd"&gt;="ContentPlaceHolder1"&lt;/span&gt; &lt;span class="attr"&gt;Runat&lt;/span&gt;&lt;span class="kwrd"&gt;="Server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;uc1:siteNavigation&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="siteNavigation1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:Content&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;Esto es todo lo que necesitamos; compilamos y ejecutamos la aplicacion y si vamos a nuestra página alumnoInscripcion.aspx veremos algo parecido a la siguiente imagen. Espero que les haya sido útil, no dejen de participar dejando comentarios.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_f-l7YecKCvE/Rgzua-LuKAI/AAAAAAAAAA0/WoMfoiJcAdw/s1600-h/siteMapPath.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_f-l7YecKCvE/Rgzua-LuKAI/AAAAAAAAAA0/WoMfoiJcAdw/s320/siteMapPath.jpg" alt="" id="BLOGGER_PHOTO_ID_5047671429511653378" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-8028888232192980416?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/8028888232192980416/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=8028888232192980416' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/8028888232192980416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/8028888232192980416'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2007/07/navega-tu-sitio-con-sitemappath.html' title='Navega tu sitio con siteMapPath'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_f-l7YecKCvE/Rgzua-LuKAI/AAAAAAAAAA0/WoMfoiJcAdw/s72-c/siteMapPath.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-6204031162607730885</id><published>2007-07-30T19:03:00.000-03:00</published><updated>2007-07-31T19:54:00.773-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utilidades'/><title type='text'>Dando formato a código C# y HTML</title><content type='html'>Una de las necesidades que surgen a partir de la decisión de comenzar un blog o sitio web que involucra tecnologías de desarrollo es la de ofrecer a tus lectores code snippets o porciones de código tanto HTML como C#.&lt;br /&gt;&lt;br /&gt;Uno de los add-ins que he utilizado es CopySourceAsHTML. Pueden leer un artículo que he escrito en la siguiente url: &lt;a href="http://www.ide-plugins.com.ar/visual-studio-add-ins/visual-studio-.net-2005/copysourceashtml.html"&gt;http://www.ide-plugins.com.ar/visual-studio-add-ins/visual-studio-.net-2005/copysourceashtml.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Esta extensión para Visual Studio funciona muy bien y me ha resultado muy util en otros sitios web y herramientas CMS (DNN, Joomla, etc), pero en lo que respecta a Blogger, no genera el código de forma óptima por lo cual he necesitado cambiarlo por uno que me recomendó mi amigo &lt;a href="http://martinolivarespick.blogspot.com/"&gt;Martin Olivares Pick.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Se trata de un formateador online que podemos encontrar en: &lt;a href="http://www.manoli.net/csharpformat/"&gt;http://www.manoli.net/csharpformat/&lt;/a&gt;&lt;br /&gt;Funciona mucho mejor con Blogger y es muy simple de utilizar, por lo tanto lo recomiendo ampliamente.&lt;br /&gt;&lt;br /&gt;Gracias Martin!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-6204031162607730885?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/6204031162607730885/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=6204031162607730885' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/6204031162607730885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/6204031162607730885'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2007/07/dando-formato-cdigo-c-y-html.html' title='Dando formato a código C# y HTML'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-1521767570671404516</id><published>2007-07-19T21:15:00.000-03:00</published><updated>2008-12-14T12:13:06.320-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>ASP.NET AJAX Toolkit: Download e Instalación</title><content type='html'>Una de las características principales de un desarrollo WEB 2.0 radica en la utilización de la tecnología AJAX. Microsoft nos provee de las herramientas necesarias para el desarrollo de aplicaciones con esta tecnología. Estas herramientas son las siguientes: las ASP.NET 2.0 AJAX Extensions 1.0 y el ASP.NET AJAX Control Toolkit. Vamos a ver en este primer contacto como conseguir estas herramientas, instalarlas en nuestro sistema y configurarlas en nuestro entorno de desarrollo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;- Download e Instalación&lt;/span&gt;&lt;br /&gt;Para realizar el download de estas herramientas, apuntamos nuestro navegador favorito a la siguiente dirección: http://www.asp.net/ajax/downloads/;&lt;br /&gt;aqui tenemos dos links para realizar el download de estas herramientas.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_f-l7YecKCvE/Rquxv0IvmXI/AAAAAAAAAB0/YA12Ux52QRA/s1600-h/AjaxDownloads.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_f-l7YecKCvE/Rquxv0IvmXI/AAAAAAAAAB0/YA12Ux52QRA/s400/AjaxDownloads.gif" alt="" id="BLOGGER_PHOTO_ID_5092359238679763314" border="0" /&gt;&lt;/a&gt;En el paso 1 vamos a hacer click en el link que muestra la figura para realizar el download de las ASP.NET Extensions v1.0. Este link nos direcciona una página del sitio web de Microsoft.&lt;br /&gt;&lt;br /&gt;Una vez hecho el download procedemos a la instalación. El proceso de instalación es bastante estandar y no merece comentarios adicionales. La ruta donde se instalarán las extensiones es: C:\Archivos de programa\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025&lt;br /&gt;&lt;br /&gt;Luego repetimos el proceso para el paso 2 hacieno click en el botón Download the Control Toolkit. En este caso, accederemos a una página en el sitio de CodePlex. Aqui podremos descargar tanto el Toolkit incluyendo el código fuente. En nuestro primer contacto, solo necesitamos el Toolkit sin incluir el código, el cual es evidentemente un download de menor tamaño. Hacemos click en AjaxControlToolkit-NoSource.zip y lo descomprimimos en algún lugar de nuestro disco. En lo personal prefiero mantener cierto orden para esta instalación para lo cual descomprimo este archivo en la siguiente ruta: C:\Archivos de programa\Microsoft ASP.NET\ASP.NET AJAX Control Toolkit\.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_f-l7YecKCvE/RquyC0IvmYI/AAAAAAAAAB8/O2I0JkMqLDE/s1600-h/AjaxToolkit.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_f-l7YecKCvE/RquyC0IvmYI/AAAAAAAAAB8/O2I0JkMqLDE/s400/AjaxToolkit.gif" alt="" id="BLOGGER_PHOTO_ID_5092359565097277826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0); font-weight: bold;"&gt;- Configuración del entorno&lt;/span&gt;&lt;br /&gt;Una vez realizados los pasos anteriores (Downloads de los dos archivos e instalación de las ASP.NET Extensions -este es un paso requerido por el Toolkit-). Abrimos Visual Studio y creamos un nuevo sitio web eligiendo "AJAX Control Toolkit Web Site" an la sección My Templates.&lt;br /&gt;&lt;br /&gt;Aquí vamos a agregar un tab en nuestro Toolbox para poder utilizar los controles provistos por el Toolkit. Para ello hacemos click derecho debajo del tab General y elegimos "Add Tab"; le ponemos un nombre como AJAX Toolkit; dentro de este nuevo tab hacemos click derecho y seleccionamos la opción "Choose Items...", un cuadro de diáologo aparece y hacemos click en "Browse..." y buscamos la carpeta bin del sitio de ejemplo en el path de la instalación de las AJAX Toolkit. Par nuestro caso la ruta completa es C:\Archivos de programa\Microsoft ASP.NET\ASP.NET AJAX Control Toolkit\SampleWebSite\Bin; alli seleccionamos el archivo AjaxControlToolkit.dll y listo. Ahora tenemos disponibles los controles para agregar en nuestras aplicaciones ASP.NET!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_f-l7YecKCvE/RquzYkIvmZI/AAAAAAAAACE/uJkfQiHo7rI/s1600-h/NewAJAXTab.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_f-l7YecKCvE/RquzYkIvmZI/AAAAAAAAACE/uJkfQiHo7rI/s400/NewAJAXTab.gif" alt="" id="BLOGGER_PHOTO_ID_5092361038271060370" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-1521767570671404516?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/1521767570671404516/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=1521767570671404516' title='3 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/1521767570671404516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/1521767570671404516'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2007/07/aspnet-ajax-toolkit-download-e.html' title='ASP.NET AJAX Toolkit: Download e Instalación'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_f-l7YecKCvE/Rquxv0IvmXI/AAAAAAAAAB0/YA12Ux52QRA/s72-c/AjaxDownloads.gif' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-6515004163346944628</id><published>2007-03-15T19:57:00.000-03:00</published><updated>2007-07-19T15:45:02.805-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='GridView'/><title type='text'>- Paging and Sorting</title><content type='html'>Las tareas de Paging y Sorting de forma simultanea en páginas ASP.NET presenta un pequeño cuidado; se debe mantener el índice de la página en la que estamos cuando establecemos un nuevo criterio de ordenamiento. De la misma forma debemos mantener el criterio de ordenamiento al cambiar el índice de la página a la que queremos acceder.&lt;br /&gt;&lt;br /&gt;El código que sigue es un ejemplo o una de las formas, siempre hay mas de una forma :),  de como se puede lograr esta tarea.-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- SortingPaging.aspx (nuestra página aspx)&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:GridView&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="gridSample"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;AutoGenerateColumns&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt;&lt;br /&gt;       &lt;span class="attr"&gt;AllowPaging&lt;/span&gt; = &lt;span class="kwrd"&gt;"true"&lt;/span&gt; &lt;span class="attr"&gt;OnPageIndexChanging&lt;/span&gt; = &lt;span class="kwrd"&gt;"gridView_PageIndexChanging"&lt;/span&gt;&lt;br /&gt;       &lt;span class="attr"&gt;PageSize&lt;/span&gt; = &lt;span class="kwrd"&gt;"5"&lt;/span&gt;&lt;br /&gt;       &lt;span class="attr"&gt;AllowSorting&lt;/span&gt; = &lt;span class="kwrd"&gt;"true"&lt;/span&gt; &lt;span class="attr"&gt;OnSorting&lt;/span&gt; = &lt;span class="kwrd"&gt;"gridView_Sorting"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Columns&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:BoundField&lt;/span&gt; &lt;span class="attr"&gt;HeaderText&lt;/span&gt;&lt;span class="kwrd"&gt;="Nombre"&lt;/span&gt;&lt;br /&gt;               &lt;span class="attr"&gt;DataField&lt;/span&gt;&lt;span class="kwrd"&gt;="Nombre"&lt;/span&gt;&lt;br /&gt;               &lt;span class="attr"&gt;SortExpression&lt;/span&gt; = &lt;span class="kwrd"&gt;"Nombre"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:BoundField&lt;/span&gt; &lt;span class="attr"&gt;HeaderText&lt;/span&gt;&lt;span class="kwrd"&gt;="Edad"&lt;/span&gt;&lt;br /&gt;               &lt;span class="attr"&gt;DataField&lt;/span&gt;&lt;span class="kwrd"&gt;="edad"&lt;/span&gt;&lt;br /&gt;               &lt;span class="attr"&gt;SortExpression&lt;/span&gt; = &lt;span class="kwrd"&gt;"edad"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Columns&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:GridView&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;- SortingPaging.aspx.cs (nuestro archivo de code behind)&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Data;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI.WebControls;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; SortingPaging : Page {&lt;br /&gt;   &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Page_Load(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e) {&lt;br /&gt;       DataSet ds = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataSet();&lt;br /&gt;       &lt;span class="rem"&gt;// Aqui llenamos nuestro DataSet&lt;/span&gt;&lt;br /&gt;       DataView dv = ds.Tables[0].DefaultView;&lt;br /&gt;       dv = sortDataView(dv, &lt;span class="kwrd"&gt;true&lt;/span&gt;);&lt;br /&gt;       gridSample.DataSource = dv;&lt;br /&gt;       gridSample.DataBind();&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GridSampleSortDirection {&lt;br /&gt;       get { &lt;span class="kwrd"&gt;return&lt;/span&gt; ViewState[&lt;span class="str"&gt;"SortDirection"&lt;/span&gt;] &lt;span class="kwrd"&gt;as&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ?? &lt;span class="str"&gt;"ASC"&lt;/span&gt;; }&lt;br /&gt;       set { ViewState[&lt;span class="str"&gt;"SortDirection"&lt;/span&gt;] = &lt;span class="kwrd"&gt;value&lt;/span&gt;; }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GridSampleSortExpression {&lt;br /&gt;       get { &lt;span class="kwrd"&gt;return&lt;/span&gt; ViewState[&lt;span class="str"&gt;"SortExpression"&lt;/span&gt;] &lt;span class="kwrd"&gt;as&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ?? &lt;span class="str"&gt;"Nombre"&lt;/span&gt;; }&lt;br /&gt;       set { ViewState[&lt;span class="str"&gt;"SortExpression"&lt;/span&gt;] = &lt;span class="kwrd"&gt;value&lt;/span&gt;; }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; getSortDirection() {&lt;br /&gt;       &lt;span class="kwrd"&gt;switch&lt;/span&gt; (GridSampleSortDirection) {&lt;br /&gt;           &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;"ASC"&lt;/span&gt;:&lt;br /&gt;               GridSampleSortDirection = &lt;span class="str"&gt;"DESC"&lt;/span&gt;;&lt;br /&gt;               &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;"DESC"&lt;/span&gt;:&lt;br /&gt;               GridSampleSortDirection = &lt;span class="str"&gt;"ASC"&lt;/span&gt;;&lt;br /&gt;               &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;       }&lt;br /&gt;       &lt;span class="kwrd"&gt;return&lt;/span&gt; GridSampleSortDirection;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; gridView_PageIndexChanging(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, GridViewPageEventArgs e) {&lt;br /&gt;       gridSample.DataSource = sortDataView(gridSample.DataSource &lt;span class="kwrd"&gt;as&lt;/span&gt; DataView, &lt;span class="kwrd"&gt;true&lt;/span&gt;);&lt;br /&gt;       gridSample.PageIndex = e.NewPageIndex;&lt;br /&gt;       gridSample.DataBind();&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;protected&lt;/span&gt; DataView sortDataView(DataView dataView, &lt;span class="kwrd"&gt;bool&lt;/span&gt; isPageIndexChanging) {&lt;br /&gt;       &lt;span class="kwrd"&gt;if&lt;/span&gt; (isPageIndexChanging) {&lt;br /&gt;           dataView.Sort = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0} {1}"&lt;/span&gt;,&lt;br /&gt;           GridSampleSortExpression,&lt;br /&gt;           GridSampleSortDirection);&lt;br /&gt;       } &lt;span class="kwrd"&gt;else&lt;/span&gt; {&lt;br /&gt;           dataView.Sort = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0} {1}"&lt;/span&gt;,&lt;br /&gt;           GridSampleSortExpression,&lt;br /&gt;           getSortDirection());&lt;br /&gt;       }&lt;br /&gt;       &lt;span class="kwrd"&gt;return&lt;/span&gt; dataView;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; gridView_Sorting(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, GridViewSortEventArgs e) {&lt;br /&gt;       GridSampleSortExpression = e.SortExpression;&lt;br /&gt;       &lt;span class="kwrd"&gt;int&lt;/span&gt; pageIndex = gridSample.PageIndex;&lt;br /&gt;       gridSample.DataSource = sortDataView(gridSample.DataSource &lt;span class="kwrd"&gt;as&lt;/span&gt; DataView, &lt;span class="kwrd"&gt;false&lt;/span&gt;);&lt;br /&gt;       gridSample.DataBind();&lt;br /&gt;       gridSample.PageIndex = pageIndex;&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-6515004163346944628?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/6515004163346944628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/6515004163346944628'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2007/03/paging-and-sorting.html' title='- Paging and Sorting'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-7914727021348736179</id><published>2007-03-15T18:19:00.000-03:00</published><updated>2007-07-19T15:15:25.022-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utilidades'/><title type='text'>- Conversión de Ilist en DataTable</title><content type='html'>&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;Nota: Este código ha sido probado con .NET Framework 2.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Muchas veces retornamos de nuestra fuente de datos un set de datos de tipo Ilist, el cual enlazamos a nuestros GridViews sin ningún problema.&lt;br /&gt;&lt;br /&gt;Como veremos en próximas entradas, hay una forma muy interesante de realizar sorting y paging al mismo tiempo, para ello necesitamos pasar como parámetro un DataTable en uno de los métodos que implementaremos , por lo cual vamos a escribir una utilidad que convierta un Ilist en un DataTable.&lt;br /&gt;&lt;br /&gt;Como en casos anteriores, tomaremos la aplicación de ejemplo de este blog (&lt;a href="http://latamdevelopers.blogspot.com/2007/03/creando-el-esqueleto-de-una-aplicacin.html"&gt;virtualEducation&lt;/a&gt;) y agregaremos en el módulo de &lt;span style="font-style: italic;"&gt;Utilidades &lt;/span&gt;la clase &lt;span style="font-weight: bold;"&gt;Converter.cs&lt;/span&gt;, la cual iremos completando en las próximas entradas. En esta oportunidad , solo definiremos el método &lt;span style="font-style: italic;"&gt;public static DataTable IList2DataTable(IList iList)&lt;/span&gt; para tener solo el conversor que necesitamos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Aquí tenemos el código:&lt;/span&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Data;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Reflection;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; Utilidades {&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Converter {&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; DataTable IList2DataTable(IList iList) {&lt;br /&gt;            DataTable oDataTableReturned = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataTable();&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (iList.Count &amp;gt; 0) {&lt;br /&gt;                &lt;span class="kwrd"&gt;object&lt;/span&gt; _baseObj = iList[0];&lt;br /&gt;                Type objectType = _baseObj.GetType();&lt;br /&gt;                PropertyInfo[] properties = objectType.GetProperties();&lt;br /&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (PropertyInfo property &lt;span class="kwrd"&gt;in&lt;/span&gt; properties) {&lt;br /&gt;                    DataColumn oColumna;&lt;br /&gt;                    oColumna = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataColumn();&lt;br /&gt;                    oColumna.ColumnName = property.Name;&lt;br /&gt;                    oColumna.DataType = property.PropertyType;&lt;br /&gt;                    oDataTableReturned.Columns.Add(oColumna);&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;object&lt;/span&gt; objItem &lt;span class="kwrd"&gt;in&lt;/span&gt; iList) {&lt;br /&gt;                    DataRow oFila;&lt;br /&gt;                    oFila = oDataTableReturned.NewRow();&lt;br /&gt;                    &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (PropertyInfo property &lt;span class="kwrd"&gt;in&lt;/span&gt; properties) {&lt;br /&gt;                        oFila[property.Name] = property.GetValue(objItem, &lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;br /&gt;                    }&lt;br /&gt;                    oDataTableReturned.Rows.Add(oFila);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; oDataTableReturned;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-7914727021348736179?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/7914727021348736179/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=7914727021348736179' title='3 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/7914727021348736179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/7914727021348736179'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2007/03/conversion-de-ilist-en-datatable.html' title='- Conversión de Ilist en DataTable'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-2514260951236373321</id><published>2007-03-15T17:59:00.000-03:00</published><updated>2007-03-15T18:11:47.821-03:00</updated><title type='text'>- Issue con nuevas clases en VS2005</title><content type='html'>El nuevo Visual Studio 2005 es una muy buena herramienta que nos ofrece muchas ventajas y nos ahorra muchos esfuerzos.&lt;br /&gt;&lt;br /&gt;Sin embargo hay una característica que no me resulta del todo agradable. Cuando agregamos librerias de clases (class libraries)  como en el ejemplo de &lt;a href="http://latamdevelopers.blogspot.com/2007/03/creando-el-esqueleto-de-una-aplicacin.html"&gt;virtualEducation&lt;/a&gt; y creamos una clase dentro de alguna de estas librerías como hemos hecho en una entrada anterior con el &lt;a href="http://latamdevelopers.blogspot.com/2007/03/guid-generator-con-c.html"&gt;generador de GUIDs&lt;/a&gt;; notamos que las clases nuevas no tienen accesibilidad pública por lo que al querer utilizarlas no están disponibles.&lt;br /&gt;&lt;br /&gt;Esto requiere que agreguemos el modificador de acceso a public y hagamos un rebuild de la librería de clases y a veces necesitamos hacer rebuild de toda la solución.-&lt;br /&gt;&lt;br /&gt;Me gustaría saber si alguien conoce una forma de configurar el VS 2005 para que por defecto genere las clases como públicas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-2514260951236373321?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/2514260951236373321/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=2514260951236373321' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/2514260951236373321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/2514260951236373321'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2007/03/issue-con-nuevas-clases-en-vs2005.html' title='- Issue con nuevas clases en VS2005'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-1967460706223643522</id><published>2007-03-12T19:54:00.000-03:00</published><updated>2007-07-19T15:45:39.623-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>- Subir archivos grandes con httpRuntime</title><content type='html'>En algunas situaciones necesitamos permitir que los usuarios de nuestra aplicación realicen upload de archivos de tamaño importante (digamos 6 a 10 Mb).&lt;br /&gt;Hemos visto a través de una entrada anterior &lt;a href="http://latamdevelopers.blogspot.com/2007/03/file-upload-con-ajax.html"&gt;como subir archivos con ASP.NET y AJAX.&lt;/a&gt;&lt;br /&gt;Por defecto, ASP.NET permite realizar uploads de hasta 4Mb. Hoy veremos como podemos configurar nuestros servidores o nuestra aplicación para que permita subir archivos mayores a este tamaño.&lt;br /&gt;&lt;br /&gt;Esta configuración se puede realizar tanto en los archivos machine.config como en archivos web.config de cada aplicación. El elemento en cuestión que nos permitirá esta operación es &lt;span style="font-weight: bold;"&gt;&amp;lt;httpRuntime&amp;gt; &lt;/span&gt;a través de su atributo&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;b&gt;maxRequestLength&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Este atributo indica el tamaño máximo soportado por ASP.NET para un archivo que necesita ser subido a un servidor. El tamaño se debe especificar en kbytes. Como adelantamos antes el valor por defecto es 4096 kb.&lt;br /&gt;&lt;br /&gt;El elemento &lt;span style="font-weight: bold;"&gt;&amp;lt;httpRuntime&amp;gt; &lt;/span&gt;debe ubicarse dentro de la sección configuration/system.web de nuestro archivo de configuración. Veamos un ejemplo simple para un archivo de 6Mb:&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;httpRuntime&lt;/span&gt; &lt;span class="attr"&gt;maxRequestLength&lt;/span&gt;&lt;span class="kwrd"&gt;="6144"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-1967460706223643522?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/1967460706223643522/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=1967460706223643522' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/1967460706223643522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/1967460706223643522'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2007/03/subir-archivos-grandes-con-httpruntime.html' title='- Subir archivos grandes con httpRuntime'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-4845840304844818911</id><published>2007-03-12T10:01:00.000-03:00</published><updated>2007-07-19T15:17:08.230-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utilidades'/><title type='text'>- GUID Generator con C#</title><content type='html'>&lt;span nd="1" name="intelliTxt" id="intelliTxt"&gt;GUID es un acrónimo para &lt;/span&gt;&lt;span nd="1" name="intelliTxt" id="intelliTxt"&gt;&lt;i&gt;&lt;b&gt;G&lt;/b&gt;lobally &lt;b&gt;U&lt;/b&gt;nique &lt;b&gt;Id&lt;/b&gt;entifier &lt;/i&gt;o identificador único global, es un número de 128 bits que es producido por el sistema operativo Windows o por algunas aplicaciones Windows para identificar un componente particular, una aplicación, un archivo, un registro en una base de datos y/o un usuario. Por ejemplo, podemos tener un sitio web que genere un GUID y se lo asigne a un usuario para grabar las acciones de este usuario en la sesión (lo que se conoce como &lt;span style="font-style: italic;"&gt;session tracking&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;GUID se utiliza también en el registro de Windows para identificar dlls COM. Algunos DBAs incluso utilizan un GUID como claves primarias de sus bases de datos.&lt;br /&gt;Un ejemplo de GUID generado es el siguiente: {ded53e2b-91e9-4682-b673-862ca6503b2e}&lt;br /&gt;&lt;br /&gt;Si bien no está garantizado que un GUID generado sea único, el total de claves que se pueden generar (2 elevado a la 128 potencia&lt;/span&gt;&lt;span nd="1" name="intelliTxt" id="intelliTxt"&gt;) es tan grande que la probabilidad de que se repita es realmente muy pequeña. Para dar una idea de esto podemos decir que una aplicación que genere 10 mil millones de GUID la probabilidad de que se repita una clave generada es de 1 en un quintillión (en la escala americana - 10 elevado a la 30 potencia en la escala tradicional).&lt;br /&gt;&lt;br /&gt;Veamos entonces como se genera un GUID en una aplicación Windows con C#. Para mostrar un ejemplo vamos a utilizar la aplicación &lt;span style="font-style: italic;"&gt;virtualEducation&lt;/span&gt; que generamos en una entrada anterior (&lt;a href="http://latamdevelopers.blogspot.com/2007/03/creando-el-esqueleto-de-una-aplicacin.html"&gt;ver entrada&lt;/a&gt;) y vamos a ubicar nuestra clase &lt;span style="font-style: italic;"&gt;GUIDGenerator&lt;/span&gt; en el módulo de &lt;span style="font-style: italic;"&gt;Utilidades.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Este es todo el código que necesitamos:&lt;br /&gt;&lt;/span&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; Utilidades {&lt;br /&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; GUIDGenerator {&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; getGUIDString() {&lt;br /&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; guidIdentifier = System.Guid.NewGuid().ToString();&lt;br /&gt;            guidIdentifier = guidIdentifier.Replace(&lt;span class="str"&gt;"-"&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty);&lt;br /&gt;            guidIdentifier.ToUpper();&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; guidIdentifier;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-4845840304844818911?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/4845840304844818911/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=4845840304844818911' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/4845840304844818911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/4845840304844818911'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2007/03/guid-generator-con-c.html' title='- GUID Generator con C#'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-5989021396449946635</id><published>2007-03-09T14:48:00.000-03:00</published><updated>2007-07-19T15:46:17.178-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>- Tabs simples en ASP.NET</title><content type='html'>Algunas de nuestras aplicaciones necesitan mostrar tabs o elementos superpuestos. Vamos a ver como se logra este efecto utilizando dos elementos de ASP.NET; estos son el elemento &lt;span style="font-style: italic;"&gt;asp:Menu &lt;/span&gt;y el elemento &lt;span style="font-style: italic;"&gt;asp:MultiView. &lt;/span&gt;El código es realmente muy sencillo y nos ayudamos con un set de 4 imágenes. Dos imágenes para el primer y segundo tab (con sus estados activado y desactivado).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        -SimpleTabulation.aspx (nuestra página aspx)&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="form1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Menu&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="MenuTab"&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="120px"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;br /&gt;               &lt;span class="attr"&gt;Orientation&lt;/span&gt;&lt;span class="kwrd"&gt;="Horizontal"&lt;/span&gt; &lt;span class="attr"&gt;StaticEnableDefaultPopOutImage&lt;/span&gt;&lt;span class="kwrd"&gt;="False"&lt;/span&gt;&lt;br /&gt;               &lt;span class="attr"&gt;OnMenuItemClick&lt;/span&gt;&lt;span class="kwrd"&gt;="MenuTab_MenuItemClick"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;               &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Items&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:MenuItem&lt;/span&gt; &lt;span class="attr"&gt;ImageUrl&lt;/span&gt;&lt;span class="kwrd"&gt;="~/images/TabOneOn.jpg"&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:MenuItem&lt;/span&gt; &lt;span class="attr"&gt;ImageUrl&lt;/span&gt;&lt;span class="kwrd"&gt;="~/images/TabTwoOff.jpg"&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;               &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Items&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:Menu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:MultiView&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="MultiView1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;ActiveViewIndex&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;               &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:View&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="View1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                   Contenido del Tab 1!&lt;br /&gt;               &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:View&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;               &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:View&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="View2"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                   Contenido del Tab 2!&lt;br /&gt;               &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:View&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:MultiView&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;-SimpleTabulation.aspx.cs (nuestro archivo de code behind)&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI.WebControls;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; SimpleTabulation : Page {&lt;br /&gt;   &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; MenuTab_MenuItemClick(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, MenuEventArgs e) {&lt;br /&gt;       MultiView1.ActiveViewIndex = Int32.Parse(e.Item.Value);&lt;br /&gt;       &lt;span class="kwrd"&gt;int&lt;/span&gt; selectedTab = Int32.Parse(e.Item.Value);&lt;br /&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;switch&lt;/span&gt; (selectedTab) {&lt;br /&gt;           &lt;span class="kwrd"&gt;case&lt;/span&gt; 0:&lt;br /&gt;               MenuTab.Items[0].ImageUrl = &lt;span class="str"&gt;"~/images/TabOneOn.jpg"&lt;/span&gt;;&lt;br /&gt;               MenuTab.Items[1].ImageUrl = &lt;span class="str"&gt;"~/images/TabTwoOff.jpg"&lt;/span&gt;;&lt;br /&gt;               &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;case&lt;/span&gt; 1:&lt;br /&gt;               MenuTab.Items[0].ImageUrl = &lt;span class="str"&gt;"~/images/TabOneOff.jpg"&lt;/span&gt;;&lt;br /&gt;               MenuTab.Items[1].ImageUrl = &lt;span class="str"&gt;"~/images/TabTwoOn.jpg"&lt;/span&gt;;&lt;br /&gt;               &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-5989021396449946635?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/5989021396449946635/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=5989021396449946635' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/5989021396449946635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/5989021396449946635'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2007/03/tabs-simples-en-aspnet.html' title='- Tabs simples en ASP.NET'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-5303966554703354310</id><published>2007-03-09T14:14:00.000-03:00</published><updated>2007-07-19T15:46:44.505-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>- Custom Exceptions en ASP.NET</title><content type='html'>En esta entrada veremos como utilizar excepciones personalizadas o custom exceptions. La idea básica es muy simple. Se trata crear una clase que herede de la clase &lt;span style="font-style: italic;"&gt;Exception&lt;/span&gt; de ASP.NET y pasarle argumentos básicos como puede ser el mensaje de la excepción e incluso parámetros personalizados. Vamos a ver un ejemplo muy simple en el cual tenemos un &lt;span style="font-style: italic;"&gt;label&lt;/span&gt; en el cual  mostraremos  el mensaje de la excepción arrojada desde nuestra aplicación.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- CustomExceptions.aspx (nuestra página aspx)&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="form1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Label&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="lblException"&lt;/span&gt;&lt;br /&gt;           &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=""&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;- CustomExceptions.aspx.cs  (nuestro archivo de code behind)&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; MyCustomException : Exception {&lt;br /&gt;   &lt;span class="kwrd"&gt;public&lt;/span&gt; MyCustomException(&lt;span class="kwrd"&gt;string&lt;/span&gt; message) : &lt;span class="kwrd"&gt;base&lt;/span&gt;(message) { }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; TestCustomExceptions : Page {&lt;br /&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Page_Load(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e) {&lt;br /&gt;       &lt;span class="kwrd"&gt;try&lt;/span&gt; {&lt;br /&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (1 == 1) {&lt;br /&gt;               &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; MyCustomException(&lt;span class="str"&gt;"Testing Custom Exceptions.-"&lt;/span&gt;);&lt;br /&gt;           }&lt;br /&gt;       } &lt;span class="kwrd"&gt;catch&lt;/span&gt; (MyCustomException exc) {&lt;br /&gt;           Trace.Write(exc.Message);&lt;br /&gt;           lblException.Text = exc.Message;&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-5303966554703354310?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/5303966554703354310/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=5303966554703354310' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/5303966554703354310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/5303966554703354310'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2007/03/custom-exceptions-en-aspnet.html' title='- Custom Exceptions en ASP.NET'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-1362135524252291951</id><published>2007-03-09T12:17:00.000-03:00</published><updated>2007-07-19T15:39:44.759-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>- File Upload con AJAX</title><content type='html'>Vamos a ver en esta entrada el código necesario para realizar upload de un archivo y que la experiencia de usuario sea cómoda a través del uso de AJAX. El concepto es muy simple; utilizamos dos divs, uno para mostrar el componente FileUpload de ASP.NET y otro para mostrar un mensaje o una imagen animada al usuario mientras la tarea de subir el archivo se ejecuta en segundo plano y no se muestra al usuario ninguna acción de Postback o roundtrip al servidor. A través de AJAX utilizamos una serie de funciones JavaScript para mostrar/ocultar los divs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;He aquí el codigo necesario:&lt;br /&gt;- FileUpload.aspx (Nuestra página aspx)&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="Head1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;File Upload Test&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;language&lt;/span&gt;&lt;span class="kwrd"&gt;="javascript"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; divFileHide() {&lt;br /&gt;   &lt;span class="kwrd"&gt;var&lt;/span&gt; divFile = document.getElementById(&lt;span class="str"&gt;'fileUploadDiv'&lt;/span&gt;);&lt;br /&gt;   divFile.style.display = &lt;span class="str"&gt;'none'&lt;/span&gt;;&lt;br /&gt;  &lt;br /&gt;   &lt;span class="kwrd"&gt;var&lt;/span&gt; divLoading = document.getElementById(&lt;span class="str"&gt;'loadingFileDiv'&lt;/span&gt;);&lt;br /&gt;   divLoading.style.display = &lt;span class="str"&gt;'block'&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; divFileShow() {&lt;br /&gt;   &lt;span class="kwrd"&gt;var&lt;/span&gt; divFile = document.getElementById(&lt;span class="str"&gt;'fileUploadDiv'&lt;/span&gt;);&lt;br /&gt;   iframe.style.display = &lt;span class="str"&gt;'block'&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;var&lt;/span&gt; divLoading = document.getElementById(&lt;span class="str"&gt;'loadingFileDiv'&lt;/span&gt;);&lt;br /&gt;   divLoading.style.display = &lt;span class="str"&gt;'none'&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; upload(){&lt;br /&gt;   divFileHide();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; onComplete( result ) {&lt;br /&gt;   divFileShow();&lt;br /&gt;}&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="form1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="fileUploadDiv"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:FileUpload&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="FileUpload1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;Visible&lt;/span&gt;&lt;span class="kwrd"&gt;="true"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Button&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="btnUpload"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="Subir Archivo"&lt;/span&gt;&lt;br /&gt;               &lt;span class="attr"&gt;OnClick&lt;/span&gt;&lt;span class="kwrd"&gt;="btnUpload_Click"&lt;/span&gt;&lt;br /&gt;               &lt;span class="attr"&gt;Visible&lt;/span&gt;&lt;span class="kwrd"&gt;="true"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Label&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="lblError"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;Visible&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt;&lt;br /&gt;           &lt;span class="attr"&gt;Font-Bold&lt;/span&gt;&lt;span class="kwrd"&gt;="true"&lt;/span&gt; &lt;span class="attr"&gt;ForeColor&lt;/span&gt;&lt;span class="kwrd"&gt;="red"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="loadingFileDiv"&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;="display: none;"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;           El archivo está subiendo...&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;- FileUpload.aspx.cs (Nuestro archivo de code behind)&lt;/span&gt;&lt;span&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; FileUpload : Page {&lt;br /&gt;   &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Page_Load(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e) {&lt;br /&gt;       btnUpload.Attributes.Add(&lt;span class="str"&gt;"onclick"&lt;/span&gt;, &lt;span class="str"&gt;"return upload();"&lt;/span&gt;);&lt;br /&gt;   }&lt;br /&gt;   &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btnUpload_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e) {&lt;br /&gt;       &lt;span class="kwrd"&gt;if&lt;/span&gt; (FileUpload1.HasFile) {&lt;br /&gt;           &lt;span class="kwrd"&gt;try&lt;/span&gt; {&lt;br /&gt;               String uploadFolder = &lt;span class="str"&gt;"D:\\Uploads\\";&lt;br /&gt;               String file = FileUpload1.FileName;&lt;br /&gt;&lt;br /&gt;               FileUpload1.SaveAs(uploadFolder + file);&lt;br /&gt;           } catch (Exception ex) {&lt;br /&gt;               Trace.Write(ex.Message);&lt;br /&gt;           }&lt;br /&gt;       } else {&lt;br /&gt;           lblError.Text = "&lt;/span&gt;El archivo no ha sido especificado";&lt;br /&gt;           lblError.Visible = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-1362135524252291951?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/1362135524252291951/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=1362135524252291951' title='5 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/1362135524252291951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/1362135524252291951'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2007/03/file-upload-con-ajax.html' title='- File Upload con AJAX'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-9093250531348358188</id><published>2007-03-01T09:59:00.000-03:00</published><updated>2008-12-14T12:13:07.361-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Diseño'/><title type='text'>- Esqueleto de una aplicación Web en ASP.NET</title><content type='html'>En esta oportunidad quiero compartir con ustedes una de las formas básicas de crear una aplicación web que utilice componentes reutilizables, que tenga módulos independientes y que pueda integrar algún framework de persistencia como NHibernate o Ibatis.&lt;br /&gt;Esta tarea la llevaremos a cabo utilizando el IDE de desarrollo Visual Studio 2005. Vamos a suponer que estamos desarrollando una aplicación orientada a e-learning. Lo primero que debemos tener presente es que todos estos módulos los tendremos en una misma carpeta.  En mi caso  la carpeta en cuestión es D:\NETProjects\E-Learning.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Módulos de nuestra aplicación:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Sitio Web:&lt;/span&gt; En éste módulo tendremos nuestras páginas .aspx con sus correspondientes archivos de code behind (.aspx.cs), las cuales utilizarán las clases y objetos (no se trata de otra cosa) del resto de los módulos involucrados en la aplicación.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Módulo de Model:&lt;/span&gt;   En éste módulo almacenaremos todas las clases de objetos que nuestra aplicación requiera.  En nuestro caso, al tratarse  de una aplicación de e-learning,  ejemplos de clases que pondremos en este módulo son: curso, asignatura, profesor, etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Módulo de Persistencia:&lt;/span&gt; En éste módulo crearemos dos carpetas. La primera será nuestra carpeta de &lt;span style="font-style: italic;"&gt;Interfaces &lt;/span&gt;en la cual tendremos las interfaces de las clases que necesitamos persistir. El uso de interfaces nos permite además migrar de un framework a otro teniendo que modificar solo las implementaciones del mismo. Entonces necesitaremos una segunda carpeta que puede llamarse &lt;span style="font-style: italic;"&gt;Implementaciones.&lt;/span&gt; En ella almacenaremos los archivos necesarios que dependerán del framework de persistencia que elijamos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Módulo de Servicio:&lt;/span&gt; En éste módulo se almacenarán las clases necesarias para ejecutar llamadas a las clases en el módulo de persistencia y eventualmente procesar reglas de negocio antes de realizar la persistencia.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Módulo de Utilidades:&lt;/span&gt; En éste módulo se almacenarán aquellas clases que pueden ser reutilizables en más de un proyecto como pueden ser utilidades de conversion para listas, arrays, etc.-&lt;br /&gt;&lt;br /&gt;Veamos como es el proceso en Visual Studio 2005 para lograr este esqueleto:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;1- Sitio Web:&lt;/span&gt; Creamos el sitio Web a través de la opción File... New Web Site... elegimos el lenguaje (C# en nuestro caso) , elegimos la ruta y el nombre de nuestro sitio o aplicación Web, para nuestro ejemplo será &lt;span style="font-style: italic;"&gt;D:\NETProjects\E-Learning\virtualEd&lt;/span&gt;&lt;span style="font-style: italic;"&gt;ucation &lt;/span&gt;donde &lt;span style="font-style: italic;"&gt;E-Learning&lt;/span&gt; es la carpeta del proyecto conteniendo todos los módulos y &lt;span style="font-style: italic;"&gt;virtualEducation &lt;/span&gt;es nuestro sitio web.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2- Módulos:&lt;/span&gt; Agregamos los móulos que vamos a necesitar. Abrimos la opción File... New Project y aquí tenemos varias opciones a tener en cuenta. Lo primero es elegir el tipo de proyecto. Elegimos &lt;span style="font-style: italic;"&gt;Visual C#&lt;/span&gt; - &lt;span style="font-style: italic;"&gt;Windows&lt;/span&gt; en &lt;span style="font-style: italic;"&gt;Project types. &lt;/span&gt;Elegimos  &lt;span style="font-style: italic;"&gt;Class Library&lt;/span&gt; como template. Especificamos el nombre del poyecto, en nuestro caso &lt;span style="font-style: italic;"&gt;Model&lt;/span&gt;, especificamos la ubicación: &lt;span style="font-style: italic;"&gt;D:\NETProjects\E-Learning &lt;/span&gt;&lt;span&gt;y por último seleccionamos el drop down list&lt;/span&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span style="font-style: italic;"&gt; Add to Solution.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_f-l7YecKCvE/RebXME7a5KI/AAAAAAAAAAM/ivogRZDWpa0/s1600-h/Model.JPG"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_f-l7YecKCvE/RebXME7a5KI/AAAAAAAAAAM/ivogRZDWpa0/s320/Model.JPG" alt="" id="BLOGGER_PHOTO_ID_5036949835741848738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Realizamos el mismo procedimiento para nuestros otros módulos teniendo en cuenta la creación de las dos carpetas en el módulo de Persistencia (&lt;span style="font-style: italic;"&gt;Interfaces&lt;/span&gt; e &lt;span style="font-style: italic;"&gt;Implementaciones&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_f-l7YecKCvE/RebZxU7a5LI/AAAAAAAAAAY/b70d9GBBW3M/s1600-h/Proyecto.JPG"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_f-l7YecKCvE/RebZxU7a5LI/AAAAAAAAAAY/b70d9GBBW3M/s320/Proyecto.JPG" alt="" id="BLOGGER_PHOTO_ID_5036952674715231410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3-  Referencias:&lt;/span&gt; Ahora necesitamos  agregar a nuestro sitio web las referencias a estos módulos para que al realizar la compilación nos genere dlls para estos proyectos. Para ello hacemos click derecho en nuestro sitio web y seleccionamos &lt;span style="font-style: italic;"&gt;Add Reference...&lt;/span&gt; vamos al tab de &lt;span style="font-style: italic;"&gt;Projects &lt;/span&gt;y seleccionamos los proyectos creados en el paso anterior.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4- Construir Solución: &lt;/span&gt;Por último, hacemos click derecho a nuestra solución &lt;span style="font-style: italic;"&gt;Solution \virtualEducation (5 projects) &lt;/span&gt;y elegimos la opción&lt;span style="font-style: italic;"&gt; Rebuild Solution. &lt;/span&gt;Vemos como se generan las dlls de nuestros proyectos en la carpeta&lt;span style="font-style: italic;"&gt; Bin &lt;/span&gt;de nuestro sitio web.-&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_f-l7YecKCvE/RebbmE7a5MI/AAAAAAAAAAk/jADGcu-bOyw/s1600-h/References.JPG"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_f-l7YecKCvE/RebbmE7a5MI/AAAAAAAAAAk/jADGcu-bOyw/s320/References.JPG" alt="" id="BLOGGER_PHOTO_ID_5036954680464958658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;Con estos sencillos 4 pasos, tenemos listo nuestro esqueleto para una aplicación Web modularizada, escalable, lista para utilizar un framework de persistencia y componentes reutilizables.-&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-9093250531348358188?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/9093250531348358188/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=9093250531348358188' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/9093250531348358188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/9093250531348358188'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2007/03/creando-el-esqueleto-de-una-aplicacin.html' title='- Esqueleto de una aplicación Web en ASP.NET'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_f-l7YecKCvE/RebXME7a5KI/AAAAAAAAAAM/ivogRZDWpa0/s72-c/Model.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6106231520190694503.post-771855755353510096</id><published>2007-03-01T09:38:00.000-03:00</published><updated>2007-07-19T15:51:49.274-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='GridView'/><title type='text'>- Tooltips en columnas de GridView</title><content type='html'>Muchas veces por razones de espacio necesitamos poner nombres abreviados o acrónimos en las cabeceras de nuestros GridViews. Para enriquecer la experiencia de usuario podemos agregar tooltips a estas cabeceras de una forma muy sencilla de modo de proveer al usuario el nombre completo o mas descriptivo para determinado campo mostrado.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pre-Requisitos:&lt;br /&gt;&lt;/span&gt;* Tenemos establecida la conexión a la base de datos.&lt;br /&gt;* Tenemos un DataSet con los datos para realizar el Binding al Dataview.&lt;br /&gt;* Tenemos los datos en el gridview a traves de Databind().&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Elementos Clave:&lt;br /&gt;&lt;/span&gt;* Habilitar la propiedad &lt;span style="color: rgb(153, 0, 0);"&gt;HtmlEncode &lt;/span&gt;a &lt;span style="font-style: italic;"&gt;false&lt;/span&gt; en cada campo enlazado.&lt;br /&gt;* Utilizar elementos HTML en la propiedad &lt;span style="color: rgb(153, 0, 0);"&gt;HeaderText&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;He aquí nuesto código:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;- products.aspx (Nuestra página aspx)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:gridview&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="gvProducts"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;autogeneratecolumns&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Columns&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:BoundField&lt;/span&gt;&lt;br /&gt;          &lt;span class="attr"&gt;HeaderText&lt;/span&gt;&lt;span class="kwrd"&gt;="Producto"&lt;/span&gt;&lt;br /&gt;          &lt;span class="attr"&gt;DataField&lt;/span&gt;&lt;span class="kwrd"&gt;="name"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:BoundField&lt;/span&gt;&lt;br /&gt;          &lt;span class="attr"&gt;HtmlEncode&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt;&lt;br /&gt;          &lt;span class="attr"&gt;HeaderText&lt;/span&gt;="&amp;&lt;span class="attr"&gt;lt&lt;/span&gt;;&lt;span class="attr"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;='Cantidad'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; Cant. &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;"&lt;br /&gt;          DataField="qty"&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:BoundField&lt;/span&gt;&lt;br /&gt;          &lt;span class="attr"&gt;HtmlEncode&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt;&lt;br /&gt;          &lt;span class="attr"&gt;HeaderText&lt;/span&gt;="&amp;&lt;span class="attr"&gt;lt&lt;/span&gt;;&lt;span class="attr"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;='Precio'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; $ &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;"&lt;br /&gt;          DataField="price"&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Columns&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:gridview&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Esta es solo una de las formas de realizarlo, otra forma es utilizando el tag &amp;lt;acronym&amp;gt;  de HTML.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6106231520190694503-771855755353510096?l=latamdevelopers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://latamdevelopers.blogspot.com/feeds/771855755353510096/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6106231520190694503&amp;postID=771855755353510096' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/771855755353510096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6106231520190694503/posts/default/771855755353510096'/><link rel='alternate' type='text/html' href='http://latamdevelopers.blogspot.com/2007/03/tooltips-en-columnas-de-gridview.html' title='- Tooltips en columnas de GridView'/><author><name>Pablo Barrientos</name><uri>http://www.blogger.com/profile/00254842404578033425</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
