<?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-7114541018827461852</id><updated>2011-09-15T05:39:37.208-07:00</updated><category term='decoding'/><category term='silverlight3'/><category term='MemoryStream'/><category term='Repeater'/><category term='javascript'/><category term='xsd'/><category term='bcndev'/><category term='encoding'/><category term='Globalizacion'/><category term='ItemTemplate'/><category term='seguridad'/><category term='manuales'/><category term='AJAX'/><category term='Bitmap'/><category term='OnItemCommand'/><category term='callback'/><category term='Atlas'/><category term='open source'/><category term='handlers'/><category term='silverlight4'/><category term='sql server'/><category term='NumberFormatInfo'/><category term='arquitectura'/><category term='t-sql'/><category term='split'/><category term='silverlight2'/><category term='sharepoint'/><category term='ado.net'/><category term='svg'/><category term='html'/><category term='multiple rows'/><category term='doctype'/><category term='log4net'/><category term='asp.net'/><category term='CultureInfo'/><category term='mashup'/><category term='VS2005'/><category term='errores'/><category term='ClientScript'/><category term='UpdatePanel'/><category term='json'/><category term='svn'/><category term='VS2008 VS2010'/><category term='screencast'/><title type='text'>Desarrollo .NET</title><subtitle type='html'>Pequeños apuntes de referencia.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>43</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-5010009210966626584</id><published>2011-02-07T14:01:00.000-08:00</published><updated>2011-02-07T14:01:12.211-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><title type='text'>Laboratorios para Sharepoint 2010</title><content type='html'>Hace poco se acaban de publicar unos laboratorios sobre Sharepoint 2010 en codeplex.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;uno para logging&lt;/li&gt;&lt;li&gt;uno para service location&lt;/li&gt;&lt;li&gt;y cuatro para application setting manager&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Enlaces relacionados:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://spg.codeplex.com/releases/view/60343" target="visor"&gt;patterns &amp;amp; practices SharePoint Guidance&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-5010009210966626584?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/5010009210966626584/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=5010009210966626584' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/5010009210966626584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/5010009210966626584'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2011/02/laboratorios-para-sharepoint-2010.html' title='Laboratorios para Sharepoint 2010'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-910931269857448125</id><published>2011-02-07T08:35:00.000-08:00</published><updated>2011-02-07T08:35:49.290-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='log4net'/><title type='text'>log4net Tutorial</title><content type='html'>Acabo de ver publicado en codeproject un tutorial de log4net (la versión de log4j para .net), una excelente alternativa, antes que utilizar el API de las applications blocks que publica microsoft, para hacer logging.&lt;br /&gt;&lt;br /&gt;El tutorial incluye una demo con código.&lt;br /&gt;&lt;br /&gt;Enlaces relacionados:&lt;br /&gt;&lt;a target="visor" href="http://www.codeproject.com/KB/dotnet/Log4net_Tutorial.aspx"&gt;http://www.codeproject.com/KB/dotnet/Log4net_Tutorial.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-910931269857448125?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/910931269857448125/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=910931269857448125' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/910931269857448125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/910931269857448125'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2011/02/log4net-tutorial.html' title='log4net Tutorial'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-2534617499534806487</id><published>2011-01-24T13:34:00.001-08:00</published><updated>2011-01-24T13:34:12.546-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight4'/><title type='text'>Como integrar HTML en aplicaciones Silverlight</title><content type='html'>Interesante post de como integrar contenido HTML en aplicaciones Silverlight.&lt;br /&gt;&lt;br /&gt;Enlaces relacionados:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://weblogs.asp.net/dwahlin/archive/2010/05/10/integrating-html-into-silverlight-applications.aspx"&gt;Integrating HTML into Silverlight Applications&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-2534617499534806487?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/2534617499534806487/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=2534617499534806487' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/2534617499534806487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/2534617499534806487'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2011/01/como-integrar-html-en-aplicaciones.html' title='Como integrar HTML en aplicaciones Silverlight'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-2528156170438509956</id><published>2010-11-10T16:55:00.001-08:00</published><updated>2010-11-11T06:40:01.434-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='manuales'/><category scheme='http://www.blogger.com/atom/ns#' term='json'/><title type='text'>Manual de JSON</title><content type='html'>JSON es una tecnología que lleva bastante tiempo en el sector y existen diferentes frameworks de diferentes plataformas de desarrollo que le dan soporte.&lt;br /&gt;&lt;br /&gt;Últimamente he visto que la corriente NoSQL esta almacenando información con esta notación, debido a ello se me ha ocurrido publicar un extracto de un manual que realice "en la intimidad" aplicando Java/.Net; el extracto se centra únicamente en esta tecnología y en mencionar su ecosistema (parcialmente ya que faltan los frameworks de lado servidor), para tener una vista global de su alcance.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px" id="__ss_5732305"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/Emmerson_Miranda/json-short-manual-5732305" title="Json short manual"&gt;Json short manual&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse5732305" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=json-shortmanual-101110175649-phpapp01&amp;stripped_title=json-short-manual-5732305&amp;userName=Emmerson_Miranda" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse5732305" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=json-shortmanual-101110175649-phpapp01&amp;stripped_title=json-short-manual-5732305&amp;userName=Emmerson_Miranda" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/Emmerson_Miranda"&gt;Emmerson Miranda&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-2528156170438509956?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/2528156170438509956/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=2528156170438509956' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/2528156170438509956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/2528156170438509956'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2010/11/manual-de-json.html' title='Manual de JSON'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-6466965542622843499</id><published>2010-10-14T16:34:00.000-07:00</published><updated>2010-10-14T16:34:26.479-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arquitectura'/><title type='text'>¿Hay que compartir el conocimiento?</title><content type='html'>Compartir "&lt;b&gt;Es lo que permite relacionarnos con los otros&lt;/b&gt;" y en este ámbito, devolver a la comunidad, lo que esta nos ha regalado.&lt;br /&gt;&lt;br /&gt;Evidentemente mi respuesta es sí; y es lo que repito mentalmente cada vez que veo una "isla de poder", más adelante explicaré a lo que denomino una isla de poder.&lt;br /&gt;&lt;br /&gt;Compartir el conocimiento nos permite relacionarnos con los otros, exponer nuestra forma de pensar, de expresarnos, y de aprender, ya que nos exponernos públicamente a comentarios buenos, constructivos, malos, destructivos, mordaces.. pero lo más importante es que nos da la oportunidad de equivocarnos y de retroalimentarnos en base al conocimiento de otros.&lt;br /&gt;&lt;br /&gt;Pero considero que hay que ser conscientes, que al saltar a la palestra pública, seremos suceptibles de ser criticados; y por tanto debemos ponernos una coraza y mirar desde fuera lo bueno dentro de lo bueno, y lo bueno dentro de lo que nos parece desagradable y ofensivo.&lt;br /&gt;&lt;br /&gt;En la batalla de la dialéctica, existen personas capaces de tomar nuestras frases y retorcerlas ... por tanto insisto, debemos ser capaces de ver tomar lo bueno dentro lo malo, y de ser humildes cuando todo sale bien, cosa loable, y poco frecuente en este sector, dado al gran ego que rebosa por todas partes.&lt;br /&gt;&lt;br /&gt;Volviendo al tema, algunos no tienen claro lo de compartir conocimiento! Forman sus pequeñas islas de poder en base a no compartir conocimiento y a convertir en enrebesado lo sencillo, ...y para ellos es mi queja.&lt;br /&gt;&lt;br /&gt;Para mí, una "isla de poder", es algo así como un pequeño nicho de mercado, donde alguien intenta posicionarse de forma errónea, para convertirse en indispensable, lástima que a algunos esta jugada les de resultado.&lt;br /&gt;&lt;br /&gt;Y digo esto pensando, por ejemplo, a manera de reflexión (o tal vez de crítica), en algunas aplicaciones que me ha tocado rescatar, aplicaciones sin ejercimiento de roles, sin documentación, sin estructura, sin guía, sin control, caóticas!&lt;br /&gt;&lt;br /&gt;Muchos saben del tipo de aplicaciones que hablo, a mas de uno de nosotros le ha costado, al menos las primeras veces, leer cantidades ingentes de documentos y mucha, mucha imaginación para comprender e intentar arreglar el entuerto.&lt;br /&gt;&lt;br /&gt;Pero por muy ofuscado que este algo, solo retarda lo inevitable, hay otros que vienen por detrás y tarde o temprano sabrán desifrar aquello que con tanto sigilo se guarda, por tanto este tipo de actitudes no tiene razón de ser. &lt;br /&gt;&lt;br /&gt;Ocultar el conocimiento, no posibilita estrechar los lazos sociales, ni incrementar nuestro capital intelectual. &lt;br /&gt;&lt;br /&gt;&lt;i&gt;Guardar información sin haberla pasado por la interrogación, por la opinión, por la justificación, o abolición del otro, no es conocimiento. Es tener una base de datos de "saberes muertos", sin vida, algo que no representa nada porque está inherte, sin conexión con los demás o con el medio que le da vida.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Por suerte hay mucha gente en internet que practica la divulgación de conocimiento, a todos ellos MUCHAS GRACIAS&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;embed id=VideoPlayback src=http://video.google.com/googleplayer.swf?docid=6062846100490041287&amp;hl=es&amp;fs=true style=width:400px;height:326px allowFullScreen=true allowScriptAccess=always type=application/x-shockwave-flash&gt; &lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Enlaces relacionados&lt;/b&gt;:&lt;br /&gt;&lt;a target="visor"  href="http://www.arearh.com/km/compartir_conocimiento.htm"&gt;¿Compartir el conocimiento?&lt;br /&gt;&lt;/a&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-6466965542622843499?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/6466965542622843499/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=6466965542622843499' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/6466965542622843499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/6466965542622843499'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2010/10/hay-que-compartir-el-conocimiento.html' title='¿Hay que compartir el conocimiento?'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-3063581551796618730</id><published>2009-12-28T13:09:00.000-08:00</published><updated>2009-12-28T13:09:58.506-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='seguridad'/><title type='text'>Cross site scripting en ASP.Net</title><content type='html'>Uno de los ataques más comunes en nuestras aplicaciones web (ASP.Net) es el XSS (Cross site scripting), consiste básicamente en inyectar código malicioso a través de los campos de formulario, que posteriomente se ejecuta en los navegadores cliente de forma transparente.&lt;br /&gt;&lt;br /&gt;Microsoft proporciona una librería para mitigar este tipo de vulnerabilidades llamada Microsoft &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=051ee83c-5ccf-48ed-8463-02f56a6bfc09&amp;displaylang=en" target="visor"&gt;Anti-Cross Site Scripting Library&lt;/a&gt;(Anti-XSS).&lt;br /&gt;&lt;br /&gt;Sobre esta librería la gente de OWASP ha construido otra llamada &lt;a href="http://www.owasp.org/index.php/ESAPI#tab=.NET"&gt;ESAPI.Net&lt;/a&gt;, la cual podemos descargar, junto con una aplicación de ejemplo de utilización, ubicada en Google Code(http://owasp-esapi-dotnet.googlecode.com/svn/trunk). &lt;br /&gt;&lt;br /&gt;ESAPI.Net necesita que se descargue por separado la Anti-XSS, y también &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9aeaa970-f281-4fb0-aba1-d59d7ed09772&amp;DisplayLang=en" target="visor"&gt;FxCop&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Más enlaces relacionados:&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/security/aa973814.aspx" target="visor"&gt;Anti-Cross Site Scripting Library&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-3063581551796618730?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/3063581551796618730/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=3063581551796618730' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/3063581551796618730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/3063581551796618730'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/12/cross-site-scripting-en-aspnet.html' title='Cross site scripting en ASP.Net'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-5871710649937739307</id><published>2009-12-14T15:11:00.000-08:00</published><updated>2009-12-14T15:11:56.453-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight3'/><title type='text'>FSP: Flyweight Silverlight Pattern - Parte 2</title><content type='html'>&lt;font size="+1"&gt;&lt;b&gt;La cache de assemblies&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Para lograr la cache de assemblies con SL, todas las ddls que componen o compondrán el proyecto se deben seguir los siguentes pasos:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Cada assembly deberá tener un "strong name"&lt;/li&gt;&lt;li&gt;Cada librería(.dll) deberá tener un fichero descriptivo "extmap"&lt;/li&gt;&lt;li&gt;Una vez logrado esto se ha de activar la cache de assemblies en la propiedades del proyecto.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;font size="+1"&gt;&lt;b&gt;Generando el strong name&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Propiedades del proyecto -&amp;gt; Signing &lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_mG-olUabbUE/Swv-9Mu4EOI/AAAAAAAAAOM/xfokD1AftxI/s1600/Composite.Silverlight.0.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_mG-olUabbUE/Swv-9Mu4EOI/AAAAAAAAAOM/xfokD1AftxI/s320/Composite.Silverlight.0.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hay que seleccionar el fichero snk a firmar o sino crear uno nuevo.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_mG-olUabbUE/Swv--hjt0cI/AAAAAAAAAOU/2UqA9rh5XTg/s1600/Composite.Silverlight.0_1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_mG-olUabbUE/Swv--hjt0cI/AAAAAAAAAOU/2UqA9rh5XTg/s320/Composite.Silverlight.0_1.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Si elegimos crear un fichero de firma, deberiamos indicarle un nombre y es recomendable también colocarle una contraseña.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_mG-olUabbUE/Swv_ABCAZDI/AAAAAAAAAOc/hxKttr6_BDQ/s1600/Composite.Silverlight.1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_mG-olUabbUE/Swv_ABCAZDI/AAAAAAAAAOc/hxKttr6_BDQ/s320/Composite.Silverlight.1.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="+1"&gt;&lt;b&gt;Generando el fichero descriptivo "extmap"&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Antes de generar el fichero descriptivo debemos compilar el proyecto y posteriormente obtener la "Public key token" de la dll resultante con la utilidad &lt;b&gt;sn.exe&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;La dll suele estar en C:\&lt;i&gt;directorioProyecto&lt;/i&gt;\Bin\Debug\&lt;i&gt;miproyecto.dll&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Para obtener la "Public key token" hay que abrir una consola, preferentemente la del visual studio ya que suele contener todos los PATHs correspondientes cargados.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_mG-olUabbUE/Swv_BGUQdvI/AAAAAAAAAOk/bSDcpn878Vk/s1600/Composite.Silverlight.2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_mG-olUabbUE/Swv_BGUQdvI/AAAAAAAAAOk/bSDcpn878Vk/s320/Composite.Silverlight.2.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Una vez en la consola hay que colocarnos en el directorio de la dll y utilizar la utilidad sn.exe con el parámetro -T.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_mG-olUabbUE/Swv_EBETfzI/AAAAAAAAAO0/t-_MYK-qN3k/s1600/Composite.Silverlight.4.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_mG-olUabbUE/Swv_EBETfzI/AAAAAAAAAO0/t-_MYK-qN3k/s320/Composite.Silverlight.4.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Imaginemos que la librería se llama System.Windows.Interactivity y su strong name es 31bf3856ad364c35, asi el fichero que debemos generar debe llamarse &lt;i&gt;System.Windows.Interactivity.&lt;b&gt;extmap&lt;/b&gt;.dll&lt;/i&gt; con el siguiente contenido:&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&amp;lt;manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" &lt;br /&gt;          xmlns:xsd="http://www.w3.org/2001/XMLSchema"&amp;gt;&lt;br /&gt;  &amp;lt;assembly&amp;gt;&lt;br /&gt;    &amp;lt;name&amp;gt;System.Windows.Interactivity&amp;lt;/name&amp;gt;&lt;br /&gt;    &amp;lt;version&amp;gt;1.0.0.0&amp;lt;/version&amp;gt;&lt;br /&gt;    &amp;lt;publickeytoken&amp;gt;31bf3856ad364c35&amp;lt;/publickeytoken&amp;gt;&lt;br /&gt;    &amp;lt;relpath&amp;gt;System.Windows.Interactivity.dll&amp;lt;/relpath&amp;gt;&lt;br /&gt;    &amp;lt;extension downloadUri="System.Windows.Interactivity.zip" /&amp;gt;&lt;br /&gt;  &amp;lt;/assembly&amp;gt;&lt;br /&gt;&amp;lt;/manifest&amp;gt;&lt;br /&gt;&lt;/pre&gt;Este fichero ha de estar dentro de la misma carpeta que la dll.&lt;br /&gt;&lt;br /&gt;&lt;font size="+1"&gt;&lt;b&gt;Activar la cache de assemblies del XAP&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;Finalmente en el proyecto principal (el shell en el caso de usar CAL) y todos los módulos que lo compondrán, hay que marcar la casilla "Reduce XAP size by using application library caching"&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_mG-olUabbUE/SybCg859jkI/AAAAAAAAAPE/MyUCGPfSINI/s1600-h/reduceXAP.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" rs="true" src="http://1.bp.blogspot.com/_mG-olUabbUE/SybCg859jkI/AAAAAAAAAPE/MyUCGPfSINI/s320/reduceXAP.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Esto acabará generando tantos ficheros .zip como referencias a librerías hayan con ficheros "&lt;b&gt;extmap&lt;/b&gt;" tenga el proyecto, dentro de la carpeta ClientBin del proyecto web donde se aloje el control.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Advertencia&lt;/b&gt; : Todas las referencias de todos los módulos que componen la aplicación, han de estar referenciadas en el proyecto del Shell.&lt;br /&gt;&lt;br /&gt;Enlaces relacionados:&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/dd833069(VS.95).aspx" target="visor"&gt;Cómo: Usar el almacenamiento en caché de biblioteca de aplicaciones &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-5871710649937739307?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/5871710649937739307/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=5871710649937739307' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/5871710649937739307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/5871710649937739307'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/12/fsp-flyweight-silverlight-pattern-parte.html' title='FSP: Flyweight Silverlight Pattern - Parte 2'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_mG-olUabbUE/Swv-9Mu4EOI/AAAAAAAAAOM/xfokD1AftxI/s72-c/Composite.Silverlight.0.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-7965062613170421518</id><published>2009-11-24T15:04:00.000-08:00</published><updated>2009-11-24T15:04:08.170-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight3'/><title type='text'>FSP: Flyweight Silverlight Pattern</title><content type='html'>Normalmente el objetivo de&amp;nbsp;desarrollar una aplicación RIA, esta es desarrollar una aplicación web, similar a una aplicación de escritorio, tanto en apariencia como en funcionalidad.&lt;br /&gt;&lt;br /&gt;Para lograr esta apariencia y esta funcionalidad, las aplicaciones se componen de páginas y&amp;nbsp;se nutren de imagenes, ficheros de recursos, librerías desarrolladas por nosotros&amp;nbsp;y en algunos casos distintos componentes comprados a terceros.&lt;br /&gt;&lt;br /&gt;Como ya es sabido, desarrollar una aplicación RIA con Silverlight genera un único fichero XAP, que aunque comprimido, lleva todos los ficheros necesarios dentro, por tanto estamos hablando de ficheros bastante grandes con tiempos de carga elevados. Y esto es buen problema!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;FSP&amp;nbsp;(Flyweight Silverlight Pattern)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Es una técnica para construir aplicaciones ligeras, de bajo acoplamiento y esta compuesta por la combinación de la caché de assemblies + CAL.&lt;br /&gt;&lt;br /&gt;Por que "&lt;a href="http://es.wikipedia.org/wiki/Flyweight_%28patr%C3%B3n_de_dise%C3%B1o%29" target="visor"&gt;flyweight&lt;/a&gt;"? Por que se &lt;strike&gt;intenta &lt;/strike&gt;reducir al máximo las dependencias redundantes de todos XAP que componen una aplicación construida sobre CAL.&lt;br /&gt;&lt;br /&gt;Silverlight 3, trae consigo la posibilidad de utilizar una cache de assemblies, esto se traduce en que una aplicacion se puede dividir en diferentes librerias las cuales se pueden ir descargando a medida que se van necesitando.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/dd833069(VS.95).aspx" target="visor"&gt;Cómo: Usar el almacenamiento en caché de biblioteca de aplicaciones&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pero solo utilizar la cache de assemblies, a veces, es insuficiente y provoca ciertas carencias, por ello, si&amp;nbsp;a esto sumamos CAL (Composite application library) como base para desarrollar aplicaciones pobremente acopladas; obtendremos unos assemblies bastante más ligeros, especializados&amp;nbsp;y en consecuencia más rápidos de cargar.&lt;br /&gt;&lt;br /&gt;En los siguientes post explicaré un poco más como conseguir aplicar &lt;b&gt;FSP&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-7965062613170421518?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/7965062613170421518/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=7965062613170421518' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/7965062613170421518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/7965062613170421518'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/11/fsp-flyweight-silverlight-pattern.html' title='FSP: Flyweight Silverlight Pattern'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-4006151931508735774</id><published>2009-11-09T00:46:00.000-08:00</published><updated>2009-11-23T01:41:44.620-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight3'/><title type='text'>Documentacion de Silverlight 3 en Castellano</title><content type='html'>Actualmente se puede descargar la documentación de SL3 en Castellano de la siguiente dirección:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=es&amp;amp;FamilyID=0a9773a7-c854-41fa-b73d-535abfb73baf" target="visor"&gt;Documentación de Microsoft® Silverlight™ 3 sin conexión&lt;/a&gt;&lt;br /&gt;Documentación en castellano sobre conceptos de SL3, componentes iniciales que trae, tecnologías que lo componen.&lt;br /&gt;&lt;br /&gt;Independientemente de la documentación anteriormente citada, el entorno de desarrollo debería estar compuesto de los siguientes elementos:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeplex.com/Silverlight/"&gt;Silverlight Toolkit&lt;/a&gt;&lt;br /&gt;Incluye código fuente, test unitarios, temas, ejemplos y documentación.&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://code.msdn.microsoft.com/silverlightut"&gt;Unit Test Framework for Microsoft Silverlight&lt;/a&gt;&lt;br /&gt;Silverlight Unit Test Framework (Microsoft.Silverlight.Testing) es una solución simple y extensible para realizar testing sobre nuestras aplicaciones hechas con SL.&lt;br /&gt;&lt;/blockquote&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=fa07e1ce-ca3f-4b9b-a21b-e3fa10d013dd&amp;amp;displaylang=en" target="visor"&gt;Composite Application Guidance for WPF and Silverlight - February 2009&lt;/a&gt;&lt;br /&gt;Es una guia que nos ayuda a diseñar y construir aplicaciones compuestas con WPF a un nivel empresarial (aplicaciones débilmente acopladas).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=1EA49236-0DE7-41B1-81C8-A126FF39975B&amp;amp;displaylang=en" target="visor"&gt;Microsoft® Silverlight™ 3 SDK&lt;/a&gt;&lt;br /&gt;Descarga del SDK de SL3&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=1643758B-2986-47F7-B529-3E41584B6CE5&amp;amp;displaylang=en"&gt;Microsoft Enterprise Library 4.1 – October 2008 (.Net 3.5 y VS2008)&lt;/a&gt;&lt;br /&gt;Es una colección de componentes software reutilizables, diseñados para asistir a los desarrolladores de software en tareas comunes como pueden ser: Caching, Cryptography, Data Access, Exception Handling, Logging, Policy Injection, Security, Validation, y Unity.&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=AB3F2168-FEA1-4FC2-B40C-7867D99D4B6A&amp;amp;displaylang=en"&gt;Hands-On Labs for Enterprise Library 4.1&lt;/a&gt;&lt;br /&gt;Incluye laboratorios de Caching, Cryptography, Data Access, Exception Handling, Interception, Logging, Security, Validation, y Unity. &lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=DF79C099-4753-4A59-91E3-5020D9714E4E&amp;amp;displaylang=en"&gt;Guidance Automation Extensions - February 2008 Release&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=B91066B3-D1D6-4990-A45F-34CF8DBDC60C&amp;amp;displaylang=en"&gt;Guidance Automation Toolkit for Visual Studio 2008 - February 2008 Release&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=E28205C6-BB07-401B-9A76-804784598BF0&amp;amp;displaylang=en"&gt;Guidance Automation Extensions for Visual Studio 2008 and Visual Studio 2008 Service Pack 1 Update (GAXP1409)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=47755838-049B-4291-AFEA-A379AE28D7B3&amp;amp;displaylang=en"&gt;Web Client Software Factory - February 2008&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=0991CEDB-953A-4367-A2B6-071E31766B4C&amp;amp;displaylang=en"&gt;Unity Application Block 1.2 for Silverlight - December 2008&lt;/a&gt;&lt;br /&gt;Es un contenedor que nos permite aplicar IoC y DI en nuestras aplicaciones (similar a Spring), facilita la creación de aplicaciones débilmente acopladas, entre otras cosas nos evita crear objetos y nos proporciona unas factorias para hacerlo, permitiendo cambiar las dependencias en tiempo de ejecución.&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=9612B06E-14C1-4226-A092-2472DCC81B51&amp;amp;displaylang=en"&gt;Unity Application Block 1.2 Documentation for Visual Studio 2008&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;a href="http://www.c-sharpcorner.com/UploadFile/dpatra/UsingprismQuickStartKitForSilverlight3PartI07212009022442AM/UsingprismQuickStartKitForSilverlight3PartI.aspx"&gt;Using Prism Quick Start Kit for Silverlight 3&lt;/a&gt;&lt;br /&gt;Conjunto de plantillas de proyectos para ayudarnos a implantar PRISM para SL.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/DOWNLOADS/details.aspx?FamilyID=f1ae9a30-4928-411d-970b-e682ab179e17&amp;displaylang=en"&gt;Microsoft Expression Blend 3 SDK&lt;/a&gt; Con las librerias de este SDK podemos enchufar fácilmente comportamiento a los eventos de los objetos según el patron MVVM.&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-4006151931508735774?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/4006151931508735774/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=4006151931508735774' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/4006151931508735774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/4006151931508735774'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/10/documentacion-de-silverlight-3-en.html' title='Documentacion de Silverlight 3 en Castellano'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-315108015448896921</id><published>2009-11-03T05:57:00.000-08:00</published><updated>2009-11-03T06:00:53.714-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><title type='text'>Sirviendo ficheros xml incompletos</title><content type='html'>Hoy me ha vuelto a salir un viejo error del cual no recordaba la solución.&lt;br /&gt;&lt;br /&gt;Resulta que estoy sirviendo ficheros xml (que se generan dinámicamente) desde una página asp.net; pero en la descarga se me devuelve el fichero incompleto, normalmente se "pierde/o quita" el caracter de cierre del nodo raiz (&lt;b&gt;&amp;gt;&lt;/b&gt;).&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;String sxml = builder.ConstruyeXML(obj);&lt;br /&gt;Response.AddHeader("Content-Disposition", "attachment; filename=fich_" + id + ".xml");&lt;br /&gt;Response.ContentType = "text/xml";&lt;br /&gt;Response.Write(sxml);&lt;br /&gt;Response.Flush();&lt;br /&gt;Response.End();&lt;br /&gt;&lt;/pre&gt;La solución ha sido añadirle un retorno de carro al final del xml a devolver:&lt;br /&gt;&lt;pre class="java" name="code"&gt;String sxml = builder.ConstruyeXML(obj) + &lt;b&gt;"\r\n"&lt;/b&gt;;&lt;br /&gt;&lt;/pre&gt;Es cutre, si!!! y no se si realmente es la forma mas efectiva, lo que si es seguro, es que funciona.&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-315108015448896921?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/315108015448896921/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=315108015448896921' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/315108015448896921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/315108015448896921'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/11/sirviendo-ficheros-xml-incompletos.html' title='Sirviendo ficheros xml incompletos'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-4975243846035525921</id><published>2009-07-07T03:56:00.000-07:00</published><updated>2009-07-07T14:57:57.821-07:00</updated><title type='text'>Sys.WebForms.PageRequestManagerServerErrorException 405</title><content type='html'>En mi proyecto actual estamos utilizando UpdatePanels y Web User Controls en una aplicación ASP.NET; y últimamente en mi máquina y alguna otra, han saltado unos popups en IE con un error 405.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server. The status code returned from the server was: 405&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_mG-olUabbUE/SlMq3xlRHhI/AAAAAAAAAK8/t2uVjBPfzWc/s1600-h/SysWebForms405.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 50px;" src="http://2.bp.blogspot.com/_mG-olUabbUE/SlMq3xlRHhI/AAAAAAAAAK8/t2uVjBPfzWc/s320/SysWebForms405.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5355671519564471826" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La documentacion de Microsoft da diversas explicaciones variopintas, ninguna de ellas sin embargo solventa el problema.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;La solución:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;En mi caso fue ir al formulario del site.master y quitar el attributo action.&lt;br /&gt;&lt;br /&gt;Antes&lt;br /&gt;&amp;lt;form id="formMaster" class="miCss" action="#" runat="server"&gt;&lt;br /&gt;&lt;br /&gt;Después&lt;br /&gt;&amp;lt;form id="formMaster" class="miCss" runat="server"&gt;&lt;br /&gt;&lt;br /&gt;Y ya esta, problema solucionado!&lt;br /&gt;&lt;br /&gt;Gracias Marc!&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-4975243846035525921?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/4975243846035525921/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=4975243846035525921' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/4975243846035525921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/4975243846035525921'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/07/syswebformspagerequestmanagerservererro.html' title='Sys.WebForms.PageRequestManagerServerErrorException 405'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_mG-olUabbUE/SlMq3xlRHhI/AAAAAAAAAK8/t2uVjBPfzWc/s72-c/SysWebForms405.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-7520018298959540690</id><published>2009-07-06T08:26:00.000-07:00</published><updated>2009-07-06T08:37:05.658-07:00</updated><title type='text'>Office Web Translation y Altavista</title><content type='html'>Hace algún tiempo cree un Addin para Office 2007, el cual se encargaba de traducir textos entre diferentes idiomas utilizando los diferentes engines disponibles actualmente en Internet, en la configuarción por defecto viene Google, Altavista y OpenTrad (ingles-castellano-catalan .....otros)&lt;br /&gt;&lt;br /&gt;Pero hoy me vengo a dar cuenta que la dirección web de traducción de babelfish ha cambiado y por tanto las traducciones dentro word no las hace.&lt;br /&gt;&lt;br /&gt;Para solucionar este problema simplente en la parte de WebEngines se ha de actualizar la dirección de altavista a:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;http://babelfish.yahoo.com/translate_txt?ei=UTF-8&amp;doit=done&amp;fr=bf-res&amp;intl=1&amp;tt=urltext&amp;trtext=[#text#]&amp;lp=[#langFrom#]_[#langTo#]&amp;btnTrTxt=Translate&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Y solo queda actualizar el valor del campo Tag contaniner a:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&amp;lt;div id="result"&gt;&amp;lt;div style="padding:0.6em;"&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Esto último es devido a que utilizo técnicas de screen-scrapping para obtener la traducción y mostrarla en los formularios.&lt;br /&gt;&lt;br /&gt;Y ya esta!!! problema solucionado.&lt;br /&gt;&lt;br /&gt;El Addin para Office se encuentra en :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://translationdictionar.codeplex.com/" target="visor"&gt;http://translationdictionar.codeplex.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-7520018298959540690?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/7520018298959540690/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=7520018298959540690' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/7520018298959540690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/7520018298959540690'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/07/office-web-translation-y-altavista.html' title='Office Web Translation y Altavista'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-1574311439873491528</id><published>2009-06-22T16:21:00.000-07:00</published><updated>2009-06-22T16:33:00.450-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS2005'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2008 VS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Subversion para VS2005, VS2008 y VS2010</title><content type='html'>Por fin!!! parece que el add-in para VS llamado &lt;strong&gt;ankhsvn&lt;/strong&gt; ha alcanzado un grado de madurez aceptable (la última vez que lo probé fue hace 3 años).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ankhsvn.open.collab.net/servlets/ProjectProcess?pageID=3794" target="visor"&gt;http://ankhsvn.open.collab.net/servlets/ProjectProcess?pageID=3794&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Haré unas cuantas pruebas más usando branch .... &lt;br /&gt;&lt;br /&gt;Pero todo esto quiere decir que podre dejar de usar VSS y olvidarme de todos los problemas que lecturas fantasmas que me origina cuando modificamos muchos ficheros o hacemos refactoring sobre los proyectos .Net &lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-1574311439873491528?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/1574311439873491528/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=1574311439873491528' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/1574311439873491528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/1574311439873491528'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/06/subversion-para-vs2005-vs2008-y-vs2010.html' title='Subversion para VS2005, VS2008 y VS2010'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-8375711382158016900</id><published>2009-06-15T17:01:00.000-07:00</published><updated>2009-06-15T17:04:00.376-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><title type='text'>Manejo de sessiones en ASP.NET</title><content type='html'>Un artículo muy bueno que trata todos los aspectos del manejo de sessiones asp.net; sus tipos, configuración, balanceo de carga, granjas de servidores&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeproject.com/KB/aspnet/ExploringSession.aspx"&gt;Exploring Session in ASP.Net&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Es sencillamente bueno y conciso.&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-8375711382158016900?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/8375711382158016900/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=8375711382158016900' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/8375711382158016900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/8375711382158016900'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/06/manejo-de-sessiones-en-aspnet.html' title='Manejo de sessiones en ASP.NET'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-4316703793603681407</id><published>2009-06-04T14:54:00.000-07:00</published><updated>2009-06-14T15:54:25.229-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='screencast'/><title type='text'>VS 2010 y .NET 4.0</title><content type='html'>Entrevista a Eric Nelson, el cual habla sobre VS2010 (la verdad poco), .Net 4.0, la tendencia C# y VB.NET de ir juntos en adelante, introducción a la programación de procesos en paralelo y finalmente conceptos de cloud computing (Azure).&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="283"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://www.infoq.com/flash/FLVScrubber.swf?file=http://flv.thruhere.net/interviews/09-mar-ericnelson.flv" /&gt;&lt;embed src="http://www.infoq.com/flash/FLVScrubber.swf?file=http://flv.thruhere.net/interviews/09-mar-ericnelson.flv" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="283"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.infoq.com/interviews/VS2010-Eric-Nelson"&gt;Video original en inglés con transcripción&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://emmersonmiranda-net.blogspot.com/2009/05/c-y-vbnet-juntos.html"&gt;C# y VB.NET juntos&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/es-es/vstudio/dd582936(en-us).aspx"&gt;Visual Studio 2010 and .NET Framework 4 Beta (tiene enlaces de descarga)&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-4316703793603681407?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/4316703793603681407/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=4316703793603681407' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/4316703793603681407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/4316703793603681407'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/06/vs-2010-y-net-40.html' title='VS 2010 y .NET 4.0'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-5237878739669739703</id><published>2009-05-25T18:00:00.000-07:00</published><updated>2009-05-25T00:48:49.792-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='svg'/><title type='text'>Convirtiendo imagenes SVG a otros formatos gráficos con SharpVectorGraphics</title><content type='html'>&lt;strong&gt;SharpVectorGraphics&lt;/strong&gt; es un proyecto open source basado en .NET, y tiene como objetivo hacer la vida mas fácil a las aplicaciones que desean usar gráficos SVG (ver, generar o manipular)&lt;br /&gt;&lt;br /&gt;SVG es una especificación de gráficos vectoriales usando XML del W3C, permitiendo a las aplicaciones intercambiar gráficos fácilmente usando un formato común, pudiendose renderizar una sola imagen a cualquier tamaño sin perder calidad. Lamentablemente solo firefox ofrece la posibilidad de renderizarlos sin necesidad de ningún plugin adicional, mientras que por ejemplo para IE es necesario instalar un ActiveX como lo es el SVG Viewer de Adobe.&lt;br /&gt;&lt;br /&gt;Una de las principales características que ofrece este framework es poder convertir imagenes SVG a otros formatos usando el motor de renderización GDI, a continuación coloco un snippet de esta característica.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;private Bitmap SVG2Bitmap(string conteSVG) {&lt;br /&gt;    GdiRenderer renderer = new GdiRenderer();&lt;br /&gt;    renderer.ClearMap();&lt;br /&gt;&lt;br /&gt;    SvgWindow window = new SvgWindow(200, 200, renderer);&lt;br /&gt;    SvgDocument document = new SvgDocument(window);&lt;br /&gt;    renderer.Window = window;&lt;br /&gt;    window.Renderer = renderer;&lt;br /&gt;    document.LoadXml(conteSVG);&lt;br /&gt;    window.Document = document;&lt;br /&gt;&lt;br /&gt;    ISvgSvgElement svgEl = window.Document.RootElement;&lt;br /&gt;    window.InnerWidth = (int)svgEl.Width.BaseVal.Value;&lt;br /&gt;    window.InnerHeight = (int)svgEl.Height.BaseVal.Value;&lt;br /&gt;&lt;br /&gt;    renderer.Render(window.Document as SvgDocument);&lt;br /&gt;&lt;br /&gt;    Bitmap rasterImage = ((GdiRenderer)window.Renderer).RasterImage;&lt;br /&gt;    return rasterImage;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;..........&lt;br /&gt;Bitmap image = SVG2Bitmap(strConte);&lt;br /&gt;image.Save("c:\\imagenTransformada.gif", ImageFormat.Gif);&lt;br /&gt;..........&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Después de hacer muchas pruebas con imagenes SVG complejas, que no todos los &lt;a href="http://wiki.svg.org/Viewer_Implementations"&gt;visualizadores&lt;/a&gt; actuales son capaces de renderizar, creo que este es un proyecto bastante maduro, pese a estar en una version Alfa desde el 2005, además creo que este framework suple la NO traducción del proyecto &lt;strong&gt;Batik de Apache&lt;/strong&gt; para poder ser usado con &lt;strong&gt;NFop &lt;/strong&gt;en lo referente a generar documentos &lt;strong&gt;PDF&lt;/strong&gt; con imagenes SVG incrustadas.&lt;br /&gt;&lt;br /&gt;Enlaces relacionados:&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/svgdomcsharp/"&gt;SharpVectorGraphics (aka SVG#)&lt;/a&gt; &lt;br /&gt;&lt;a href="http://wiki.svg.org/Main_Page"&gt;SVG-Wiki&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-5237878739669739703?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/5237878739669739703/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=5237878739669739703' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/5237878739669739703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/5237878739669739703'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/05/convirtiendo-imagenes-svg-otros.html' title='Convirtiendo imagenes SVG a otros formatos gráficos con SharpVectorGraphics'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-8628647227434989539</id><published>2009-05-22T13:00:00.000-07:00</published><updated>2009-05-22T13:00:00.707-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arquitectura'/><category scheme='http://www.blogger.com/atom/ns#' term='screencast'/><title type='text'>Creando aplicaciones con Prism V2</title><content type='html'>PRISM es la guia para crear aplicaciones WPF y Silverlight.&lt;br /&gt;&lt;br /&gt;La suma total de tiempo de todos los videos es aproximadamente 1:10 minutos.&lt;br /&gt;&lt;br /&gt;Video 1 (Creando el esqueleto)&lt;br /&gt;&lt;object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="320" height="240"&gt;&lt;br /&gt;&lt;param name="source" value="http://channel9.msdn.com/App_Themes/default/vp09_04_23.xap" /&gt;&lt;br /&gt;&lt;param name="initParams" value="m=mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/6/8/6/8/5/4/PrismV2ScreencastonModularity_s_ch9.wmv,autostart=false,autohide=true,showembed=true, thumbnail=http://mschnlnine.vo.llnwd.net/d1/ch9/6/8/6/8/5/4/PrismV2ScreencastonModularity_large_ch9.png, postid=458686" /&gt;&lt;br /&gt;&lt;param name="background" value="#00FFFFFF" /&gt;&lt;br /&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"&gt;&lt;br /&gt;&lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Video 2(composición visual)&lt;br /&gt;&lt;object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="320" height="240"&gt;&lt;br /&gt;&lt;param name="source" value="http://channel9.msdn.com/App_Themes/default/vp09_04_23.xap" /&gt;&lt;br /&gt;&lt;param name="initParams" value="m=mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/7/1/8/8/5/4/PrismV2ScreencastonVisualComposition_s_ch9.wmv,autostart=false,autohide=true,showembed=true, thumbnail=http://mschnlnine.vo.llnwd.net/d1/ch9/7/1/8/8/5/4/PrismV2ScreencastonVisualComposition_large_ch9.png, postid=458817" /&gt;&lt;br /&gt;&lt;param name="background" value="#00FFFFFF" /&gt;&lt;br /&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"&gt;&lt;br /&gt;&lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Video 3 (Implementando vistas y servicios)&lt;br /&gt;&lt;object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="320" height="240"&gt;&lt;br /&gt;&lt;param name="source" value="http://channel9.msdn.com/App_Themes/default/vp09_04_23.xap" /&gt;&lt;br /&gt;&lt;param name="initParams" value="m=mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/4/5/8/8/5/4/Prismv2ScreencastonImplementingviews_s_ch9.wmv,autostart=false,autohide=true,showembed=true, thumbnail=http://mschnlnine.vo.llnwd.net/d1/ch9/4/5/8/8/5/4/Prismv2ScreencastonImplementingviews_large_ch9.png, postid=458854" /&gt;&lt;br /&gt;&lt;param name="background" value="#00FFFFFF" /&gt;&lt;br /&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"&gt;&lt;br /&gt;&lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Video 4 (comunicación asíncrona)&lt;br /&gt;&lt;object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="320" height="240"&gt;&lt;br /&gt;&lt;param name="source" value="http://channel9.msdn.com/App_Themes/default/vp09_04_23.xap" /&gt;&lt;br /&gt;&lt;param name="initParams" value="m=mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/5/5/8/8/5/4/Prismv2ScreencastonCommunication_s_ch9.wmv,autostart=false,autohide=true,showembed=true, thumbnail=http://mschnlnine.vo.llnwd.net/d1/ch9/5/5/8/8/5/4/Prismv2ScreencastonCommunication_large_ch9.png, postid=458855" /&gt;&lt;br /&gt;&lt;param name="background" value="#00FFFFFF" /&gt;&lt;br /&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"&gt;&lt;br /&gt;&lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-8628647227434989539?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/8628647227434989539/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=8628647227434989539' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/8628647227434989539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/8628647227434989539'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/05/creando-aplicaciones-con-prism-v2.html' title='Creando aplicaciones con Prism V2'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-576737468004572502</id><published>2009-05-19T15:36:00.000-07:00</published><updated>2009-05-19T16:05:09.122-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='screencast'/><title type='text'>C# y VB.NET juntos</title><content type='html'>Al parecer estos dos lenguajes de programación dejaran de andar por separado para empezar a andar juntos; el video dura aproximadamente 33 minutos.&lt;br /&gt;&lt;br /&gt;&lt;object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="320" height="240"&gt;&lt;br /&gt;&lt;param name="source" value="http://channel9.msdn.com/App_Themes/default/vp09_04_23.xap" /&gt;&lt;br /&gt;&lt;param name="initParams" value="m=mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/0/2/1/8/6/4/LucaCSharpVBNETCoEvolution_s_ch9.wmv,autostart=false,autohide=true,showembed=true, thumbnail=http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/1/8/6/4/LucaCSharpVBNETCoEvolution_large_ch9.png, postid=468120" /&gt;&lt;br /&gt;&lt;param name="background" value="#00FFFFFF" /&gt;&lt;br /&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"&gt;&lt;br /&gt;&lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Después de este video creo que acabare haciendo algún pinito con F# :-)&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-576737468004572502?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/576737468004572502/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=576737468004572502' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/576737468004572502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/576737468004572502'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/05/c-y-vbnet-juntos.html' title='C# y VB.NET juntos'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-1603781362668373681</id><published>2009-04-30T06:46:00.000-07:00</published><updated>2009-04-30T06:52:48.750-07:00</updated><title type='text'>No se pueden cargar archivos grandes cuando utiliza el control de servidor HtmlInputFile</title><content type='html'>Normalmente cuando subimos ficheros a las aplicaciones ASP.Net utilizando el control HtmlInputFile, el servidor nos suele dar un fallo despues de haber realizado la subida del fichero.&lt;br /&gt;&lt;br /&gt;Eso es por que el tamaño máximo por defecto en el servidor es de 4MB, para cambiar este valor hay que modificar el fichero Machine.config y colocarle el tamaño máximo deseado.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;httpRuntime maxRequestLength="8192" /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Bien, a lo mejor despues de este punto nos interesa poder consultar el tamaño máximo soportado utilizando código (desde código C# o VB.Net), para ello disponemos de la propiedad &lt;strong&gt;MaxRequestLength  &lt;/strong&gt;de la clase &lt;strong&gt;HttpRuntimeSection&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Enlaces relacionados:&lt;br /&gt;&lt;br /&gt;http://msdn.microsoft.com/en-us/library/system.web.configuration.httpruntimesection.maxrequestlength.aspx&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-1603781362668373681?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/1603781362668373681/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=1603781362668373681' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/1603781362668373681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/1603781362668373681'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/04/no-se-pueden-cargar-archivos-grandes.html' title='No se pueden cargar archivos grandes cuando utiliza el control de servidor HtmlInputFile'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-2632700199357305455</id><published>2009-04-29T05:55:00.001-07:00</published><updated>2009-04-29T06:02:38.327-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><title type='text'>Como acceder a la session desde un HttpHandler</title><content type='html'>Por defecto todo Handler que implementamos en nuestras aplicaciones web no tienen acceso a la session, es decir en el contexto de la petición actual el IIS no carga los datos de la session (valga la redundancia).&lt;br /&gt;&lt;br /&gt;Para hacer que la session sea accesible desde los Handlers, además de implementar  IHttpHandler, también hay que implementar la interfaz IRequiresSessionState, la cual no tiene definido ningún método.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public class DownloadFideHandler : IHttpHandler, &lt;br /&gt;           System.Web.SessionState.IRequiresSessionState {&lt;br /&gt;&lt;br /&gt;  public void ProcessRequest(HttpContext context) {&lt;br /&gt;    ...&lt;br /&gt;  }&lt;br /&gt;  public bool IsReusable{&lt;br /&gt;      get { return true; }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Enlaces relacionados:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.web.sessionstate.irequiressessionstate.aspx"&gt;http://msdn.microsoft.com/en-us/library/system.web.sessionstate.irequiressessionstate.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-2632700199357305455?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/2632700199357305455/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=2632700199357305455' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/2632700199357305455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/2632700199357305455'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/04/como-acceder-la-session-desde-un.html' title='Como acceder a la session desde un HttpHandler'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-8141808586231966362</id><published>2009-04-27T03:17:00.000-07:00</published><updated>2009-04-27T03:32:56.163-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='split'/><category scheme='http://www.blogger.com/atom/ns#' term='silverlight2'/><title type='text'>Cambio de color de un control silverlight utilizando parámetros</title><content type='html'>Si se quiere parametrizar los colores de nuestros controles Silverlight2, recibiendo los valores exadecimales por parámetro deberiamos seguir los siguientes pasos:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Pasar el valor del color como parámetro como una cadena de texto&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Convertir esta cadena de texto en un color&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Asignar el nuevo color al control&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Pasar el valor del color como parámetro como una cadena de texto y recogerlo&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;if (initParams.ContainsKey("ColorFondo")) {&lt;br /&gt;                ChangeBackgroudColor(initParams["ColorFondo"]);&lt;br /&gt;            }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Asignar el nuevo color al control&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;private void ChangeBackgroudColor(string colorHexadecimal) {&lt;br /&gt;            Color cc = HexStringToColor(colorHexadecimal);&lt;br /&gt;            this.contenedor.SetValue(Canvas.BackgroundProperty, new SolidColorBrush(cc));&lt;br /&gt;        }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Convertir esta cadena de texto en un color&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;        /// &lt;summary&gt;&lt;br /&gt;        /// Extract only the hex digits from a string.&lt;br /&gt;        /// &lt;/summary&gt;&lt;br /&gt;        public static string ExtractHexDigits(string input) {&lt;br /&gt;            // remove any characters that are not digits (like #)&lt;br /&gt;            Regex isHexDigit = new Regex("[abcdefABCDEF\\d]+");&lt;br /&gt;            string newnum = "";&lt;br /&gt;            foreach (char c in input) {&lt;br /&gt;                if (isHexDigit.IsMatch(c.ToString()))&lt;br /&gt;                    newnum += c.ToString();&lt;br /&gt;            }&lt;br /&gt;            return newnum;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        /// &lt;summary&gt;&lt;br /&gt;        /// Convert a hex string to a .NET Color object.&lt;br /&gt;        /// &lt;/summary&gt;&lt;br /&gt;        /// &lt;param name="hexColor"&gt;a hex string: "FFFFFF", "#000000"&lt;/param&gt;&lt;br /&gt;        public static Color HexStringToColor(string hexColor) {&lt;br /&gt;            string hc = ExtractHexDigits(hexColor);&lt;br /&gt;            if (hc.Length != 6) {&lt;br /&gt;                return Colors.Transparent;&lt;br /&gt;            }&lt;br /&gt;            string r = hc.Substring(0, 2);&lt;br /&gt;            string g = hc.Substring(2, 2);&lt;br /&gt;            string b = hc.Substring(4, 2);&lt;br /&gt;            Color color;&lt;br /&gt;            try {&lt;br /&gt;                color = Color.FromArgb(100,&lt;br /&gt;                    System.Convert.ToByte(r, 16),&lt;br /&gt;                    System.Convert.ToByte(g, 16),&lt;br /&gt;                    System.Convert.ToByte(b, 16));&lt;br /&gt;            } catch {&lt;br /&gt;                // you can choose whether to throw an exception&lt;br /&gt;                //throw new ArgumentException("Conversion failed.");&lt;br /&gt;                return Colors.Transparent;&lt;br /&gt;            }&lt;br /&gt;            return color;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Enlaces relacionados : &lt;br /&gt;&lt;br /&gt;&lt;a href="http://emmersonmiranda-net.blogspot.com/2008/10/paso-de-parmetros-de-inicializacin.html"&gt;Paso de parámetros de inicialización a aplicaciones Silverlight 2 &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-8141808586231966362?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/8141808586231966362/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=8141808586231966362' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/8141808586231966362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/8141808586231966362'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/04/cambio-de-color-de-un-control.html' title='Cambio de color de un control silverlight utilizando parámetros'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-5928288430438484985</id><published>2009-04-20T06:22:00.000-07:00</published><updated>2009-04-20T06:30:51.432-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arquitectura'/><title type='text'>KOBE</title><content type='html'>kit de recursos para la planificación, la arquitectura, y la ejecución de aplicaciones Web 2.0 y servicios utilizando la plataforma de Microsoft. &lt;br /&gt;&lt;br /&gt;En su página se pueden encontrar una serie de videos introductorios junto con una aplicación de ejemplo.&lt;br /&gt;&lt;br /&gt;http://msdn.microsoft.com/es-es/architecture/bb194897(en-us).aspx&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-5928288430438484985?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/5928288430438484985/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=5928288430438484985' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/5928288430438484985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/5928288430438484985'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/04/kobe.html' title='KOBE'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-647709509964027946</id><published>2009-04-17T10:38:00.000-07:00</published><updated>2009-04-18T06:07:40.939-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight2'/><title type='text'>Silverlight Shining</title><content type='html'>&lt;a href="http://www.theserverside.net/tt/cartoons/SilverlightShining/SilverlightShining.gif"&gt;&lt;img style="WIDTH: 487px; CURSOR: hand; HEIGHT: 239px" alt="" src="http://www.theserverside.net/tt/cartoons/SilverlightShining/SilverlightShining.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;- FIN -&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-647709509964027946?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/647709509964027946/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=647709509964027946' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/647709509964027946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/647709509964027946'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/04/silverlight-shining.html' title='Silverlight Shining'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-3736318949568296973</id><published>2009-04-07T07:02:00.000-07:00</published><updated>2009-04-07T07:20:05.625-07:00</updated><title type='text'>Informe 2008</title><content type='html'>El día 1 de Junio del 2008 decidi incorporar google analytics a mis blogs de Java y .Net un poco para ver las visitas y los lugares desde los cuales se realizan.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;En el blog .Net :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Los resultados arrojados por este es que IE fue el navegador mas utilizado con un 55%, seguido por firefox y otros de los cuales desconocia su existencia.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_mG-olUabbUE/SdtebRNwGQI/AAAAAAAAAIk/4yUAVxHdrW8/s1600-h/navegadores2008-net.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5321951207238932738" style="WIDTH: 200px; CURSOR: hand; HEIGHT: 166px" alt="" src="http://3.bp.blogspot.com/_mG-olUabbUE/SdtebRNwGQI/AAAAAAAAAIk/4yUAVxHdrW8/s200/navegadores2008-net.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Se registraron 877 visitas de 28 paises. Por mi parte solo queda agradecer al Top 10 de paises visitantes que figuran en la siguiente imagen.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_mG-olUabbUE/SdtfU98ee6I/AAAAAAAAAIs/ZAcyAWM2oYA/s1600-h/navegadores2008-net.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5321952198498614178" style="WIDTH: 200px; CURSOR: hand; HEIGHT: 166px" alt="" src="http://3.bp.blogspot.com/_mG-olUabbUE/SdtfU98ee6I/AAAAAAAAAIs/ZAcyAWM2oYA/s200/navegadores2008-net.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_mG-olUabbUE/SdtXHN4RrEI/AAAAAAAAAIc/hKR5a3DO4BA/s1600-h/informe2008.jpg"&gt;&lt;/a&gt;&lt;br /&gt;En lo que va del 2009 de momento hay registrados 1.054 accesos y 30 paises.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enlaces relacionados :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://emmersonmiranda.blogspot.com/2009/04/informe-2008.html"&gt;Informe 2008 blog Java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-3736318949568296973?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/3736318949568296973/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=3736318949568296973' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/3736318949568296973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/3736318949568296973'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/04/informe-2008.html' title='Informe 2008'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_mG-olUabbUE/SdtebRNwGQI/AAAAAAAAAIk/4yUAVxHdrW8/s72-c/navegadores2008-net.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-407212472908939497</id><published>2009-02-17T03:22:00.000-08:00</published><updated>2009-02-17T03:35:48.582-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>Extracción de parametros de una URL</title><content type='html'>Un problema que de cuando en cuando vuelve, es la extracción de los parametros de una URL cargada con el método GET, desde su propia página (utilizando javascript).&lt;br /&gt;&lt;br /&gt;El siguiente método javascript, utilizando expresiones regulares, ayuda en la labor de extraer el valor de un parametro de la url.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;function ExtraeParametroGet( parameterName ){&lt;br /&gt;   parameterName = parameterName.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");&lt;br /&gt;   var regexS = "[\\?&amp;amp;]"+parameterName +"=([^&amp;amp;#]*)";&lt;br /&gt;   var regex = new RegExp( regexS );&lt;br /&gt;   var results = regex.exec( window.location.href );&lt;br /&gt;   if( results == null )&lt;br /&gt;      return "";&lt;br /&gt;   else&lt;br /&gt;      return results[1];&lt;br /&gt;   }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Suponiendo que en la url tenemos es la siguiente : &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;http://../../../GoogleMaps.aspx?&lt;strong&gt;SearchLocation&lt;/strong&gt;=&lt;strong&gt;calle%20barcelona&lt;/strong&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;La forma mas adecuada de obtener la dirección recibida por parametro, desde el javascript de la página GoogleMaps.aspx, seria seria:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;var paramValue = ExtraeParametroGet("&lt;strong&gt;SearchLocation&lt;/strong&gt;");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-407212472908939497?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/407212472908939497/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=407212472908939497' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/407212472908939497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/407212472908939497'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/02/extraccion-de-parametros-de-una-url.html' title='Extracción de parametros de una URL'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-8728443971478912444</id><published>2009-02-12T00:52:00.000-08:00</published><updated>2009-02-12T00:53:47.243-08:00</updated><title type='text'>Ejemplo de Cache para ASP.Net</title><content type='html'>El siguiente artículo detalla algunos aspectos básicos sobre el uso de la cache en ASP.Net&lt;br /&gt;&lt;br /&gt;http://dotnetperls.com/Content/Cache-Examples-ASPNET.aspx&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-8728443971478912444?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/8728443971478912444/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=8728443971478912444' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/8728443971478912444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/8728443971478912444'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/02/ejemplo-de-cache-para-aspnet.html' title='Ejemplo de Cache para ASP.Net'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-3725327575896228503</id><published>2009-02-09T06:53:00.000-08:00</published><updated>2009-02-09T06:58:11.575-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='errores'/><title type='text'>System.Xml.XmlException: Falta el elemento raíz</title><content type='html'>Si alguna vez os ha salido un fallo del tipo :&lt;br /&gt;&lt;br /&gt;Detalles de la excepción: System.Xml.XmlException: Falta el elemento raíz.&lt;br /&gt;&lt;br /&gt;Probablemente esteis cargado un XmlReader con un stream (&lt;em&gt;XmlReader.Create(_fichero);&lt;/em&gt;), el cual previamente a sido leido por otra parte del código.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El fallo es muy simple, cuando se ha leido previamente el puntero queda al final del stream, por tanto hay que volver a posicionarlo al principio de este.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;_fichero.Seek(0, SeekOrigin.Begin);&lt;/strong&gt;&lt;br /&gt;(_fichero es un System.IO.Stream)&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-3725327575896228503?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/3725327575896228503/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=3725327575896228503' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/3725327575896228503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/3725327575896228503'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/02/systemxmlxmlexception-falta-el-elemento.html' title='System.Xml.XmlException: Falta el elemento raíz'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-6625797287548196975</id><published>2009-01-21T02:34:00.001-08:00</published><updated>2009-01-21T02:36:50.282-08:00</updated><title type='text'>Formatos de conversion a strings</title><content type='html'>Este documento tiene un listado con los diferentes tipos de formatos de salida que podemos aplicar a nuestros objetos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enlaces relacionados:&lt;br /&gt;&lt;a href="http://john-sheehan.com/blog/wp-content/uploads/msnet-formatting-strings.pdf"&gt;http://john-sheehan.com/blog/wp-content/uploads/msnet-formatting-strings.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-6625797287548196975?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/6625797287548196975/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=6625797287548196975' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/6625797287548196975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/6625797287548196975'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2009/01/formatos-de-conversion-strings.html' title='Formatos de conversion a strings'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-3622099979450364950</id><published>2008-12-03T08:37:00.000-08:00</published><updated>2008-12-03T09:52:40.470-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='svg'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='handlers'/><category scheme='http://www.blogger.com/atom/ns#' term='errores'/><title type='text'>Sirviendo gráficos SVG dinámicamente</title><content type='html'>Para mostrar imagenes SVG dentro de un html disponemos del tag embed, el cual funciona en los dos navegadores mas usados actualmente, IE6/7 y Firefox3.&lt;br /&gt;&lt;br /&gt;Pero ¿Que pasa si las imagenes no estan en el sistema de ficheros de nuestra web? Lo mas normal es disponer de un servicio que nos devuelva la imagen, que para este caso son imagenes SVG.&lt;br /&gt;&lt;br /&gt;Este servicio puede ser tranquilamente una página aspx o un handler ashx(http://miservidor/miaplicacion/miservicio.ashx?imagen=1) que nos devuelva el fichero utilizando el siguiente código:&lt;br /&gt;&lt;pre&gt;Response.ContentType = "image/svg+xml";&lt;br /&gt;Response.AddHeader("content-disposition", &lt;br /&gt;                   "inline; filename=imagen.svg");&lt;br /&gt;Response.Write(&lt;span style="font-style: italic;"&gt;contenido_svg&lt;/span&gt;);&lt;br /&gt;Response.Flush();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;En el elemento embed del html la inclusion sería algo así como:&lt;br /&gt;&lt;pre&gt;&amp;lt;embed &lt;br /&gt;       src="http://miservidor/miaplicacion/&lt;span style="font-weight: bold;"&gt;miservicio&lt;span style="color: rgb(255, 0, 0);"&gt;.ashx&lt;/span&gt;&lt;/span&gt;?imagen=1"&lt;br /&gt;       type="image/svg+xml" &lt;br /&gt;       width="300" height="100" &lt;br /&gt;       pluginspage="http://www.adobe.com/svg/viewer/install/" /&gt;                                                                                                    &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Pues bien, resulta que eso si funciona correctamente en firefox, ya que parece que hace caso al content-type, pero para no variar &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;en el IE NO FUNCIONA!!!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lo único que reconoce y pinta adecuadamente son los ficheros con extensión SVG, asi que no hay mas remedio que crear un manejador de peticiones que controle en nuestra aplicación web todas las peticiones con esta extensión y modificar el atributo src de nuestro embed.&lt;br /&gt;&lt;pre&gt;&amp;lt;embed &lt;br /&gt;       src="http://miservidor/miaplicacion/&lt;span style="font-weight: bold;"&gt;miservicio&lt;span style="color: rgb(255, 0, 0);"&gt;.svg&lt;/span&gt;&lt;/span&gt;?imagen=1"&lt;br /&gt;       type="image/svg+xml" &lt;br /&gt;       width="300" height="100" &lt;br /&gt;       pluginspage="http://www.adobe.com/svg/viewer/install/" /&gt;                                                                                                    &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ahora lo que nos queda es especificar a nuestra aplicación web que todas las peticiones SVG pasen por nuestro código en lugar de buscarlos en su sistema de ficheros; y para hacer esto debemos hacer dos pasos:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Crear una clase que implemente de IHttpHandler en el App_Code&lt;/li&gt;&lt;li&gt;Mapear en el web.config todas las peticiones SVG para que las redirija a nuestra clase.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Creación de la clase&lt;/span&gt; que implementa IHttpHandler&lt;br /&gt;&lt;pre&gt;public class SVGHandler : IHttpHandler{&lt;br /&gt;&lt;br /&gt;   public void ProcessRequest(HttpContext context){&lt;br /&gt;       HttpRequest Request = context.Request;&lt;br /&gt;       string imagen = Request.QueryString["imagen"]; //id de la imagen a mostrar&lt;br /&gt;       string contenido_svg = MiServicio.ObtenerContenidoImagen(imagen);&lt;br /&gt;       HttpResponse Response = context.Response;&lt;br /&gt;       Response.ContentType = "image/svg+xml";&lt;br /&gt;       Response.AddHeader("content-disposition", "inline; filename=imagen.svg");&lt;br /&gt;       Response.Write(contenido_svg);&lt;br /&gt;       Response.Flush();&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public bool IsReusable{ get{return false;} }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Mapeo de la extensión&lt;/span&gt; svg en el web.config&lt;br /&gt;&lt;pre&gt;&amp;lt;httpHandlers&gt;&lt;br /&gt;         ...&lt;br /&gt;         &amp;lt;add verb="*" path="*.svg" type="SVGHandler"/&gt;&lt;br /&gt;         ...&lt;br /&gt;&amp;lt;/httpHandlers&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Y listo!!! ya podemos incrustar imagenes SVG de contenido dinámico, sin tener problemas de compatibilidad entre IE y Firefox.&lt;br /&gt;&lt;pre&gt;&amp;lt;embed &lt;br /&gt;       src="http://miservidor/miaplicacion/&lt;span style="font-weight: bold;"&gt;miservicio&lt;span style="color: rgb(255, 0, 0);"&gt;.svg&lt;/span&gt;&lt;/span&gt;?imagen=1"&lt;br /&gt;       type="image/svg+xml" &lt;br /&gt;       width="300" height="100" &lt;br /&gt;       pluginspage="http://www.adobe.com/svg/viewer/install/" /&gt;                                                                                                    &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Finalmente hay que recordar que la extensión SVG la tenemos que &lt;span style="font-weight:bold;"&gt;tener registrada dentro del IIS&lt;/span&gt; para que este acepte las peticiones con esta extensión.&lt;br /&gt;&lt;br /&gt;Enlaces relacionados :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.spartanicus.utvinternet.ie/embed.htm"&gt;To embed, or not to embed - that is the question.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/columns/dotnet/article.php/c11013"&gt;Use Custom HTTP Handlers in Your ASP.NET Applications&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eggheadcafe.com/articles/20030113.asp"&gt;Use Custom Http Handlers To Improve Performance in ASP.NET&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/aspnet/HttpCombine.aspx"&gt;HTTP Handler to Combine Multiple Files, Cache and Deliver Compressed Output for Faster Page Load&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-3622099979450364950?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/3622099979450364950/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=3622099979450364950' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/3622099979450364950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/3622099979450364950'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2008/12/sirviendo-grficos-svg-dinmicamente.html' title='Sirviendo gráficos SVG dinámicamente'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-3369935424805136867</id><published>2008-11-26T07:37:00.000-08:00</published><updated>2009-04-21T14:27:52.240-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arquitectura'/><category scheme='http://www.blogger.com/atom/ns#' term='mashup'/><category scheme='http://www.blogger.com/atom/ns#' term='silverlight2'/><title type='text'>Mashup con Silverlight 2</title><content type='html'>Aqui cuelgo una pequeña presentacion de como Silverlight puede actuar como un Mashup.&lt;br /&gt;&lt;!--&lt;br /&gt;&lt;iframe src='http://docs.google.com/Present?docid=dhkpgxpj_7cn23z3w4&amp;skipauth=true' frameborder='0' width='410' height='342'&gt;&lt;/iframe&gt;&lt;br /&gt;--&gt;&lt;br /&gt;&lt;iframe src='http://docs.google.com/EmbedSlideshow?docid=dhkpgxpj_7cn23z3w4' frameborder='0' width='410' height='342'&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/Present?docid=dhkpgxpj_7cn23z3w4&amp;skipauth=true" target="_blank"&gt;Ver en pantalla completa&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-3369935424805136867?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/3369935424805136867/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=3369935424805136867' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/3369935424805136867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/3369935424805136867'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2008/11/mashup-con-silverlight-2.html' title='Mashup con Silverlight 2'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-4789831146935558688</id><published>2008-10-31T05:11:00.000-07:00</published><updated>2008-10-31T06:10:47.458-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight2'/><title type='text'>Paso de parámetros de inicialización a aplicaciones Silverlight 2</title><content type='html'>Para incrustar objetos Silverlight en nuestras páginas web tenemos 3 vías:&lt;br /&gt;&lt;br /&gt;- Utilizando el fichero silverlight.js&lt;br /&gt;- Utilizando el Tag HTML Object&lt;br /&gt;- Utilizando el control asp.net &amp;lt;asp:silverlight&gt;&lt;br /&gt;&lt;br /&gt;Para pasar parámetros de inicialización tenemos que:&lt;br /&gt;&lt;br /&gt;- En el tercer caso se dispone de la propiedad &lt;strong&gt;InitParameters&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;lt;asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/SilverlightApplication2.xap" MinimumVersion="2.0.31005.0" Width="100%" Height="100%" &lt;strong&gt;InitParameters="key1=value1,key2=value2,key3=value3nnnnnnnnn"&lt;/strong&gt; /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;- En el segundo caso hay que pasar un tag &lt;strong&gt;param&lt;/strong&gt; con el nombre &lt;strong&gt;initParams&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;lt;object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"&gt;&lt;br /&gt;&amp;lt;param name="source" value="ClientBin/SilverlightApplication2.xap"/&gt;&lt;br /&gt;&amp;lt;param name="onerror" value="onSilverlightError" /&gt;&lt;br /&gt;&amp;lt;param name="background" value="white" /&gt;&lt;br /&gt;&amp;lt;param name="minRuntimeVersion" value="2.0.31005.0" /&gt;&lt;br /&gt;&amp;lt;param name="autoUpgrade" value="true" /&gt;&lt;br /&gt;&amp;lt;param &lt;strong&gt;name="initParams"&lt;/strong&gt; &lt;strong&gt;value="key1=value1,key2=value2,key3=value3nnnnnnnnn"&lt;/strong&gt; /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"&gt;&lt;br /&gt;&amp;lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/&gt;&lt;br /&gt;&amp;lt;/a&gt;&lt;br /&gt;&amp;lt;/object&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bien, ahora que sabemos como pasar parametros de inicialización, solo nos queda explorar las diferentes formas de obtenerlos.&lt;br /&gt;&lt;br /&gt;- Dentro de cualquier parte de la aplicación silverlight, ya sea el app o cualquier página podemos obtenerlos directamente usando:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;object miparam = &lt;strong&gt;System.Windows.Browser.HtmlPage.Plugin.GetProperty("initParams")&lt;/strong&gt;;&lt;br /&gt;string sParameters = (miparam != null) ? miparam.ToString() : "parametro no encontrado";&lt;br /&gt;&lt;span style="color:#009900;"&gt;//sParameters obtendría el valor "key1=value1,key2=value2,key3=value3nnnnnnnnn"&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Dentro de &lt;strong&gt;App.xml.cs&lt;/strong&gt; disponemos del evento &lt;strong&gt;Application_Startup&lt;/strong&gt;, el cual recibe en propiedad &lt;strong&gt;InitParams&lt;/strong&gt; del argumento llamado &lt;strong&gt;e&lt;/strong&gt; un conjunto de claves-valor con el string correctamente convertido en un objeto IDictionary&amp;lt;string, string&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;private void Application_Startup(object sender, StartupEventArgs e) {&lt;br /&gt;string p1 = &lt;strong&gt;e.InitParams&lt;/strong&gt;["key1"];&lt;br /&gt;...&lt;br /&gt;this.RootVisual = new Page();&lt;br /&gt;...&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Nota de diseño:&lt;br /&gt;&lt;br /&gt;- Ya que en el método &lt;strong&gt;Application_Startup&lt;/strong&gt; se obtienen los parámetros de inicialización correctamente parseados, podríamos sobrecargar el constructor de las páginas a mostrar para que puedan recibir un objeto diccionario.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;private void Application_Startup(object sender, StartupEventArgs e) {&lt;br /&gt;this.RootVisual = new Page(e.InitParams);&lt;br /&gt;}&lt;br /&gt;&lt;hr/&gt;&lt;br /&gt;namespace SilverlightApplication2{&lt;br /&gt;&lt;br /&gt;public partial class Page : UserControl {&lt;br /&gt;&lt;br /&gt;public Page(){&lt;br /&gt;InitializeComponent();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;IDictionary&amp;lt;string, string&gt;&lt;string,string&gt; &lt;strong&gt;initParams&lt;/strong&gt;;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;public Page(IDictionary&amp;lt;string, string&gt;&lt;string,&gt; parameters){&lt;br /&gt;initParams = parameters;&lt;br /&gt;}&lt;/strong&gt;&lt;br /&gt;...&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-4789831146935558688?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/4789831146935558688/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=4789831146935558688' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/4789831146935558688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/4789831146935558688'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2008/10/paso-de-parmetros-de-inicializacin.html' title='Paso de parámetros de inicialización a aplicaciones Silverlight 2'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-597148367047089072</id><published>2008-10-28T02:17:00.000-07:00</published><updated>2008-10-28T02:26:16.100-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='encoding'/><category scheme='http://www.blogger.com/atom/ns#' term='decoding'/><title type='text'>Parte 2: HTML Entities - Encoding / Decoding</title><content type='html'>Para cerrar el ciclo de codificación y descodificación de entidades HTML; aquí dejo una pequeña  función javascript que convierte un buen numero de entidades especiales (concretamente desde la 160 hasta 255 - incluyen acentos) a su codificación html.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;function &lt;/span&gt;EncodingText(str){ &lt;br /&gt;   &lt;span style="color: rgb(51, 102, 255);"&gt;var &lt;/span&gt;res = str; &lt;br /&gt;   &lt;span style="color: rgb(51, 102, 255);"&gt;for&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;var &lt;/span&gt;i=&lt;span style="font-weight: bold;"&gt;160&lt;/span&gt;; i &lt; &lt;span style="font-weight: bold;"&gt;256&lt;/span&gt;; i++){        &lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;var &lt;/span&gt;newcaracter = "&amp;amp;#" + i + ";";        &lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;var &lt;/span&gt;oldcaracter = DecodeHtmlEntities(newcaracter);        &lt;br /&gt;res = res.replace(oldcaracter, newcaracter);    &lt;br /&gt;}     &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;return &lt;/span&gt;res;&lt;br /&gt;} &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Enlaces relacionados:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://emmersonmiranda-net.blogspot.com/2008/08/entidades-html-encoding-decoding.html"&gt;HTML Entities - Encoding / Decoding&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-597148367047089072?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/597148367047089072/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=597148367047089072' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/597148367047089072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/597148367047089072'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2008/10/parte-2-html-entities-encoding-decoding.html' title='Parte 2: HTML Entities - Encoding / Decoding'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-6680422193291183956</id><published>2008-09-29T04:39:00.000-07:00</published><updated>2008-09-29T05:01:49.418-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ado.net'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2005'/><title type='text'>Clave no válida para utilizar en el estado especificado.</title><content type='html'>Por alguna misteriosa razón últimamente cuando abro mis datasets creados hace unos días el vs2005 no es capaz de abrirlos nuevamente y me dice "&lt;strong&gt;Clave no válida para utilizar en el estado especificado&lt;/strong&gt;"&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_mG-olUabbUE/SOC_o8DwqaI/AAAAAAAAAE8/ep-E6zntnZM/s1600-h/error1.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5251407875551570338" style="CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_mG-olUabbUE/SOC_o8DwqaI/AAAAAAAAAE8/ep-E6zntnZM/s200/error1.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_mG-olUabbUE/SOC_o0OgBMI/AAAAAAAAAFE/cuZsYGJK0kY/s1600-h/error2.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5251407873449133250" style="CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_mG-olUabbUE/SOC_o0OgBMI/AAAAAAAAAFE/cuZsYGJK0kY/s200/error2.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;La razón, no se cual; regenerar el proyecto en mi caso no me ha solucionado el problema, así que opte por borrar el fichero &lt;strong&gt;DefaultView.SEView,&lt;/strong&gt; tal como rezaba la solución de un foro:&lt;/p&gt;&lt;p&gt;C:\Documents and Settings\emmerson\Datos de programa\Microsoft\VisualStudio\8.0\ServerExplorer\DefaultView.SEView&lt;/p&gt;&lt;p&gt;El resultado fue que pude volver a editar los datasets visualmente, osea que el problema quedo solucionado, pero aún así esta solución es la de la fuerza bruta!&lt;/p&gt;&lt;p&gt;&lt;span style="color:#cc0000;"&gt;&lt;strong&gt;La respuesta:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Por muy obvio que parezca, en el &lt;strong&gt;explorador de servidores&lt;/strong&gt; de cada conexión que utilizo no guardo los passwords, la solución en algún caso es &lt;em&gt;volver a conectar con la base de datos antes de abrir el dataset&lt;/em&gt; en modo visual(doble click sobre el DS :-p ); &lt;em&gt;en todo caso hay que eliminar conexión que habia y volver a crearla&lt;/em&gt; con el mismo nombre.... y eureka!!!&lt;/p&gt;&lt;p&gt;- FIN - &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-6680422193291183956?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/6680422193291183956/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=6680422193291183956' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/6680422193291183956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/6680422193291183956'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2008/09/clave-no-vlida-para-utilizar-en-el.html' title='Clave no válida para utilizar en el estado especificado.'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_mG-olUabbUE/SOC_o8DwqaI/AAAAAAAAAE8/ep-E6zntnZM/s72-c/error1.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-8508105882862950314</id><published>2008-09-26T01:41:00.000-07:00</published><updated>2009-04-30T02:41:09.532-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xsd'/><title type='text'>Insertar nodos según el orden del XSD</title><content type='html'>Hace poco me tope con un problema insertando nodos en un documento XML (utilizaba el método AppendChild).&lt;br /&gt;&lt;br /&gt;Resulta que después de generar el documento lo validaba contra su XSD, y me tope con el problema que generaba los elementos, según el orden de invocaciones al método AppendChild(no de acuerdo a lo que dicta su esquema); por tanto el XML no era válido.&lt;br /&gt;&lt;br /&gt;Solución:&lt;br /&gt;Cada nodo tiene información de su esquema y por tanto del elemento en cuestión, solo habría que saber como listar en orden los hijos que lo componen y luego hacer un pequeño algoritmo de inserción.&lt;br /&gt;&lt;br /&gt;------------------------------------------&lt;br /&gt;elemento = _doc.CreateElement(elementName);&lt;br /&gt;&lt;span style="color:#009900;"&gt;//se procede a insertar el elemento en la posicion adecuada&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;//se detecta el orden del nuevo elemento segun su esquema del nodo padre (nodoBase)&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;XmlSchemaParticle&lt;/span&gt; esquemaNodoPadre = ((&lt;span style="color:#3366ff;"&gt;XmlSchemaComplexType&lt;/span&gt;) nodoBase.SchemaInfo.SchemaElement.ElementSchemaType).ContentTypeParticle;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;XmlSchemaSequence&lt;/span&gt; seqHijos = (&lt;span style="color:#3366ff;"&gt;XmlSchemaSequence&lt;/span&gt;) esquemaNodoPadre;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;string&lt;/span&gt;[] ordenHijos = &lt;span style="color:#3333ff;"&gt;new string&lt;/span&gt;[seqHijos.Items.Count];&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;int&lt;/span&gt; indice = 0;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;foreach&lt;/span&gt;(&lt;span style="color:#3366ff;"&gt;XmlSchemaObject&lt;/span&gt; obj &lt;span style="color:#3333ff;"&gt;in&lt;/span&gt; seqHijos.Items){&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;XmlSchemaElement&lt;/span&gt; elem = (&lt;span style="color:#3366ff;"&gt;XmlSchemaElement&lt;/span&gt;) obj;&lt;br /&gt;ordenHijos[indice++] = (elem.Name == &lt;span style="color:#3333ff;"&gt;null&lt;/span&gt;) ? elem.RefName.Name : elem.Name;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;//se inserta el nuevo nodo en la posicion adecuada&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;bool&lt;/span&gt; insertado = false;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;int&lt;/span&gt; posicion = 0;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;foreach&lt;/span&gt;(&lt;span style="color:#3366ff;"&gt;XmlNode&lt;/span&gt; n in nodoBase.ChildNodes){&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;if&lt;/span&gt;(&lt;span style="color:#990000;"&gt;&lt;strong&gt;NodoNuevoAnteriorAlActual&lt;/strong&gt;&lt;/span&gt;(ordenHijos, n.Name, elementName)){&lt;br /&gt;nodoBase.&lt;strong&gt;InsertBefore&lt;/strong&gt;(elemento, n);&lt;br /&gt;insertado = &lt;span style="color:#3333ff;"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;posicion++;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;if&lt;/span&gt;(!insertado){&lt;br /&gt;nodoBase.&lt;strong&gt;AppendChild&lt;/strong&gt;(elemento);&lt;br /&gt;}&lt;br /&gt;------------------------------------------&lt;br /&gt;&lt;br /&gt;Enlaces relacionados:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a id="viewpost_ascx_TitleUrl" title="Title of this entry." href="http://geekswithblogs.net/.NETonMyMind/archive/2006/05/02/76957.aspx"&gt;Accessing XML Schema Information During Document Validation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.xml.schema.aspx"&gt;Espacio de nombres System.Xml.Schema&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-8508105882862950314?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/8508105882862950314/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=8508105882862950314' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/8508105882862950314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/8508105882862950314'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2008/09/insertar-nodos-segn-el-orden-del-xsd.html' title='Insertar nodos según el orden del XSD'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-7487181791730675095</id><published>2008-09-23T02:22:00.000-07:00</published><updated>2008-09-23T02:26:10.601-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>Entrenamiento SQL Server 2008</title><content type='html'>Navegando me he topado con una dirección que tiene un listado con muchos manuales/presentaciones que tratan sobre SQL Server 2008, aquí la dirección:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mredison.wordpress.com/2008/09/08/entrenamiento-sql-server-2008/"&gt;http://mredison.wordpress.com/2008/09/08/entrenamiento-sql-server-2008/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-7487181791730675095?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/7487181791730675095/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=7487181791730675095' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/7487181791730675095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/7487181791730675095'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2008/09/entrenamiento-sql-server-2008.html' title='Entrenamiento SQL Server 2008'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-8927818185425107672</id><published>2008-08-27T05:22:00.000-07:00</published><updated>2008-08-27T06:01:19.151-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='multiple rows'/><category scheme='http://www.blogger.com/atom/ns#' term='split'/><category scheme='http://www.blogger.com/atom/ns#' term='t-sql'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>Generando múltiples filas de un string (split) en SQL Server</title><content type='html'>Las funciones &lt;span style="color:#3366ff;"&gt;sp_executesql&lt;/span&gt; y &lt;span style="color:#3366ff;"&gt;execute&lt;/span&gt; de t-sql nos permiten generar consultas dinámicamente concadenando textos, algo así se hace generalmente cuando se hace un "select in". Por ejemplo de marcas que tengan unos determinados productos, pero cuyo listado proviene de un conjunto de checks marcados desde una página web.&lt;br /&gt;&lt;br /&gt;La consulta antes expuesta debería ser algo así;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;select * from brands where brand_id in &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;(select brand_id from ProductsBrands where product_id in (12,13,14,77,121,598))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ya que la parte de los identificadores de productos es variante muchos desarrolladores de t-sql optan por concadenar texto y ejecutar sus consultas con los comandos antes mencionados; este tipo de consultas no se pueden optimizar o mejorar mediante las &lt;a href="http://www.sql-server-performance.com/tips/update_statistics_p1.aspx"&gt;statistics&lt;/a&gt; de SQL Server.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;declare @listado nvarchar(1000) &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;set @listado = '10,11,12,13,14,15'&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;declare @sql nvarchar(1000)&lt;br /&gt;set @sql = 'select * from brands where brand_id in (select brand_id from ProductsBrands where product_id in ( ' + @listado + ' ))'&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;&lt;strong&gt;EXEC(@sql)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sin embargo existe una posibilidad de generar un conjunto de filas dado un string que contenga todos los identificadores de productos mediante la creación de una función definida por el usuario que devuelva una tabla (es decir un split de un string que devuelva un conjunto de filas con una columna que se pueda utilizar dentro de una "select in" sin necesidad de concadenar textos).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;CREATE FUNCTION &lt;strong&gt;[dbo].[FnSplitTable]&lt;/strong&gt;&lt;br /&gt;(@Array varchar(1000),@separator char(1))&lt;br /&gt;RETURNS @table_variable TABLE (col1 nvarchar(1000))&lt;br /&gt;AS&lt;br /&gt;BEGIN&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;declare @separator_position int&lt;br /&gt;-- almacena el valor de cada vuelta&lt;br /&gt;declare @array_value varchar(1000)&lt;br /&gt;set @array = @array + @separator&lt;br /&gt;-- recorre mientras haya un caracter separador&lt;br /&gt;while patindex('%' + @separator + '%' , @array) &lt;&gt; 0&lt;br /&gt;begin&lt;br /&gt;-- se ubica el separador&lt;br /&gt;set @separator_position = patindex('%' + @separator + '%' , @array)&lt;br /&gt;-- se extrae el valor&lt;br /&gt;set @array_value = substring(@array, 0, @separator_position)&lt;br /&gt;-- se acorta la cadena de caracteres de busqueda&lt;br /&gt;set @array = stuff(@array, 1, @separator_position, '')&lt;br /&gt;-- se almacena en la tabla de respuesta&lt;br /&gt;insert into @table_variable select @array_value as col1&lt;br /&gt;end&lt;/span&gt;&lt;br /&gt;RETURN&lt;br /&gt;&lt;/span&gt;END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Finalmente nuestra consulta quedaría de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;declare @listado nvarchar(1000)&lt;br /&gt;set @listado = '10,11,12,13,14,15'&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;select * from brands&lt;br /&gt;where brand_id in&lt;br /&gt;(select brand_id from ProductsBrands where product_id in (&lt;br /&gt;select col1 from dbo.&lt;strong&gt;FnSplitTable&lt;/strong&gt;(@listado,',')))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esta consulta si pasa por el proceso de las estadísticas y permite mejorar su rendimiento.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enlaces relacionados&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sommarskog.se/dynamic_sql.html"&gt;The Curse and Blessings of Dynamic SQL&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlteam.com/article/introduction-to-dynamic-sql-part-2"&gt;Introduction to Dynamic SQL (Part 2)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlteam.com/article/parsing-csv-values-into-multiple-rows"&gt;Parsing CSV Values Into Multiple Rows&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlteam.com/article/converting-multiple-rows-into-a-csv-string"&gt;Converting Multiple Rows into a CSV String&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-8927818185425107672?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/8927818185425107672/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=8927818185425107672' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/8927818185425107672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/8927818185425107672'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2008/08/generando-mltiples-filas-de-un-string.html' title='Generando múltiples filas de un string (split) en SQL Server'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-5445588163759840716</id><published>2008-08-21T05:18:00.000-07:00</published><updated>2008-08-21T05:57:31.658-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='UpdatePanel'/><category scheme='http://www.blogger.com/atom/ns#' term='OnItemCommand'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Repeater'/><category scheme='http://www.blogger.com/atom/ns#' term='Atlas'/><category scheme='http://www.blogger.com/atom/ns#' term='errores'/><title type='text'>asp:repeater OnItemCommand no funciona (no se ejecuta)</title><content type='html'>Durante la creación de un formulario de búsqueda, con filtros listados en forma de grid, además claro de los resultados; utilicé un control Repeater con un UpdatePanel para recargarlos usando Ajax en ambos casos.&lt;br /&gt;&lt;br /&gt;El problema:&lt;br /&gt;El evento OnItemCommand del asp:repeater no se ejecutaba nunca.&lt;br /&gt;&lt;br /&gt;Escenario:&lt;br /&gt;En el Page_Load se cargaba los datos del Repeater únicamente en la primera carga (!Page.IsPostBack)&lt;br /&gt;&lt;br /&gt;La solución:&lt;br /&gt;El hecho es que para que este evento se lanze, el control Repeater debe tener datos, asi que la carga del Repeater se ha de hacer siempre en el evento Page_Load independientemente si es postback o no; si aún asi, no se desea esto, la otra solución es activar el viewstate del updatepanel.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#990000;"&gt;asp&lt;/span&gt;&lt;span style="color:#3366ff;"&gt;:&lt;/span&gt;&lt;span style="color:#990000;"&gt;UpdatePanel&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color:#3333ff;"&gt;="updatePanelFiltro"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;EnableViewState&lt;/span&gt;&lt;span style="color:#3333ff;"&gt;="&lt;strong&gt;true&lt;/strong&gt;"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#3333ff;"&gt;="server" &amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;No esta demás recalcar que los eventos a controlar asíncronamente han de estar dentro de la sección de Triggers del UpdatePanel llamado en este caso &lt;span style="color:#3333ff;"&gt;updatePanelFiltro&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#990000;"&gt;asp&lt;/span&gt;&lt;span style="color:#3366ff;"&gt;:&lt;/span&gt;&lt;span style="color:#990000;"&gt;AsyncPostBackTrigger&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ControlID&lt;/span&gt;&lt;span style="color:#3333ff;"&gt;="RepeaterFiltro"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;EventName&lt;/span&gt;&lt;span style="color:#3366ff;"&gt;="ItemCommand" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-5445588163759840716?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/5445588163759840716/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=5445588163759840716' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/5445588163759840716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/5445588163759840716'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2008/08/asprepeater-onitemcommand-no-funciona.html' title='asp:repeater OnItemCommand no funciona (no se ejecuta)'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-4568761173283405380</id><published>2008-08-20T04:41:00.000-07:00</published><updated>2008-10-28T02:28:04.733-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='encoding'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='decoding'/><title type='text'>HTML Entities - Encoding / Decoding</title><content type='html'>Desde la página asp.net disponemos de dos métodos para codificar y descodificar un texto:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Server.HtmlEncode("canción")&lt;/li&gt;&lt;li&gt;Server.HtmlDecode("canci&amp;amp;oacute;n")&lt;/li&gt;&lt;/ul&gt;Desde javascript, para decodificar un texto con las entidades Html codificadas no existe ninguna función por defecto, por tanto se puede usar la siguiente función :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;function&lt;/span&gt; DecodeHtmlEntities(str){&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  try&lt;/span&gt;{&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    var&lt;/span&gt; txt=document.createElement('textarea');&lt;br /&gt;   txt.innerHTML = str;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    return&lt;/span&gt; txt.value;&lt;br /&gt; }&lt;span style="color: rgb(51, 102, 255);"&gt;catch&lt;/span&gt;(e){&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    return&lt;/span&gt; str;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Aunque por otro lado javascript dispone de las funciones &lt;span style="color: rgb(51, 102, 255);"&gt;escape&lt;/span&gt; y &lt;span style="color: rgb(51, 102, 255);"&gt;unescape&lt;/span&gt; para codificar/descodificar urls.&lt;br /&gt;&lt;br /&gt;Enlaces relacionados:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://emmersonmiranda-net.blogspot.com/2008/10/parte-2-html-entities-encoding-decoding.html"&gt;Parte 2: HTML Entities - Encoding / Decoding&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-4568761173283405380?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/4568761173283405380/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=4568761173283405380' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/4568761173283405380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/4568761173283405380'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2008/08/entidades-html-encoding-decoding.html' title='HTML Entities - Encoding / Decoding'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-5427971112291228943</id><published>2008-08-14T04:34:00.000-07:00</published><updated>2008-08-14T05:13:41.723-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='callback'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='ClientScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Repeater'/><category scheme='http://www.blogger.com/atom/ns#' term='ItemTemplate'/><title type='text'>Llamadas dinámicas(callbacks) dentro de un asp:Repeater</title><content type='html'>&lt;span style="color:#000000;"&gt;Hay ocasiones en las que deseamos presentar un listado de elementos, utilizando un control Repeater y poder por ejemplo eliminar un elemento del listado, independiente del resto a través de su identificador. El siguiente texto explica como realizar esto.&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;&lt;/span&gt;&lt;br /&gt;La página a de implementar la interfaz &lt;span style="color:#3366ff;"&gt;IPostBackEventHandler&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;public partial class&lt;/span&gt; &lt;span style="color:#66cccc;"&gt;MiPaginaASPX&lt;/span&gt; : System.Web.UI.&lt;span style="color:#3366ff;"&gt;Page&lt;/span&gt;, &lt;span style="color:#3366ff;"&gt;&lt;strong&gt;IPostBackEventHandler&lt;/strong&gt;&lt;/span&gt; {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Esta interfaz nos obliga a implementar el método &lt;strong&gt;RaisePostBackEvent&lt;/strong&gt;, este será el que atienda las llamadas desde el cliente; recibe un parámetro en forma de cadena de texto (en este caso el identificador del registro).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;public void&lt;/span&gt; RaisePostBackEvent(&lt;span style="color:#3366ff;"&gt;string&lt;/span&gt; eventArgument){&lt;br /&gt;&lt;span style="color:#33cc00;"&gt;//lógica de negocio....&lt;/span&gt;&lt;br /&gt;DatosManager.BorrarRegistro(eventArgument);&lt;br /&gt;&lt;span style="color:#009900;"&gt;//lógica de negocio....&lt;br /&gt;&lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;Finalmente para generar el código javascript que llame al evento RaisePostBackEvent de la página se ha de utilizar el método &lt;strong&gt;GetPostBackEventReference&lt;/strong&gt; disponible dentro del &lt;strong&gt;ClientScript&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;public string&lt;/span&gt; getRemoveImage(&lt;span style="color:#3333ff;"&gt;object&lt;/span&gt; obj) {&lt;br /&gt;ShortView r = (ShortView)obj;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;string&lt;/span&gt; evento = Page.ClientScript.GetPostBackEventReference(&lt;span style="color:#3333ff;"&gt;this&lt;/span&gt;, r.Id);&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;string&lt;/span&gt; res = &lt;span style="color:#990000;"&gt;"&amp;lt;a href=\"#\" onclick=\"" + evento + "\"&gt;&amp;lt;img src=\"/Resources/icons/borrar.png\" border=\"0\" /&gt;&amp;lt;/a&gt;"&lt;/span&gt;;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;return&lt;/span&gt; res;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;La llamada al método &lt;em&gt;getRemoveImage&lt;/em&gt; se realiza desde dentro del ItemTemplate:&lt;br /&gt;&lt;br /&gt;....&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#990000;"&gt;td&lt;/span&gt;&lt;span style="color:#3333ff;"&gt;&gt;&amp;lt;&lt;/span&gt;%# getRemoveImage(Container.DataItem)%&lt;span style="color:#3333ff;"&gt;&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#990000;"&gt;td&lt;/span&gt;&lt;span style="color:#3333ff;"&gt;&gt;&lt;/span&gt;&lt;br /&gt;......&lt;br /&gt;&lt;br /&gt;No esta demás decir que esta es solo una de las posibles soluciones.&lt;br /&gt;&lt;br /&gt;- FIN -&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#660000;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-5427971112291228943?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/5427971112291228943/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=5427971112291228943' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/5427971112291228943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/5427971112291228943'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2008/08/llamadas-dinmicascallbacks-dentro-de-un.html' title='Llamadas dinámicas(callbacks) dentro de un asp:Repeater'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-6815078145150190846</id><published>2008-07-25T01:48:00.000-07:00</published><updated>2008-08-21T05:51:23.890-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MemoryStream'/><category scheme='http://www.blogger.com/atom/ns#' term='errores'/><category scheme='http://www.blogger.com/atom/ns#' term='Bitmap'/><title type='text'>{"Error genérico en GDI+."}</title><content type='html'>Generando imagenes dinámicamente me tope con el error :&lt;br /&gt;&lt;br /&gt;{"Error genérico en GDI+."}&lt;br /&gt;&lt;br /&gt;Como se puede observar el mensaje es "clarísimo" :-p ; bueno este fallo me daba cuando intentaba grabar la imagen en una corriente de salida.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;span style="color:#3366ff;"&gt;public void&lt;/span&gt; WriteImagen(System.IO.&lt;span style="color:#3366ff;"&gt;Stream&lt;/span&gt; salida){&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="color:#3366ff;"&gt;Bitmap&lt;/span&gt; res = new &lt;span style="color:#3366ff;"&gt;Bitmap&lt;/span&gt;(......);&lt;br /&gt;.......&lt;br /&gt;res.Save(salida, System.Drawing.Imaging.&lt;span style="color:#3366ff;"&gt;ImageFormat&lt;/span&gt;.Png);&lt;br /&gt;res.Dispose();&lt;/td&gt;&lt;br /&gt;&lt;tr&gt;&lt;td colspan="2"&gt;}&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Una solución para evitar este tipo de problemas es usando un MemoryStream, de la siguiente manera.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;span style="color:#3366ff;"&gt;public void&lt;/span&gt; WriteImagen(System.IO.&lt;span style="color:#3366ff;"&gt;Stream&lt;/span&gt; salida){&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;span style="color:#3366ff;"&gt;Bitmap&lt;/span&gt; res = new &lt;span style="color:#3366ff;"&gt;Bitmap&lt;/span&gt;(......);&lt;br /&gt;.......&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;MemoryStream&lt;/span&gt; ms = new &lt;span style="color:#3366ff;"&gt;MemoryStream&lt;/span&gt;();&lt;/strong&gt;&lt;br /&gt;res.Save(&lt;strong&gt;ms&lt;/strong&gt;, System.Drawing.Imaging.&lt;span style="color:#3366ff;"&gt;ImageFormat&lt;/span&gt;.Png);&lt;br /&gt;ms.Seek(0, &lt;span style="color:#3366ff;"&gt;SeekOrigin&lt;/span&gt;.Begin);&lt;br /&gt;&lt;strong&gt;ms.WriteTo(salida);&lt;/strong&gt;&lt;br /&gt;res.Dispose();&lt;/p&gt;&lt;/td&gt;&lt;br /&gt;&lt;tr&gt;&lt;td colspan="2"&gt;}&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Y colorin, colaro esta solución a funcionado!!!&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-6815078145150190846?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/6815078145150190846/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=6815078145150190846' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/6815078145150190846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/6815078145150190846'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2008/07/error-genrico-en-gdi.html' title='{&quot;Error genérico en GDI+.&quot;}'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-6181039730857991386</id><published>2008-07-24T01:22:00.000-07:00</published><updated>2008-08-14T05:15:03.719-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NumberFormatInfo'/><category scheme='http://www.blogger.com/atom/ns#' term='Globalizacion'/><category scheme='http://www.blogger.com/atom/ns#' term='CultureInfo'/><title type='text'>Formatos numéricos según la cultura regional</title><content type='html'>Trabajando con formatos numéricos, nos damos cuenta que mientras en un pais se utiliza la coma como separador decimal, en otros se utiliza como separador de miles y lo mismo sucede con el punto.&lt;br /&gt;&lt;br /&gt;Este tipo de problemas viene dado normalmente, a que estamos consumiendo servicios (datos) de otros servidores que tienen formatos númericos, de fechas.... distintos al nuestro (dandose este caso incluso entre servidores internos de una misma organización, servidor web, de base de datos...).&lt;br /&gt;&lt;br /&gt;Tambien sucede que durante la fase de desarrollo de las aplicaciones nuestro sistema esta en "Español" y cuando subimos a producción a veces suele estar en "Ingles" o viceversa; esto suele dar muchos problemas de refactorización de código.&lt;br /&gt;&lt;br /&gt;&lt;table width="100%" border="1"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;/td&gt;&lt;br /&gt;latitud = &lt;span style="color:#3366ff;"&gt;double&lt;/span&gt;.Parse(valorString);&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;En .NET, una buena solución para este último punto, es forzar la utilización de un formato numérico perteneciente a una "Culture" que nosotros definamos.&lt;br /&gt;&lt;br /&gt;&lt;table width="100%" border="1"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;/td&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;NumberFormatInfo&lt;/span&gt; numberInfo = &lt;span style="color:#3366ff;"&gt;CultureInfo&lt;/span&gt;.GetCultureInfo(&lt;span style="color:#ff0000;"&gt;"es-ES"&lt;/span&gt;).NumberFormat;&lt;br /&gt;Latitud = &lt;span style="color:#3366ff;"&gt;double&lt;/span&gt;.Parse(valorString, numberInfo);&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;De esta manera, por ejemplo, evitaremos posibles fallos de conversión de formatos numericos cuando nuestra máquina de desarrollo este en "Español" y el framework del servidor en "Ingles".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-6181039730857991386?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/6181039730857991386/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=6181039730857991386' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/6181039730857991386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/6181039730857991386'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2008/07/formatos-numricos-segn-la-cultura.html' title='Formatos numéricos según la cultura regional'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-3591028860503372915</id><published>2008-07-16T05:33:00.000-07:00</published><updated>2008-08-21T05:55:42.447-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><category scheme='http://www.blogger.com/atom/ns#' term='errores'/><category scheme='http://www.blogger.com/atom/ns#' term='doctype'/><title type='text'>error document.body.offsetHeight no funciona</title><content type='html'>Cuando determinadas funciones y propiedades de Javascript no funcionan adecuadamente como por ejemplo si se espera que &lt;span style="color:#6666cc;"&gt;document.body.offsetHeight&lt;/span&gt; nos de un valor y en su lugar devuelve un cero, es por que probablemente estemos colocando la siguiente directiva en la página:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;La solución es simple.... hay que quitarla o comentarla.&lt;br /&gt;&lt;br /&gt;Error un tanto raro, que me ha pasado utilizando paginas maestras y controles de usuario de .NET&lt;br /&gt;&lt;br /&gt;P.D: No esta demás advertir que al quitar la declaración del DOCTYPE se puede dar problemas al usar los estilos dentro de elementos DIV que utilicen por ejemplo la propiedad &lt;strong&gt;position&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;- FIN -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114541018827461852-3591028860503372915?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/3591028860503372915/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=3591028860503372915' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/3591028860503372915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/3591028860503372915'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2008/07/error-documentbodyoffsetheight-no.html' title='error document.body.offsetHeight no funciona'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114541018827461852.post-1081068120485538029</id><published>2008-07-10T02:49:00.000-07:00</published><updated>2008-08-14T05:16:02.311-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bcndev'/><title type='text'>Desarrollo .NET</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_mG-olUabbUE/SHXbXRSVvSI/AAAAAAAAACs/J4gwGavcTf0/s1600-h/296792535_img.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Dirección de mi blog Desarrollo.NET&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://bcngeeks.net/blogs/emmerson/default.aspx"&gt;http://bcngeeks.net/blogs/emmerson/default.aspx&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&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/7114541018827461852-1081068120485538029?l=emmersonmiranda-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emmersonmiranda-net.blogspot.com/feeds/1081068120485538029/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114541018827461852&amp;postID=1081068120485538029' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/1081068120485538029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114541018827461852/posts/default/1081068120485538029'/><link rel='alternate' type='text/html' href='http://emmersonmiranda-net.blogspot.com/2008/07/desarrollo-net.html' title='Desarrollo .NET'/><author><name>Emmerson Miranda</name><uri>http://www.blogger.com/profile/13993363355538813309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-0t7c3m_QUcA/TXa9LuU0IXI/AAAAAAAAAV0/i7GPLrXViU0/s220/P1030494.JPG'/></author><thr:total>0</thr:total></entry></feed>
