<?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-4109400431317238903</id><updated>2011-11-27T21:09:37.221-03:00</updated><category term='C#'/><category term='Actualidad'/><category term='DotNet Tool'/><category term='Blog'/><category term='ASP.NET'/><category term='.NET'/><title type='text'>_Sebastian</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sebastianbustelo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4109400431317238903/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sebastianbustelo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>sebastian</name><uri>http://www.blogger.com/profile/10495083164667374059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4109400431317238903.post-2022144565695538031</id><published>2009-05-19T19:11:00.007-03:00</published><updated>2009-05-19T19:18:04.849-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Actualidad'/><title type='text'>Tecnologías que decepcionaron</title><content type='html'>&lt;p&gt;Este es un articulo de una &lt;a href="http://www.pcauthority.com.au/"&gt;revista australiana&lt;/a&gt; que me parecio interesante, en comparacion con el articulo original,solo puse algunas de la tecnologias y un resumen de estas.&lt;/p&gt;  &lt;p&gt;Muchas veces un nuevo producto que viene a lo largo de todo el mundo,con todo el markenting alrededor, hace pensar desde los ejecutivos a los analistas, incluso a los periodistas que va a cambiar el mundo de TI. Pero estas afirmaciones son a menudo erróneas.&lt;br /&gt;  &lt;p&gt;&lt;b&gt;1.Biometría&lt;/b&gt; :&lt;/p&gt;  &lt;p&gt;La biometría se suponía que iba a ser la varita mágica que resuelva todas nuestras necesidades de seguridad. Vemos en cualquier película donde están tratando de ser futuristas&lt;a href="http://lh6.ggpht.com/_pyS1PQLw8RA/ShMuhZnZMRI/AAAAAAAAAbg/NVJZ_4gkWjU/s1600-h/image%5B7%5D.png"&gt;&lt;img title="image" style="border: 0px none ; display: inline; margin-left: 0px; margin-right: 0px;" alt="image" src="http://lh3.ggpht.com/_pyS1PQLw8RA/ShMujCk7KWI/AAAAAAAAAbk/gYN1RlwybXc/image_thumb%5B5%5D.png?imgmax=800" width="204" align="right" border="0" height="133" /&gt;&lt;/a&gt; o de alta tecnología y están las personas que reciben su cuerpo escaneados como medida de seguridad.&lt;/p&gt;  &lt;p&gt;Sin embargo, la realidad ha resultado ser menos de lo que se prometió.Lectores de huellas dactilares están en amplia circulación, pero son fácilmente engañados estos días, con materiales baratos, o por medios más directos.Ladrones en Taiwán habrían cortado el dedo de un hombre cuyo coche había una huella dactilar de encendido, lo que llevó a los fabricantes a instalar el escáner de un sensor de temperatura en el futuro los modelos para prevenir una repetición.&lt;/p&gt;  &lt;p&gt;Uno de los problemas de la biométrica es que la gente realmente no la quiere. &lt;/p&gt;  &lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;2.Ubuntu:&lt;/strong&gt;  &lt;/p&gt;  &lt;p&gt;Si bien Linux ha atrapado definitivamente a los servidores  y el mercado de base de datos , el sistema operativo de código abierto realmente nunca ha sido  capaz   de avanzar de forma masiva en todo mercado.&lt;a href="http://lh5.ggpht.com/_pyS1PQLw8RA/ShMujxWaLqI/AAAAAAAAAbo/qslsExSBqGg/s1600-h/image%5B11%5D.png"&gt;&lt;img title="image" style="border: 0px none ; display: inline; margin-left: 0px; margin-right: 0px;" alt="image" src="http://lh3.ggpht.com/_pyS1PQLw8RA/ShMukRl2mxI/AAAAAAAAAbs/_WyyyN4bjUA/image_thumb%5B7%5D.png?imgmax=800" width="204" align="right" border="0" height="154" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Quienes hacen uso de Linux como principal sistema operativo para su casa o PC de trabajo siguen siendo en general los usuarios de tecnología con experiencia.&lt;/p&gt;  &lt;p&gt;Ubuntu se suponía que iba a cambiar eso. Cuando se lanzó el sistema operativo, recuerdo a todos mis amigos de Linux-defensor predecir que sería el producto que haría el salto y el reto a Microsoft en el consumidor y estaciones de trabajo. Casi cinco años después de su lanzamiento, Ubuntu sigue siendo popular entre los usuarios de Linux, pero aún no ha podido realmente recoger cualquier tipo de impulso real en el mayor mercado de OS de escritorio.&lt;/p&gt;  &lt;p&gt;No me malinterpreten, me gusta Ubuntu y se ejecuta en un sistema en casa. Pero a menos que un fabricante importante realice un preinstalling, va a estar vigente la limitación entre un entusiasta de Linux y un aficionado.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;3.Realidad Virtual&lt;/b&gt; &lt;/p&gt;  &lt;p&gt;Pocas tecnologías han prometido tanto y han entregado tan poco.&lt;/p&gt;  &lt;p&gt;Al igual que muchas cosas en esta lista, VR era una gran idea.La novedad comenzó en centros comerciales, el uso del juego es bastante limitado, y la realidad virtual para las aplicaciones de negocio en su estado de 1990 fueron casi cero.Incluso hoy en día, el concepto de realidad virtual se limita a un par de pantallas y una buena tarjeta gráfica.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;4.Los motores de búsqueda alternativos&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Estamos en el cierre de casi una década del reinado de Google en búsquedas en el mundo, y en este punto, hemos llegado a aceptar que el sitio es más o menos, una manera &lt;a href="http://lh5.ggpht.com/_pyS1PQLw8RA/ShMulrgzW7I/AAAAAAAAAbw/vsj1dfh75Hs/s1600-h/image%5B15%5D.png"&gt;&lt;img title="image" alt="image" src="http://lh5.ggpht.com/_pyS1PQLw8RA/ShMum_6KCXI/AAAAAAAAAb0/LIEFXHHEB_E/image_thumb%5B9%5D.png?imgmax=800" width="204" align="right" border="0" height="135" /&gt;&lt;/a&gt;de facto para búsquedas de información en la web . Yahoo en estos días es un círculo vacio, y aunque Microsoft continúa su intento por comprarlo, el buscador MSN siempre ha estado muy por detrás. &lt;/p&gt;  &lt;p&gt;Pero no siempre fue de esa manera.A finales de los años 90, los motores de búsqueda y los servicios parecen estar surgiendo la izquierda y la derecha. Servicios tales como Hotbot, Lycos, Alta Vista y Northernlight todos compitiendo por una cuota de mercado y trabajando constantemente.&lt;/p&gt;  &lt;p&gt;Es decepcionante que haya tan pocos, en su caso, los servicios proporcionado fuera de lo que es Google Search está dando un plazo para su dinero y realmente empujar a la empresa a intensificar su juego. Como estamos en la cúspide de la liberación de Wolfram Alfa, aquí está la esperanza de otros sitios y de poder llevar algo de competencia a la búsqueda en el mundo.&lt;/p&gt;  &lt;p&gt;Hemos visto que algunos aspirantes a la corona, algunos de los cuales duró muy poco tiempo. Recuerden CUIL, el motor de búsqueda irlandés que dejaria a Google obsoleto? It died a quick death and I fear unless Wolfram Alpha is extraordinary it will suffer the same fate. Tuvo una muerte rápida y me temo que a menos que Wolfram alfa sea extraordinario, sufrira el mismo destino.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;5.Reconocimiento de voz&lt;/b&gt; &lt;/p&gt;  &lt;p&gt;El hecho de que el reconocimiento de voz necesita una revolución en el software inteligente también.No sirve de nada tener el hardware para impulsar la aplicación si el software es tan pobre.Nombres, los dialectos regionales y expresiones habituales del lenguaje parece más allá de software actual. &lt;/p&gt;  &lt;p&gt;No sólo el reconocimiento de voz fue una enorme decepción, también es francamente irritante. Tanto es así que recientemente fue nombrado uno de las tecnologias más molestas.&lt;/p&gt;  &lt;p&gt;Parte del problema es el hardware. Conseguir un sistema de reconocimiento de voz que funciona con fiabilidad es una tarea todavía muy costosa y tediosa. Y cuando no funciona con fiabilidad, es completamente inútil.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;6.Windows Vista&lt;/b&gt; &lt;br /&gt;&lt;img src="http://i.haymarket.net.au/utils/ImageResizer.ashx?w=200&amp;amp;n=http://backoffice.ajb.com.au/images/features/microsoft-windows-vista-box.jpg" align="right" border="0" /&gt; &lt;br /&gt;No hay mucho debate. Aunque Microsoft esta por presentar el desarrollo de Windows 7, Vista aún está fresco en la mente de todos como una epopeya fracaso. &lt;br /&gt;En un futuro próximo, a los estudiantes se les enseñará sobre el lanzamiento de Vista como un ejemplo de libro de cómo no liberar a una pieza de software.&lt;/p&gt;  &lt;p&gt;Con todo, Vista se ha convertido en el mayor fracaso en la historia de la computación. Afortunadamente para Microsoft, Windows 7 parece estar llegando a lo largo de mucho más suave.  Por otra parte, ¿cómo puede ser peor?&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.pcauthority.com.au/News/145271,top-10-disappointing-technologies.aspx"&gt;fuente original&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4109400431317238903-2022144565695538031?l=sebastianbustelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sebastianbustelo.blogspot.com/feeds/2022144565695538031/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4109400431317238903&amp;postID=2022144565695538031' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4109400431317238903/posts/default/2022144565695538031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4109400431317238903/posts/default/2022144565695538031'/><link rel='alternate' type='text/html' href='http://sebastianbustelo.blogspot.com/2009/05/tecnologias-que-decepcionaron.html' title='Tecnologías que decepcionaron'/><author><name>sebastian</name><uri>http://www.blogger.com/profile/10495083164667374059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_pyS1PQLw8RA/ShMujCk7KWI/AAAAAAAAAbk/gYN1RlwybXc/s72-c/image_thumb%5B5%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4109400431317238903.post-5011283409161340019</id><published>2008-10-02T00:52:00.006-03:00</published><updated>2009-05-19T01:20:39.893-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blog'/><title type='text'>Estadisticas y Seguimiento de mi Blog / Sitio</title><content type='html'>&lt;p&gt;                                 &lt;a href="http://www.google.com/analytics/es-ES/index.html" target="_blank"&gt;&lt;img alt="" src="http://www.google.com/analytics/images/logo_ga.gif" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;        Cuando empece a usar blogspot me gusto mucho, pero veia que faltaba algo que tenia en la adm de wordpress, las Estadisticas, entonces les pregunte a algunos amigos como hacian aca para las estadisticas, muchos usan contadores, estadisticas que proveen otros sitios los cuales nos proveen un codigo javascript que insertamos en nuesto sitio o blog, pero no me convencian mucho, hasta que buscando un poco encontre Google Analytics que tambien como los demas no provee un codigo javascript para incluir en nuestro blog pero nos brinda una muy comlpeta informacion  con muchos detalles y encima Gratis, espectacular no solo para los blogs que es donde lo estoy usando ahora, si no para culaquier sitio, podemos hacer un seguimiento del mismo con muchismas estadisticas muy copadas de donde podemos realizar campañas de marketing entre otras cosas&lt;/p&gt;&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;p&gt;Alguna de las estadisticas que nos ofrece son:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Gráfico de visitas por ubicación&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/sebabustelo/SORFONzFB0I/AAAAAAAAASU/9gkEX_oaO2A/s1600-h/est%5B2%5D.jpg"&gt;&lt;img style="border: 0px none ;" alt="est" src="http://lh5.ggpht.com/sebabustelo/SORFSSSffkI/AAAAAAAAASY/QJT2H9E2PM8/est_thumb.jpg?imgmax=800" border="0" width="244" height="141" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Como ven la mayoría de mis visitas vienen de Argentina y Alemania&lt;br /&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Estadísticas de número de visitas en el último mes&lt;/li&gt;    &lt;li&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;Estadísticas por Navegador&lt;/span&gt;&lt;/li&gt;    &lt;li&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;Patrones de click (muy bueno, se superpone a nuestro sitio mostrando los click's realizados por los usuarios)&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/sebabustelo/SORFWq8jAuI/AAAAAAAAASc/6jU9QhYmBtk/s1600-h/est%5B5%5D.jpg"&gt;&lt;img style="border: 0px none ;" alt="est" src="http://lh3.ggpht.com/sebabustelo/SORFec4NaWI/AAAAAAAAASg/YqHd9XiOcGw/est_thumb%5B1%5D.jpg?imgmax=800" border="0" width="244" height="224" /&gt;&lt;/a&gt;  &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;Podemos configurar objetivos : esto dice don google, Por "objetivo" se entiende una página de un sitio web a la que un usuario accede cuando ha realizado una compra o ha completado una determinada acción como, por ejemplo, una suscripción o una descarga.Ejemplo "Gracias por registrar" la pagina  &lt;br /&gt;                               "Gracias por comprar" la pagina&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;                                           &lt;/p&gt;  &lt;p&gt;    y muchísimas estadísticas mas mírenlo Uds. mismos en este &lt;a href="http://www.google.com/analytics/es-ES/index.html" target="_blank"&gt;link&lt;/a&gt;, utilizando su cuenta de gmail ya lo pueden empezar a utilizar.....&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4109400431317238903-5011283409161340019?l=sebastianbustelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4109400431317238903/posts/default/5011283409161340019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4109400431317238903/posts/default/5011283409161340019'/><link rel='alternate' type='text/html' href='http://sebastianbustelo.blogspot.com/2008/10/estadisticas-de-mi-blog.html' title='Estadisticas y Seguimiento de mi Blog / Sitio'/><author><name>sebastian</name><uri>http://www.blogger.com/profile/10495083164667374059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/sebabustelo/SORFSSSffkI/AAAAAAAAASY/QJT2H9E2PM8/s72-c/est_thumb.jpg?imgmax=800' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-4109400431317238903.post-5199243931279627026</id><published>2008-09-20T11:30:00.000-03:00</published><updated>2008-09-20T02:42:59.929-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Rescribir URL en ASP:NET :URLRewrite</title><content type='html'>&lt;p&gt; Un modulo HTTP es una clase que contiene código que se ejecuta cada vez que se crea una petición a una pagina de nuestra aplicación ASP:NET.Teniendo en cuenta esto vemos que estos módulos son perfectos para implementar funcionalidades como caching, authentication, administración de estados, reescritura url.&lt;/p&gt;  &lt;p&gt;Como vimos en esta introducción, podríamos rescribir las URL's si quisiéremos, ahora ¿que ventaja tiene hacer esto ? bueno imagínate una URL como esta &lt;a href="http://www.tusitio.com.ar/prductos.aspx?categoria=limpieza"&gt;http://www.tusitio.com.ar/prductos.aspx?categoria=limpieza&lt;/a&gt; , &lt;a href="http://useit.com/"&gt;Jakob Neilsen&lt;/a&gt; recomienda que las URLs elegidas deben : &lt;/p&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;ol&gt;       &lt;li&gt;Ser cortas &lt;/li&gt;        &lt;li&gt;Fácil de recordarlas &lt;/li&gt;        &lt;li&gt;Visualizar la estructura del sitio &lt;/li&gt;        &lt;li&gt;Permitir al usuario navegar a través del sitio cortando partes de la URL &lt;/li&gt;     &lt;/ol&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;&lt;span style="color:#555555;"&gt;y algunas ventajas que nos ofrece son:&lt;/span&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;ul&gt;     &lt;li&gt;  Manejar casos donde tengas que restructurar las paginas dentro de tu aplicación y quieras que las personas que tienen marcadas tus URL's mantengan un link permanente. &lt;/li&gt;      &lt;li&gt;Mejorar las búsqueda por relevancia de las páginas del sitio con los motores de búsqueda como Google, Yahoo.La reescritura de URL a menudo pueden hacer más fácil integrar a las palabras clave más comunes en las URL       &lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;span style="color:#555555;"&gt;Como vemos la URL citada anteriormente no cumple ninguno de estos criterios.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color:#555555;"&gt;Una mejor aproximación podría ser &lt;a href="http://www.tusitio.com.ar/productos/limpieza"&gt;http://www.tusitio.com.ar/productos/limpieza&lt;/a&gt;, esta si es mas fácil de recordar y por ejemplo si cortáramos limpieza de la url mostraría una lista de todos los productos.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color:#555555;"&gt;Bueno, hay varias formas de hacer esto, voy a mostrar la que a mi parecer es la mas simple y fácil para que cualquiera la pueda implementar.Vamos a utilizar un modulo HTTP que esta disponible en la web de forma gratuita: &lt;a href="http://urlrewriter.net/"&gt;UrlRewriter.net&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;span style="color:#555555;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt; &lt;p&gt;Este módulo permite declarar expresiones que se mapean con las url's de tu aplicación, están reglas se definen en el archivo de configuración web.config.Por ejemplo si usamos el modulo UrlRewriter.net para mapear un la pagina productos.aspx, lo único que hacemos es agregar estas líneas en el web.config:&lt;/p&gt;  &lt;pre style="background: rgb(246, 248, 255) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 32);"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:Arial Narrow;"&gt;&lt;span style="color: rgb(0, 74, 67);"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: rgb(0, 74, 67);"&gt;xml&lt;/span&gt; &lt;span style="color: rgb(0, 74, 67);"&gt;version&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 140, 0);"&gt;"1.0"&lt;/span&gt;&lt;span style="color: rgb(0, 74, 67);"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 133);"&gt;configuration&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 133);"&gt;configSections&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 133);"&gt;section&lt;/span&gt; &lt;span style="color: rgb(71, 71, 150);"&gt;name&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;rewriter&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(71, 71, 150);"&gt;requirePermission&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;false&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(71, 71, 150);"&gt;type&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;Intelligencia.UrlRewriter.Configuration.&lt;br /&gt;                                RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(51, 51, 133);"&gt;configSections&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 133);"&gt;system.web&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 133);"&gt;httpModules&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 133);"&gt;add&lt;/span&gt; &lt;span style="color: rgb(71, 71, 150);"&gt;name&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;UrlRewriter&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(71, 71, 150);"&gt;type&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(51, 51, 133);"&gt;httpModules&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 133);"&gt;compilation&lt;/span&gt; &lt;span style="color: rgb(71, 71, 150);"&gt;debug&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;true&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(51, 51, 133);"&gt;system.web&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 133);"&gt;rewriter&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 133);"&gt;rewrite&lt;/span&gt; &lt;span style="color: rgb(71, 71, 150);"&gt;url&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;~/productos/libros&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(71, 71, 150);"&gt;to&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;~/productos.aspx?categoria=libros&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 133);"&gt;rewrite&lt;/span&gt; &lt;span style="color: rgb(71, 71, 150);"&gt;url&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;~/productos/varios&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(71, 71, 150);"&gt;to&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;~/productos.aspx?categoria=varios&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 133);"&gt;rewrite&lt;/span&gt; &lt;span style="color: rgb(71, 71, 150);"&gt;url&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;~/productos/revistas&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(71, 71, 150);"&gt;to&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;~/productos.aspx?categoria=revistas&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;/&amp;gt;&lt;/span&gt;       &lt;br /&gt;   &lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(51, 51, 133);"&gt;rewriter&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(51, 51, 133);"&gt;configuration&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Fácil no , con estás líneas el modulo se encarga de todo, aparte de esto también tiene la posibilidad de usar expresiones regulares, para evitar escribir código por cada url, el ejemplo anterior lo podríamos simplificar escribiendo una expresión para cualquier categoría:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background: rgb(246, 248, 255) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 32);"&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 133);"&gt;rewriter&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 87, 166);"&gt; &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 133);"&gt;rewrite&lt;/span&gt; &lt;span style="color: rgb(71, 71, 150);"&gt;url&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;~/productos/(.+)&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(71, 71, 150);"&gt;to&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;~/productos.aspx?categoria=$1&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 87, 166);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(51, 51, 133);"&gt;rewriter&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;:Lo bueno de esta forma de realizar la reescritura es que no debemos configurar nada sobre el servidor web iis, al cual no solemos tener acceso, ya que la mayoría de las veces subimos nuestra aplicación sobre un hosting de terceros (por lo menos en mi caso).&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://sites.google.com/site/sebastianbustelo/Home/URLRewrite.zip?attredirects=0"&gt;&lt;u&gt;Descargar Ejemplo&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;  &lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4109400431317238903-5199243931279627026?l=sebastianbustelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sebastianbustelo.blogspot.com/feeds/5199243931279627026/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4109400431317238903&amp;postID=5199243931279627026' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4109400431317238903/posts/default/5199243931279627026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4109400431317238903/posts/default/5199243931279627026'/><link rel='alternate' type='text/html' href='http://sebastianbustelo.blogspot.com/2008/09/rescribir-url-en-aspnet-urlrewrite.html' title='Rescribir URL en ASP:NET :URLRewrite'/><author><name>sebastian</name><uri>http://www.blogger.com/profile/10495083164667374059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4109400431317238903.post-5496325320060557653</id><published>2008-09-06T11:04:00.008-03:00</published><updated>2008-09-11T22:59:56.025-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Asp.net/Asp.net 2.0 en Apache + Windows</title><content type='html'>&lt;p&gt;Si es posible correr paginas aspx en nuestro servidor Apache y en windows, y es muy facil.Solo hay que seguir estos pasos:&lt;/p&gt; &lt;h4&gt;1)Instalar &lt;a href="http://httpd.apache.org/download.cgi" mce_href="http://httpd.apache.org/download.cgi"&gt;Apache&lt;/a&gt;&lt;/h4&gt; &lt;h4&gt;2)Install &lt;a href="http://www.devside.net/download/components/httpd-22/mod_aspdotnet-2.2.2004.zip" mce_href="http://www.devside.net/download/components/httpd-22/mod_aspdotnet-2.2.2004.zip"&gt;Mod_AspDotNet&lt;/a&gt;&lt;/h4&gt; &lt;h4&gt;3)Agregar las siguientes lineas al final del archivo httpd.conf (por defecto en C:\Archivos de Programa\Apache Group\Apache2\conf\httpd.conf):&lt;br /&gt;&lt;/h4&gt;&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;pre style="background: rgb(246, 248, 255) none repeat scroll 0% 0%; color: rgb(0, 0, 32); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style="color: rgb(89, 89, 121);"&gt;#asp.net&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;LoadModule&lt;/span&gt; aspdotnet_module &lt;span style="color: rgb(16, 96, 182);"&gt;"modules/mod_aspdotnet.so"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;AddHandler&lt;/span&gt; asp.net asax ascx ashx asmx aspx axd config cs csproj licx rem resources&lt;br /&gt;        resx soap vb vbproj vsdisco webinfo&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;IfModule&lt;/span&gt; &lt;span style="color: rgb(16, 96, 182);"&gt;mod_aspdotnet.cpp&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(89, 89, 121);"&gt;# Mount the ASP.NET /asp application&lt;/span&gt;&lt;br /&gt;AspNetMount /ApacheASP &lt;span style="color: rgb(16, 96, 182);"&gt;"c:/ApacheASP"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(89, 89, 121);"&gt;#/ApacheASP is the alias name for asp.net to execute&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(89, 89, 121);"&gt;#"c:/ApacheASP" is the actual execution of files/folders in that location&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(89, 89, 121);"&gt;# Map all requests for /asp to the application files&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;Alias&lt;/span&gt; /ApacheASP &lt;span style="color: rgb(16, 96, 182);"&gt;"c:/ApacheASP"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(89, 89, 121);"&gt;#maps /ApacheASP request to "c:/ApacheASP"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(89, 89, 121);"&gt;#now to get to the /ApacheASP type http://localhost/ApacheASP&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(89, 89, 121);"&gt;#It'll redirect http://localhost/ApacheASP to "c:/ApacheASP"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(89, 89, 121);"&gt;# Allow asp.net scripts to be executed in the /ApacheASP example&lt;/span&gt;&lt;br /&gt;&lt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;Directory&lt;/span&gt; &lt;span style="color: rgb(16, 96, 182);"&gt;"c:/ApacheASP"&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;Options&lt;/span&gt; &lt;span style="color: rgb(7, 71, 38);"&gt;FollowSymlinks&lt;/span&gt; &lt;span style="color: rgb(7, 71, 38);"&gt;ExecCGI&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;Order &lt;/span&gt;&lt;span style="color: rgb(7, 71, 38);"&gt;allow&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(7, 71, 38);"&gt;deny&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;Allow from&lt;/span&gt; &lt;span style="color: rgb(7, 71, 38);"&gt;all&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;DirectoryIndex&lt;/span&gt; index.htm index.aspx&lt;br /&gt;&lt;span style="color: rgb(89, 89, 121);"&gt;#default the index page to .htm and .aspx&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&lt;!--&lt;/span--&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;Directory&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(89, 89, 121);"&gt;# For all virtual ASP.NET webs, we need the aspnet_client files&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(89, 89, 121);"&gt;# to serve the client-side helper scripts.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;AliasMatch&lt;/span&gt; /aspnet_client/system_web/&lt;span style="color: rgb(48, 128, 128);"&gt;(&lt;/span&gt;\d&lt;span style="color: rgb(48, 128, 128);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;)&lt;/span&gt;_&lt;span style="color: rgb(48, 128, 128);"&gt;(&lt;/span&gt;\d&lt;span style="color: rgb(48, 128, 128);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;)&lt;/span&gt;_&lt;span style="color: rgb(48, 128, 128);"&gt;(&lt;/span&gt;\d&lt;span style="color: rgb(48, 128, 128);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;)&lt;/span&gt;_&lt;span style="color: rgb(48, 128, 128);"&gt;(&lt;/span&gt;\d&lt;span style="color: rgb(48, 128, 128);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;)&lt;/span&gt;/&lt;span style="color: rgb(48, 128, 128);"&gt;(&lt;/span&gt;.*&lt;span style="color: rgb(48, 128, 128);"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(16, 96, 182);"&gt;"C:/Windows/Microsoft.NET/Framework/v$1.$2.$3/ASP.NETClientFiles/$4"&lt;/span&gt;&lt;br /&gt;&lt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;Directory&lt;/span&gt; &lt;span style="color: rgb(16, 96, 182);"&gt;"C:/Windows/Microsoft.NET/Framework/v*/ASP.NETClientFiles"&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;Options&lt;/span&gt; &lt;span style="color: rgb(7, 71, 38);"&gt;FollowSymlinks&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;Order &lt;/span&gt;&lt;span style="color: rgb(7, 71, 38);"&gt;allow&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(7, 71, 38);"&gt;deny&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;Allow from&lt;/span&gt; &lt;span style="color: rgb(7, 71, 38);"&gt;all&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&lt;!--&lt;/span--&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;Directory&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&lt;!--&lt;/span--&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;IfModule&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(89, 89, 121);"&gt;#asp.net&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;img src="http://xeba.wordpress.com/wp-includes/js/tinymce-249/plugins/wordpress/img/trans.gif" mce_src="http://xeba.wordpress.com/wp-includes/js/tinymce-249/plugins/wordpress/img/trans.gif" alt="" class="mceWPmore mceItemNoResize" title="(más...)" /&gt;&lt;br /&gt;&lt;p&gt;Crear el directorio c:\ApacheASP y agregar index.aspx :&lt;/p&gt; &lt;pre style="background: rgb(246, 248, 255) none repeat scroll 0% 0%; color: rgb(0, 0, 32); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;br /&gt;&amp;lt;%@ Page Language="C#" %&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;html&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;head&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;link&lt;/span&gt;&lt;span style="color: rgb(71, 71, 150);"&gt; &lt;/span&gt;&lt;span style="color: rgb(7, 71, 38);"&gt;rel&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"stylesheet"&lt;/span&gt;&lt;span style="color: rgb(7, 71, 38);"&gt;href&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"example.css"&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;head&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;body&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;form&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&amp;lt;% for (int i=&lt;span style="color: rgb(0, 140, 0);"&gt;0&lt;/span&gt;;i&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 133);"&gt;5&lt;/span&gt;&lt;span style="color: rgb(71, 71, 150);"&gt;;i++&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(71, 71, 150);"&gt; { %&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;font&lt;/span&gt;&lt;span style="color: rgb(71, 71, 150);"&gt; &lt;/span&gt;&lt;span style="color: rgb(7, 71, 38);"&gt;size&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(16, 96, 182);"&gt;"&amp;lt;%=I%&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&gt;&lt;/span&gt; Sample ASP&lt;span style="color: rgb(0, 140, 0);"&gt;.&lt;/span&gt;NET TEST&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;font&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;br&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&amp;lt;% } %&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;form&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;body&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;html&lt;/span&gt;&lt;span style="color: rgb(0, 87, 166);"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;h4&gt;4)Reiniciar el Servidor Apache y probar &lt;a title="http://localhost/ApacheAsp" href="http://localhost/ApacheAsp" mce_href="http://localhost/ApacheAsp"&gt;http://localhost/ApacheAsp&lt;/a&gt;&lt;/h4&gt; &lt;p&gt;Eso  es todo...&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4109400431317238903-5496325320060557653?l=sebastianbustelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sebastianbustelo.blogspot.com/feeds/5496325320060557653/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4109400431317238903&amp;postID=5496325320060557653' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4109400431317238903/posts/default/5496325320060557653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4109400431317238903/posts/default/5496325320060557653'/><link rel='alternate' type='text/html' href='http://sebastianbustelo.blogspot.com/2008/09/aspnetaspnet-20-en-apache-windows.html' title='Asp.net/Asp.net 2.0 en Apache + Windows'/><author><name>sebastian</name><uri>http://www.blogger.com/profile/10495083164667374059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4109400431317238903.post-8065037956675658334</id><published>2008-09-06T10:44:00.004-03:00</published><updated>2008-09-10T20:53:09.301-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNet Tool'/><title type='text'>Documentacion: SandCastle</title><content type='html'>&lt;p&gt;Hola como estan, en este post les quiero comentar que estuve realizando un proyecto con un amigo y utilizamos esta herramienta para documentar y la verdad nos ha resultado muy util.&lt;/p&gt; &lt;p&gt;Bueno utilizamos &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=E82EA71D-DA89-42EE-A715-696E3A4873B2&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=E82EA71D-DA89-42EE-A715-696E3A4873B2&amp;amp;displaylang=en" target="_blank"&gt;sandcastle&lt;/a&gt; y para generar la doc usamos una gui para esta herramienta que es &lt;a href="http://www.codeplex.com/SHFB" mce_href="http://www.codeplex.com/SHFB" target="_blank"&gt;sandcastle help file builder&lt;/a&gt; que la pueden bajar del codeplex.... Es cierto que a casi todos nos cuesta un poco (por lo menos a mi) acostumbrarnos a documetar en el codigo , uno siempre dice "si despues lo hago" y deja pasar , es cierto que a veces los tiempos son acotados , pero uno tiene que entender que este tiempo documentando (mal llamado tiempo perdido por algunos), es lo que en futuro cuando el usuario/cliente requiera alguna nueva funcionalidad/modificacion, esta modificacion la puede realizar cualquier persona no necesariamente la/las que desarrollo por primera vez. Es en estos momentos donde vemos la necesidad y vemos que esto deberia se una practica fundamental.Los pasos a seguir para generar esta documentacion son :&lt;/p&gt; &lt;br /&gt;&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;1)Para que VS genere la doc en los xml debemos especificarlo en nuestro codigo antes de genrarlos con sandcastle help file builder, por ej:&lt;/p&gt;&lt;pre style="background: rgb(246, 248, 255) none repeat scroll 0% 0%; color: rgb(0, 0, 32); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style="color: rgb(89, 89, 121);"&gt;/// &lt;summary&gt;&lt;/summary&gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: rgb(89, 89, 121);"&gt;/// Muestra un formulario dentro de un Mdi&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: rgb(89, 89, 121);"&gt;/// &amp;lt;/summary&gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: rgb(89, 89, 121);"&gt;/// &amp;lt;param name="formulario"&gt;Formulario a Mostrar&amp;lt;/param&gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: rgb(89, 89, 121);"&gt;/// &amp;lt;param name="MdiParent"&gt;Formulario Mdi padre&amp;lt;/param&gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;static&lt;/span&gt; &lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;void&lt;/span&gt; MostrarForm&lt;span style="color: rgb(48, 128, 128);"&gt;(&lt;/span&gt;frmEntity formulario&lt;span style="color: rgb(48, 128, 128);"&gt;,&lt;/span&gt; Form MdiParent&lt;span style="color: rgb(48, 128, 128);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;bool&lt;/span&gt; permitirSeleccionar&lt;span style="color: rgb(48, 128, 128);"&gt;)&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: rgb(64, 96, 128);"&gt;{&lt;/span&gt;&lt;br /&gt;         &lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: rgb(48, 128, 128);"&gt;(&lt;/span&gt;MdiParent&lt;span style="color: rgb(48, 128, 128);"&gt;.&lt;/span&gt;IsMdiContainer&lt;span style="color: rgb(48, 128, 128);"&gt;)&lt;/span&gt;&lt;br /&gt;         &lt;span style="color: rgb(64, 96, 128);"&gt;{&lt;/span&gt;&lt;br /&gt;             formulario&lt;span style="color: rgb(48, 128, 128);"&gt;.&lt;/span&gt;MdiParent &lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt; MdiParent&lt;span style="color: rgb(64, 96, 128);"&gt;;&lt;/span&gt;&lt;br /&gt;             formulario&lt;span style="color: rgb(48, 128, 128);"&gt;.&lt;/span&gt;WindowState &lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt; FormWindowState&lt;span style="color: rgb(48, 128, 128);"&gt;.&lt;/span&gt;Normal&lt;span style="color: rgb(64, 96, 128);"&gt;;&lt;/span&gt;&lt;br /&gt;         &lt;span style="color: rgb(64, 96, 128);"&gt;}&lt;/span&gt;&lt;br /&gt;         formulario&lt;span style="color: rgb(48, 128, 128);"&gt;.&lt;/span&gt;PermitirSeleccionar &lt;span style="color: rgb(48, 128, 128);"&gt;=&lt;/span&gt; permitirSeleccionar&lt;span style="color: rgb(64, 96, 128);"&gt;;&lt;/span&gt;&lt;br /&gt;         &lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: rgb(48, 128, 128);"&gt;(&lt;/span&gt;MdiParent&lt;span style="color: rgb(48, 128, 128);"&gt;.&lt;/span&gt;IsMdiContainer&lt;span style="color: rgb(48, 128, 128);"&gt;)&lt;/span&gt; formulario&lt;span style="color: rgb(48, 128, 128);"&gt;.&lt;/span&gt;Show&lt;span style="color: rgb(48, 128, 128);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(64, 96, 128);"&gt;;&lt;/span&gt; &lt;span style="color: rgb(32, 0, 128); font-weight: bold;"&gt;else&lt;/span&gt; formulario&lt;span style="color: rgb(48, 128, 128);"&gt;.&lt;/span&gt;ShowDialog&lt;span style="color: rgb(48, 128, 128);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(48, 128, 128);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(64, 96, 128);"&gt;;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: rgb(64, 96, 128);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;2) En las propiedades de cada proyecto de nuestra solucion habilitamos para que se genere el archivo xml correspondiente&lt;/p&gt; &lt;p&gt;project(tu proyecto)--&gt;properties--&gt;build --&gt; xml documentation file&lt;/p&gt; &lt;p&gt;generarlo..&lt;/p&gt; &lt;p&gt;3)Abrimos sandcastle help file builder y cargamos los xml generados anteriormente, tenemos varias opciones que podemos configurar, por ejemplo generar chm / html o ambos, una vez finalizado ... listo&lt;/p&gt; &lt;p&gt;&lt;a href="http://xeba.files.wordpress.com/2007/11/windowslivewriterdocumentacionsandcastle-adf6sistemamotos22.jpg" mce_href="http://xeba.files.wordpress.com/2007/11/windowslivewriterdocumentacionsandcastle-adf6sistemamotos22.jpg"&gt;&lt;img style="border: 0pt none ;" mce_style="border:0 none;" src="http://xeba.files.wordpress.com/2007/11/windowslivewriterdocumentacionsandcastle-adf6sistemamotos-thumb2.jpg" mce_src="http://xeba.files.wordpress.com/2007/11/windowslivewriterdocumentacionsandcastle-adf6sistemamotos-thumb2.jpg" alt="" border="0" width="337" height="156" /&gt;&lt;/a&gt;&lt;br /&gt;Espero que les resulte util.............&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4109400431317238903-8065037956675658334?l=sebastianbustelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sebastianbustelo.blogspot.com/feeds/8065037956675658334/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4109400431317238903&amp;postID=8065037956675658334' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4109400431317238903/posts/default/8065037956675658334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4109400431317238903/posts/default/8065037956675658334'/><link rel='alternate' type='text/html' href='http://sebastianbustelo.blogspot.com/2008/09/documentacion-sandcastle.html' title='Documentacion: SandCastle'/><author><name>sebastian</name><uri>http://www.blogger.com/profile/10495083164667374059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4109400431317238903.post-7480228878240541271</id><published>2008-09-06T10:28:00.002-03:00</published><updated>2008-09-06T10:42:22.412-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNet Tool'/><title type='text'>Analizador de Codigo (best-practices)</title><content type='html'>&lt;p&gt;FxCop es una herramienta  libre de analisis de codigo para .net. Esta herraminenta analiza el asembly y verifica si las guidelines fueron aplicadas.&lt;br /&gt;&lt;span&gt;&lt;span class="Article_FullDescription"&gt;Las guidelines se encuentran en &lt;b&gt;.NET Framework SDK\Reference\Design Guidelines for Class Library Developers&lt;/b&gt;. Estas traen información y buenas prácticas sobre: nomenclaturas, patrones de manejo de errores, patrones de diseño, entre otros temas.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Es cierto que tilizar este analizador no nos asegura realizar codigo 100% seguro, pero si nos permite realizar un codigo mas robusto y de mayor calidad, reduciendo asi los riesgos.Posee una interfaz bastante sencilla, simple de usar y amigable, puden descargarlo desde &lt;a href="http://code.msdn.microsoft.com/codeanalysis/Release/ProjectReleases.aspx?ReleaseId=553" mce_href="http://code.msdn.microsoft.com/codeanalysis/Release/ProjectReleases.aspx?ReleaseId=553"&gt;aqui ,&lt;/a&gt;&lt;br /&gt;tambien posee una version de linea de comandos que no la use.&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4109400431317238903-7480228878240541271?l=sebastianbustelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sebastianbustelo.blogspot.com/feeds/7480228878240541271/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4109400431317238903&amp;postID=7480228878240541271' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4109400431317238903/posts/default/7480228878240541271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4109400431317238903/posts/default/7480228878240541271'/><link rel='alternate' type='text/html' href='http://sebastianbustelo.blogspot.com/2008/09/analizador-de-codigo-best-practices.html' title='Analizador de Codigo (best-practices)'/><author><name>sebastian</name><uri>http://www.blogger.com/profile/10495083164667374059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4109400431317238903.post-361719291601577570</id><published>2007-09-06T11:25:00.000-03:00</published><updated>2009-05-18T17:55:03.325-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Ejemplo de Generics en C# 2.0</title><content type='html'>Vamos a ver una de las nuevas caracter&amp;#237;sticas de C# 2.0.   &lt;p&gt;&lt;/p&gt;  &lt;p&gt;A medida que los proyectos son mas complicados, los desarrolladores necesitamos incrementar de la mejor manera la reutilizaci&amp;#243;n y personalizacion del Software. Para conseguir una alto nivel de reutilizaci&amp;#243;n de c&amp;#243;digo, los desarrolladores podemos utilizar esta caracter&amp;#237;stica llamada Generics.Usando Generics, podemos crear clases templates que soporten cualquier tipo. Cuando instanciamos la clase, especificamos el tipo que queremos usar, y desde este punto, nuestro objeto es creado para el tipo que nosotros elegimos.&lt;/p&gt;  &lt;p&gt;Veamos un ejemplo de como crear una clase gen&amp;#233;rica en C# 2.0    &lt;br /&gt;&lt;span id="fullpost"&gt;     &lt;br /&gt;&lt;span style="font-family: monospace"&gt;&lt;/span&gt;&lt;/span&gt;    &lt;pre style="background: rgb(246,248,255); color: rgb(0,0,32); moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;using&lt;/span&gt; System&lt;span style="color: rgb(64,96,128)"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;using&lt;/span&gt; System&lt;span style="color: rgb(48,128,128)"&gt;.&lt;/span&gt;Collections&lt;span style="color: rgb(48,128,128)"&gt;.&lt;/span&gt;Generic&lt;span style="color: rgb(64,96,128)"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;using&lt;/span&gt; System&lt;span style="color: rgb(48,128,128)"&gt;.&lt;/span&gt;Text&lt;span style="color: rgb(64,96,128)"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;using&lt;/span&gt; System&lt;span style="color: rgb(48,128,128)"&gt;.&lt;/span&gt;Collections&lt;span style="color: rgb(64,96,128)"&gt;;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;namespace&lt;/span&gt; PruebaGenerics&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(64,96,128)"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;public&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;class&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;MyCustomList&lt;span style="color: rgb(48,128,128)"&gt;&amp;lt;&lt;/span&gt;MYTYPE&lt;span style="color: rgb(48,128,128)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(64,96,128)"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;private&lt;/span&gt; ArrayList _mList&lt;span style="color: rgb(48,128,128)"&gt;=&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;new&lt;/span&gt; ArrayList&lt;span style="color: rgb(48,128,128)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;)&lt;/span&gt;&lt;span style="color: rgb(64,96,128)"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;public&lt;/span&gt; MYTYPE &lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;this&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;[&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;int&lt;/span&gt; index&lt;span style="color: rgb(48,128,128)"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(64,96,128)"&gt;{&lt;/span&gt;&lt;br /&gt;   get&lt;br /&gt;   &lt;span style="color: rgb(64,96,128)"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(48,128,128)"&gt;(&lt;/span&gt;MYTYPE&lt;span style="color: rgb(48,128,128)"&gt;)&lt;/span&gt;_mList&lt;span style="color: rgb(48,128,128)"&gt;[&lt;/span&gt;index&lt;span style="color: rgb(48,128,128)"&gt;]&lt;/span&gt;&lt;span style="color: rgb(64,96,128)"&gt;;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(64,96,128)"&gt;}&lt;/span&gt;&lt;br /&gt;   set&lt;br /&gt;   &lt;span style="color: rgb(64,96,128)"&gt;{&lt;/span&gt;&lt;br /&gt;       _mList&lt;span style="color: rgb(48,128,128)"&gt;[&lt;/span&gt;index&lt;span style="color: rgb(48,128,128)"&gt;]&lt;/span&gt; &lt;span style="color: rgb(48,128,128)"&gt;=&lt;/span&gt; value&lt;span style="color: rgb(64,96,128)"&gt;;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(64,96,128)"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(64,96,128)"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;public&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;int&lt;/span&gt; Add&lt;span style="color: rgb(48,128,128)"&gt;(&lt;/span&gt;MYTYPE value&lt;span style="color: rgb(48,128,128)"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(64,96,128)"&gt;{&lt;/span&gt;&lt;br /&gt;   &lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;return&lt;/span&gt; _mList&lt;span style="color: rgb(48,128,128)"&gt;.&lt;/span&gt;Add&lt;span style="color: rgb(48,128,128)"&gt;(&lt;/span&gt;value&lt;span style="color: rgb(48,128,128)"&gt;)&lt;/span&gt;&lt;span style="color: rgb(64,96,128)"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(64,96,128)"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;public&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;void&lt;/span&gt; Remove&lt;span style="color: rgb(48,128,128)"&gt;(&lt;/span&gt;MYTYPE value&lt;span style="color: rgb(48,128,128)"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(64,96,128)"&gt;{&lt;/span&gt;&lt;br /&gt;   _mList&lt;span style="color: rgb(48,128,128)"&gt;.&lt;/span&gt;Remove&lt;span style="color: rgb(48,128,128)"&gt;(&lt;/span&gt;value&lt;span style="color: rgb(48,128,128)"&gt;)&lt;/span&gt;&lt;span style="color: rgb(64,96,128)"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(64,96,128)"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(64,96,128)"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(64,96,128)"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Aqu&amp;#237;, MyCustomList es creada en un ArrayList. Pero estos m&amp;#233;todos e indexaciones son fuertemente tipeadas, &lt;mytype&gt;es un contenedor para cualquier tipo que tu elijas cuando tu creas la clase. Este contenedor es definido entre signos &amp;quot;&amp;lt; &amp;gt;&amp;quot; despu&amp;#233;s del nombre de la clase. Ahora vemos como crear una instancia de la clase MyCustomList.&lt;/mytype&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;pre style="background: rgb(246,248,255); color: rgb(0,0,32); moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;using&lt;/span&gt; System&lt;span style="color: rgb(64,96,128)"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;using&lt;/span&gt; System&lt;span style="color: rgb(48,128,128)"&gt;.&lt;/span&gt;Collections&lt;span style="color: rgb(48,128,128)"&gt;.&lt;/span&gt;Generic&lt;span style="color: rgb(64,96,128)"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;using&lt;/span&gt; System&lt;span style="color: rgb(48,128,128)"&gt;.&lt;/span&gt;Text&lt;span style="color: rgb(64,96,128)"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;using&lt;/span&gt; PruebaGenerics&lt;span style="color: rgb(64,96,128)"&gt;;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;namespace&lt;/span&gt; GenericsConsole&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(64,96,128)"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;class&lt;/span&gt; Program&lt;br /&gt;&lt;span style="color: rgb(64,96,128)"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;static&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;void&lt;/span&gt; Main&lt;span style="color: rgb(48,128,128)"&gt;(&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;[&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;]&lt;/span&gt; args&lt;span style="color: rgb(48,128,128)"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(64,96,128)"&gt;{&lt;/span&gt;&lt;br /&gt;MyCustomList&lt;span style="color: rgb(48,128,128)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;int&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;&amp;gt;&lt;/span&gt; lEnteros &lt;span style="color: rgb(48,128,128)"&gt;=&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;new&lt;/span&gt; MyCustomList&lt;span style="color: rgb(48,128,128)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;int&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;)&lt;/span&gt;&lt;span style="color: rgb(64,96,128)"&gt;;&lt;/span&gt;&lt;br /&gt;lEnteros&lt;span style="color: rgb(48,128,128)"&gt;.&lt;/span&gt;Add&lt;span style="color: rgb(48,128,128)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,140,0)"&gt;23&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;)&lt;/span&gt;&lt;span style="color: rgb(64,96,128)"&gt;;&lt;/span&gt;&lt;br /&gt;Console&lt;span style="color: rgb(48,128,128)"&gt;.&lt;/span&gt;WriteLine&lt;span style="color: rgb(48,128,128)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128,0,0)"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(16,96,182)"&gt;lista con entero: &lt;/span&gt;&lt;span style="color: rgb(128,0,0)"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;+&lt;/span&gt;lEnteros&lt;span style="color: rgb(48,128,128)"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0,140,0)"&gt;0&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;]&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;)&lt;/span&gt;&lt;span style="color: rgb(64,96,128)"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;MyCustomList&lt;span style="color: rgb(48,128,128)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;&amp;gt;&lt;/span&gt; lString &lt;span style="color: rgb(48,128,128)"&gt;=&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;new&lt;/span&gt; MyCustomList&lt;span style="color: rgb(48,128,128)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(32,0,128)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;)&lt;/span&gt;&lt;span style="color: rgb(64,96,128)"&gt;;&lt;/span&gt;&lt;br /&gt;lString&lt;span style="color: rgb(48,128,128)"&gt;.&lt;/span&gt;Add&lt;span style="color: rgb(48,128,128)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128,0,0)"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(16,96,182)"&gt;Te gusto?&lt;/span&gt;&lt;span style="color: rgb(128,0,0)"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;)&lt;/span&gt;&lt;span style="color: rgb(64,96,128)"&gt;;&lt;/span&gt;&lt;br /&gt;Console&lt;span style="color: rgb(48,128,128)"&gt;.&lt;/span&gt;WriteLine&lt;span style="color: rgb(48,128,128)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128,0,0)"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(16,96,182)"&gt;lista con string: &lt;/span&gt;&lt;span style="color: rgb(128,0,0)"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;+&lt;/span&gt; lString&lt;span style="color: rgb(48,128,128)"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0,140,0)"&gt;0&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;]&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;)&lt;/span&gt;&lt;span style="color: rgb(64,96,128)"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Console&lt;span style="color: rgb(48,128,128)"&gt;.&lt;/span&gt;ReadKey&lt;span style="color: rgb(48,128,128)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(48,128,128)"&gt;)&lt;/span&gt;&lt;span style="color: rgb(64,96,128)"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(64,96,128)"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(64,96,128)"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(64,96,128)"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Lo que hice fue agregar un nuevo proyecto de consola a la soluci&amp;#243;n para probar la clase MyCustomList. Despu&amp;#233;s hice dos declaraciones de la clase, una instancia para almacenar enteros &amp;quot;lEnteros&amp;quot; y otra para string &amp;quot;lString&amp;quot;, como podemos ver solo le indicamos entre &amp;quot;&amp;lt; &amp;gt; &amp;quot; el tipo de datos que sera soportado y as&amp;#237; podemos utilizar la misma clase para ambos casos....... &lt;br /&gt;  &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4109400431317238903-361719291601577570?l=sebastianbustelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sebastianbustelo.blogspot.com/feeds/361719291601577570/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4109400431317238903&amp;postID=361719291601577570' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4109400431317238903/posts/default/361719291601577570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4109400431317238903/posts/default/361719291601577570'/><link rel='alternate' type='text/html' href='http://sebastianbustelo.blogspot.com/2008/09/vamos-ver-una-de-las-nuevas.html' title='Ejemplo de Generics en C# 2.0'/><author><name>sebastian</name><uri>http://www.blogger.com/profile/10495083164667374059</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
