<?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-1374287091777746898</id><updated>2011-07-08T01:38:58.464+01:00</updated><category term='linux'/><category term='juegos'/><category term='Visual Studio'/><category term='Team Foundation Server'/><category term='Microsoft'/><category term='Friki'/><category term='net'/><category term='java'/><category term='Team Explorer'/><category term='Certia'/><category term='Machine.config'/><category term='Tagged'/><category term='Verano'/><category term='logica'/><category term='Agile'/><category term='software'/><category term='ñapa'/><category term='Seguridad'/><category term='asp.net'/><category term='RFID'/><category term='Humor'/><category term='dotnet'/><category term='rewriting'/><category term='criptografia'/><category term='Visual studio team system'/><category term='redes'/><category term='Cmmi'/><category term='Cine'/><title type='text'>Santi Balboa</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Santi Balboa</name><uri>http://www.blogger.com/profile/02925321795836886361</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>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-6887425944371863426</id><published>2008-05-08T17:54:00.004+01:00</published><updated>2008-12-10T16:57:09.389+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Friki'/><title type='text'>Me hago mayor?¿?¿</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_yE31JyB0P5g/SCMyJokZKHI/AAAAAAAAADI/Z13htzkdT-M/s1600-h/pdaposit.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5198053536005957746" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_yE31JyB0P5g/SCMyJokZKHI/AAAAAAAAADI/Z13htzkdT-M/s320/pdaposit.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color:#66cccc;"&gt;Pues sí, después de mucho tiempo detrás de una &lt;strong&gt;PDA&lt;/strong&gt;, terminé comprándome una flamante &lt;strong&gt;HTC&lt;/strong&gt;, con su flamante conexión móvil, su perfecto &lt;strong&gt;GPS&lt;/strong&gt;, su completísima agenda...bien, pues entre todas esas funciones,  ha terminado realizando una para la que no estaba preparada, como soporte para mis post-it de toda la vida. &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color:#66cccc;"&gt;Qué le voy a hacer, no soy nadie sin papel.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1374287091777746898-6887425944371863426?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/6887425944371863426/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=6887425944371863426&amp;isPopup=true' title='10 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/6887425944371863426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/6887425944371863426'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2008/05/me-hago-mayor.html' title='Me hago mayor?¿?¿'/><author><name>Santi Balboa</name><uri>http://www.blogger.com/profile/02925321795836886361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_yE31JyB0P5g/SCMyJokZKHI/AAAAAAAAADI/Z13htzkdT-M/s72-c/pdaposit.jpg' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-1218826721353597138</id><published>2007-11-26T00:04:00.000+01:00</published><updated>2008-12-10T16:57:09.583+01:00</updated><title type='text'>Reto FBI</title><content type='html'>&lt;a href="http://www.fbi.gov/headlines/code091207a.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5136921482395856114" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_yE31JyB0P5g/R0oC3yVHLPI/AAAAAAAAAC4/Y3CiXKyTgMM/s320/reto+fbi.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Dando una vuelta por la web de &lt;a href="http://www.kriptopolis.org/"&gt;kriptopolis&lt;/a&gt; he encontrado un reto de la web del &lt;a href="http://www.fbi.gov/headlines/code091207a.jpg"&gt;FBI&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;Es muy muy sencillo de sacar. ¿Os animáis a intentarlo? &lt;/div&gt;&lt;div&gt;El texto cifrado es el de la imagen anterior:&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#66cccc;"&gt;PIKODENHFENJIKM!&lt;br /&gt;YIH QELB GDISBK&lt;br /&gt;NQB PICB.&lt;br /&gt;OI NI AGJ.OIL/PICB.QNT&lt;br /&gt;MI WB SKIW,EKC&lt;br /&gt;UFBEMB PIKMJCBD&lt;br /&gt;E PEDBBD WJNQ&lt;br /&gt;NQB AGJ&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1374287091777746898-1218826721353597138?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/1218826721353597138/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=1218826721353597138&amp;isPopup=true' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/1218826721353597138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/1218826721353597138'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/11/reto-fbi.html' title='Reto FBI'/><author><name>Santi Balboa</name><uri>http://www.blogger.com/profile/02925321795836886361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_yE31JyB0P5g/R0oC3yVHLPI/AAAAAAAAAC4/Y3CiXKyTgMM/s72-c/reto+fbi.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-3488318107162056725</id><published>2007-11-25T20:08:00.001+01:00</published><updated>2008-12-10T16:57:09.942+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='criptografia'/><category scheme='http://www.blogger.com/atom/ns#' term='Seguridad'/><title type='text'>Enigma</title><content type='html'>&lt;a href="http://www.enigmaco.de/enigma/enigma.swf"&gt;&lt;img id="BLOGGER_PHOTO_ID_5136859123765685474" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_yE31JyB0P5g/R0nKKCVHLOI/AAAAAAAAACw/hPRbapavWtg/s320/m%C3%A1quina+enigma.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Me gustaría compartir por aquí una página genial que simula una &lt;strong&gt;&lt;span style="color:#66cccc;"&gt;máquina de cifrado Enigma&lt;/span&gt;&lt;/strong&gt; de tres rotores.&lt;br /&gt;Enhorabuena a Frank Spieß , su creador.&lt;br /&gt;La podéis disfrutar en: &lt;a href="http://www.enigmaco.de/enigma/enigma.swf"&gt;http://www.enigmaco.de/enigma/enigma.swf&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1374287091777746898-3488318107162056725?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/3488318107162056725/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=3488318107162056725&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/3488318107162056725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/3488318107162056725'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/11/enigma.html' title='Enigma'/><author><name>Santi Balboa</name><uri>http://www.blogger.com/profile/02925321795836886361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_yE31JyB0P5g/R0nKKCVHLOI/AAAAAAAAACw/hPRbapavWtg/s72-c/m%C3%A1quina+enigma.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-7143871307871258</id><published>2007-08-29T18:44:00.000+01:00</published><updated>2008-12-10T16:57:10.040+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='ñapa'/><category scheme='http://www.blogger.com/atom/ns#' term='Humor'/><title type='text'>¡La ñapa!</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_yE31JyB0P5g/RtWxvgZaFfI/AAAAAAAAACo/UWVOkRFz9oA/s1600-h/fotos+035.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5104181182402794994" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_yE31JyB0P5g/RtWxvgZaFfI/AAAAAAAAACo/UWVOkRFz9oA/s320/fotos+035.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Un día tras varias semanas de aguantar unas obras de rehabilitación en el piso de al lado, mis padres hacen limpieza de fondos en el piso y mueven el mueble del comedor que da al piso donde se desarrollan estas obras, y &lt;span style="color:#ccffff;"&gt;OH, sorpresa!!&lt;/span&gt; Se encuentran &lt;span style="color:#ccffff;"&gt;&lt;strong&gt;la madre de todas las ñapas&lt;/strong&gt;&lt;/span&gt;. A los paletas se les fue la mano, y para solucionar el boquete que habían hecho, metieron como pudieron la idem desde el otro piso para realizar esta obra maestra, digna de la más puntera ingeniería del siglo XXI´, como puede apreciarse en la foto.&lt;br /&gt;Esto me ha hecho preguntarme, uno que es un poco friki y no puede evitar llevar todo a su terreno, cuántas “&lt;span style="color:#ccffff;"&gt;&lt;strong&gt;ñapas&lt;/strong&gt;&lt;/span&gt;” ocultas de este tipo he visto en software a lo largo de mi vida. Detrás de espectaculares interfaces de usuarios, o como modo de salir del paso ante un &lt;span style="color:#ccffff;"&gt;&lt;strong&gt;bug&lt;/strong&gt;&lt;/span&gt;, un apuro, un desfase de tiempo, o por un cambio de requisitos a varios días de una entrega... Seguro que todos conocéis unas cuantas, que escondidas entre miles de líneas de código, esperan latentes que a alguien se le ocurra hacer limpieza y dé un vistazo detrás del armario.&lt;br /&gt;En el caso que nos ocupa, tanto mis padres como el promotor fueron razonables y llegaron a un acuerdo, pero es que sobraban palabras, era todo evidente. En el caso del &lt;span style="color:#ccffff;"&gt;&lt;strong&gt;Software&lt;/strong&gt;&lt;/span&gt;, la cosa cambia un poco, no siempre se ven las cosas tan claras y hay cien maneras de , por lo menos, hacer dudar a un cliente en si sus quejas son fundamentadas.. Si tú le dices que el problema de su aplicación está en la “&lt;strong&gt;&lt;span style="color:#ccffff;"&gt;junta de la trócola&lt;/span&gt;&lt;/strong&gt;”, probablemente, bien porque no tiene más remedio a esas alturas, o bien porque confía en tu &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;profesionalidad&lt;/span&gt;&lt;/strong&gt;, o simplemente por no quedarse como un idiota, no dirá nada, y pagará para que se la cambies. Por lo tanto es un campo abonado para los abusos de todo tipo, de empresas y comerciales sin escrúpulos que prometen el oro y el moro en plazos inverosímiles casi “&lt;strong&gt;&lt;span style="color:#ccffff;"&gt;para ayer&lt;/span&gt;&lt;/strong&gt;”.y que obliga a muchos programadores a esconder la ñapa detrás de los armarios para llegar a tiempo. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1374287091777746898-7143871307871258?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/7143871307871258/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=7143871307871258&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/7143871307871258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/7143871307871258'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/08/la-apa.html' title='¡La ñapa!'/><author><name>Santi Balboa</name><uri>http://www.blogger.com/profile/02925321795836886361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_yE31JyB0P5g/RtWxvgZaFfI/AAAAAAAAACo/UWVOkRFz9oA/s72-c/fotos+035.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-8224276705487554201</id><published>2007-08-03T13:14:00.000+01:00</published><updated>2008-12-10T16:57:10.227+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cine'/><title type='text'>¿Dónde está Michael Cimino?</title><content type='html'>Sí, sé que suena a ¿dónde está Wally?, pero es que hoy me encontraba organizando mi colección de películas (por cierto, pasándolas al programa Griffith, que aún con sus carencias, recomiendo), cuando he llegado a &lt;strong&gt;&lt;span style="color:#66cccc;"&gt;&lt;a href="http://imdb.com/title/tt0077416/"&gt;El cazador&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;. Obra maestra del cine en estado puro . &lt;a href="http://imdb.com/name/nm0000134/"&gt;Robert de Niro&lt;/a&gt;, &lt;a href="http://imdb.com/name/nm0000686/"&gt;Cristopher Walken &lt;/a&gt;, &lt;a href="http://imdb.com/name/nm0000658/"&gt;Meryl Streep&lt;/a&gt; ¿Alguien da más? y me he dado cuenta de que hace años que no oigo que saque una peli nueva.&lt;br /&gt;Pues nada , había que ir a &lt;a href="http://imdb.com/"&gt;&lt;strong&gt;imdb&lt;/strong&gt; &lt;/a&gt;a ver que ha sido de él; tras asegurarme que no había fallecido, he revisado la &lt;a href="http://imdb.com/name/nm0001047/"&gt;lista de películas &lt;/a&gt;que tenía, y sólo veo una que pudiese hacer que le borrasen del mapa y no le dejasen volver a ponerse detrás de una cámara, &lt;a href="http://imdb.com/title/tt0093966/"&gt;El siciliano&lt;/a&gt;, con el pseudoactor Christopher Lambert, el tarzán lelo (sí, no hay enlace a él, me niego), pero a parte de este aceptable borrón, tiene la obra maestra comentada, dos o tres muy buenas pelis (&lt;a href="http://imdb.com/title/tt0090350/"&gt;Manhattan sur&lt;/a&gt;, &lt;a href="http://imdb.com/title/tt0072288/"&gt;un botín de 500.000 dólares&lt;/a&gt; ), y las demás , muy pasables en el peor de los casos y siendo muy exigente. &lt;a href="http://1.bp.blogspot.com/_yE31JyB0P5g/RrMi7uiJL-I/AAAAAAAAACg/DkDmNLvoGmI/s1600-h/deerhunting.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5094454012985028578" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_yE31JyB0P5g/RrMi7uiJL-I/AAAAAAAAACg/DkDmNLvoGmI/s200/deerhunting.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Por lo tanto, vuelvo a mi pregunta inicial ¿dónde anda este hombre? ¿alguna vez nos volverá a regalar momentos increibles como el de Walken jugando a la ruleta rusa en El Cazador?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Quién sabe. Lo único que sé seguro es que algo dentro de mi siempre esperará una nueva maravilla de este gran director.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1374287091777746898-8224276705487554201?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/8224276705487554201/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=8224276705487554201&amp;isPopup=true' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/8224276705487554201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/8224276705487554201'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/08/dnde-est-michael-cimino.html' title='¿Dónde está Michael Cimino?'/><author><name>Santi Balboa</name><uri>http://www.blogger.com/profile/02925321795836886361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_yE31JyB0P5g/RrMi7uiJL-I/AAAAAAAAACg/DkDmNLvoGmI/s72-c/deerhunting.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-4336571104074602992</id><published>2007-08-01T12:48:00.000+01:00</published><updated>2007-08-01T13:20:24.634+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='logica'/><category scheme='http://www.blogger.com/atom/ns#' term='juegos'/><category scheme='http://www.blogger.com/atom/ns#' term='Verano'/><title type='text'>Jugando con Recursos Humanos v 2.0</title><content type='html'>En principio quería titular el post algo así como &lt;span style="color:#66cccc;"&gt;&lt;strong&gt;¿Quieres trabajar en Microsoft?,&lt;/strong&gt;&lt;/span&gt; aunque la verdad, lo que me ha llamado la atención son las preguntas más que quién está detrás.&lt;br /&gt;A lo que iba, hace ya tiempo que vi el conocido tema de las preguntas que el departamento de recursos humanos de &lt;strong&gt;&lt;span style="color:#66cccc;"&gt;Microsoft&lt;/span&gt;&lt;/strong&gt; hace a los candidatos, las cuales se pueden ver en el famoso libro ¿Cómo moverías el monte Fuji? de &lt;span style="color:#ffcc33;"&gt;&lt;strong&gt;Willian Poundstone&lt;/strong&gt;&lt;/span&gt;( &lt;a href="http://www.amazon.com/Would-Move-Mount-Microsofts-Puzzle/dp/0316919160"&gt;http://www.amazon.com/Would-Move-Mount-Microsofts-Puzzle/dp/0316919160&lt;/a&gt;), y como me encanta todo el tema de juegos de lógica, adivinanzas, etc. suelo ir buscando preguntas del mismo para ver si las saco algo de jugo (a veces pienso que tengo demasiado tiempo!); aunque la intención de las preguntas no es que todas tengan una respuesta concreta, si no más bien, valorar la capacidad creativa de los candidatos, cuando veo alguna que me gusta, la intento resolver, y he encontrado una que me ha divertido mucho dar con la solución, la mía, que no sé si será correcta, pero a mi me cuadra.&lt;br /&gt;La pregunta concreta, versión spanish, es:&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ffcc33;"&gt;Juan y Pepe tienen entre los dos 21€, Juan tiene 20€ más que Pepe. ¿Cuántos tienen cada uno?.&lt;/span&gt;&lt;/strong&gt; Por supuesto, no valen fracciones de €. Los resultados en números enteros.&lt;br /&gt;En fin, verano y vacaciones, producen estos post :).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1374287091777746898-4336571104074602992?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/4336571104074602992/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=4336571104074602992&amp;isPopup=true' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/4336571104074602992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/4336571104074602992'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/08/jugando-con-recursos-humanos-v-20.html' title='Jugando con Recursos Humanos v 2.0'/><author><name>Santi Balboa</name><uri>http://www.blogger.com/profile/02925321795836886361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-8741812947416866647</id><published>2007-06-09T11:01:00.000+01:00</published><updated>2008-12-10T16:57:10.377+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rewriting'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='net'/><category scheme='http://www.blogger.com/atom/ns#' term='dotnet'/><title type='text'>Rewriting en .NET. El código</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_yE31JyB0P5g/Rmp6siIMhaI/AAAAAAAAACQ/G-d_O0aExoA/s1600-h/logo_mscoder.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5074002835680298402" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_yE31JyB0P5g/Rmp6siIMhaI/AAAAAAAAACQ/G-d_O0aExoA/s400/logo_mscoder.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;&lt;span style="color:#66cccc;"&gt;Por fin dispongo de espacio y os puedo colgar el código sobre todo el tema tratado en post anteriores.&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Desde &lt;a href="http://www.santibalboa.es/publica/SlnReWrite.zip"&gt;&lt;span style="color:#ffcc33;"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Aquí&lt;/span&gt;&lt;/strong&gt; &lt;/span&gt;&lt;/a&gt;os podéis bajar un zip con toda la solución totalmente operativa. Sólo comentaros un poco por encima un par de características.&lt;/p&gt;&lt;p&gt;Está escrito en VB.&lt;/p&gt;&lt;p&gt;Ataca a una base de datos Access. Esto es así para que podáis probarlo en cuanto lo bajéis. En cualquier caso, en app_data están los sripts de creación de la base de datos, tablas y datos iniales por si queréis pasarlo a Sql Server.&lt;/p&gt;&lt;p&gt;Espero que os guste.&lt;/p&gt;&lt;p&gt;Un saludo&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/1374287091777746898-8741812947416866647?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/8741812947416866647/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=8741812947416866647&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/8741812947416866647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/8741812947416866647'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/06/rewriting-en-net-el-cdigo.html' title='Rewriting en .NET. El código'/><author><name>Santi Balboa</name><uri>http://www.blogger.com/profile/02925321795836886361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_yE31JyB0P5g/Rmp6siIMhaI/AAAAAAAAACQ/G-d_O0aExoA/s72-c/logo_mscoder.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-2628310399744832239</id><published>2007-05-30T22:15:00.000+01:00</published><updated>2008-12-10T16:57:10.606+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rewriting'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='net'/><category scheme='http://www.blogger.com/atom/ns#' term='dotnet'/><title type='text'>Rewriting en .NET (IV)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.mscoder.org/es/mscoder.html"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 191px; height: 37px;" src="http://2.bp.blogspot.com/_ot57OBZ8IeE/Rl3qrdzxg1I/AAAAAAAAAOE/bCs30HEYKHk/s320/logo_mscoder.jpg" alt="" id="BLOGGER_PHOTO_ID_5070466787946103634" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold; color: rgb(102, 204, 204);"&gt;Cuarta y última entrega del artículo. Terminaremos con la arquitectura de un proyecto de ejemplo y los problemas más frecuentes con los que os podéis encontrar durante el desarrollo.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 204, 204);font-size:130%;" &gt;&lt;b&gt;La  arquitectura del proyecto de ejemplo&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 204);"&gt;Prerrequisitos&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Necesitaremos únicamente el Framework 2.0 y  cualquier versión de Visual Studio. En caso de optar por atacar un Sql Server, cualquier versión del mismo será válida.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style="color: rgb(102, 204, 204);"&gt;&lt;br /&gt;&lt;br /&gt;Base   de datos&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Para su uso inmediato en cualquier entorno, la aplicación ataca una base de datos Access.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Para cambiar y hacer que la aplicación ataque una base de datos SQL, incorpora scripts de creación tanto de la base de datos como de los stored procedures y tablas necesarios más el  código comentado en la capa de datos para el acceso a los mismos.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 204);"&gt;Código&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Capa de datos. Un DataManager más las entidades de negocio usadas&lt;/span&gt;&lt;span style="font-size:100%;"&gt;.&lt;br /&gt;Capa de negocio. Manager para la generación de menús. Módulos y clase ReWriter. Controles web necesarios.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Utilidades. Clase vertical de utilidad para distintas tareas rutinarias de la aplicación. ( eliminación de acentos, etc.)&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;UI. Interfaz de usuario con las páginas del proyecto, una página default.aspx de entrada y una única página, productos.aspx, de captura de todas las peticiones.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Css y Skins mínimos para la interfaz de usuario&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 204);"&gt;Web.config&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;ConnectionStrings de la aplicación, tanto para SQL Server, como para Access.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Creación de secciones de configuración.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Declaración de módulos.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Reglas  de reescritura tanto para recursos que constituyan páginas aspx, como para cualquier otro tipo de recurso, css, js, imágenes…)&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;AppSettings con las claves de la aplicación. Sólo se usa una para determinar la Url del dominio.IMPORTANTE: Tendréis que cambiarla con la url donde vayáis a correr la aplicación.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;Por ejemplo:&lt;br /&gt;Por defecto la clave y su valor son:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);font-size:100%;" &gt;&lt;span lang="en-GB"&gt;&lt;span style="font-style: italic; font-weight: bold; color: rgb(255, 204, 102);"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 204, 102); font-style: italic; font-weight: bold;font-size:100%;" &gt;&lt;span lang="en-GB"&gt;appSettings&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 204, 102); font-style: italic; font-weight: bold;font-size:100%;" &gt;&lt;span lang="en-GB"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 204, 102); font-style: italic; font-weight: bold;font-size:100%;" &gt;&lt;span lang="en-GB"&gt;add&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 204, 102); font-style: italic; font-weight: bold;font-size:100%;" &gt;&lt;span lang="en-GB"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 204, 102); font-style: italic; font-weight: bold;font-size:100%;" &gt;&lt;span lang="en-GB"&gt;key&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 204, 102); font-style: italic; font-weight: bold;font-size:100%;" &gt;&lt;span lang="en-GB"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold; color: rgb(255, 204, 102);font-size:100%;" &gt;&lt;span lang="en-GB"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 204, 102); font-style: italic; font-weight: bold;font-size:100%;" &gt;&lt;span lang="en-GB"&gt;UrlServidorWeb&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold; color: rgb(255, 204, 102);font-size:100%;" &gt;&lt;span lang="en-GB"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 204, 102); font-style: italic; font-weight: bold;font-size:100%;" &gt;&lt;span lang="en-GB"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 204, 102); font-style: italic; font-weight: bold;font-size:100%;" &gt;&lt;span lang="en-GB"&gt;value&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 204, 102); font-style: italic; font-weight: bold;font-size:100%;" &gt;&lt;span lang="en-GB"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold; color: rgb(255, 204, 102);font-size:100%;" &gt;&lt;span lang="en-GB"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 204, 102); font-style: italic; font-weight: bold;font-size:100%;" &gt;&lt;span lang="en-GB"&gt;http://localhost:2314/WebRewriter&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold; color: rgb(255, 204, 102);font-size:100%;" &gt;&lt;span lang="en-GB"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 204, 102); font-style: italic; font-weight: bold;font-size:100%;" &gt;&lt;span lang="en-GB"&gt; /&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 204, 102); font-style: italic; font-weight: bold;font-size:100%;" &gt;&lt;span lang="en-GB"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 204, 102); font-style: italic; font-weight: bold;font-size:100%;" &gt;&lt;span lang="en-GB"&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 204, 102); font-style: italic; font-weight: bold;font-size:100%;" &gt;&lt;span lang=""&gt;appSettings&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold; color: rgb(255, 204, 102);font-size:100%;" &gt;&lt;span lang="en-GB"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;p face="arial" style="margin-left: 1.91cm; margin-bottom: 0cm; font-weight: bold; font-style: italic; color: rgb(255, 204, 102);"&gt; &lt;/p&gt;&lt;span style="font-style: italic; font-weight: bold; color: rgb(255, 204, 102);font-size:100%;" &gt;&lt;span lang="en-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Si ejecutáis dentro del entorno del Visual Studio, deberéis cambiar el valor de la clave a &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);font-size:100%;" &gt;&lt;u&gt;&lt;span lang="es-ES"&gt;http://localhost:xxxx/WebRewriter&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);font-size:100%;" &gt;&lt;span lang="es-ES"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span lang="es-ES"&gt;donde xxxx será el puerto que os abra el servidor web incorporado al entorno de desarrollo del VS.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;En caso de que instaléis la aplicación en un IIS local, el valor de la clave sería: &lt;/span&gt;&lt;p face="arial" style="margin-left: 1.91cm; margin-bottom: 0cm;" lang="es-ES"&gt; &lt;/p&gt;&lt;span style="color: rgb(0, 0, 255);font-size:100%;" &gt;&lt;u&gt;&lt;a href="http://localhost/WebRewriter"&gt;&lt;span lang="es-ES"&gt;http://localhost/WebRewriter&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);font-size:100%;" &gt;&lt;span lang="es-ES"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span lang="es-ES"&gt;WebRewriter como nombre del directorio virtual. Si lo habeis creado con otro nombre, sería ese otro nombre&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;.&lt;br /&gt;En caso de que instaléis la aplicación en un IIS en algún dominio o tengaís dns apuntando al mismo, el valor de la clave sería:  &lt;/span&gt;&lt;p face="arial" style="margin-left: 1.91cm; margin-bottom: 0cm;" lang="es-ES"&gt; &lt;/p&gt;&lt;span style="color: rgb(0, 0, 255);font-size:100%;" &gt;&lt;u&gt;&lt;a href="http://www.midomino.net/WebRewriter"&gt;&lt;span lang="es-ES"&gt;http://www.midomino.net/WebRewriter&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);font-size:100%;" &gt;&lt;span lang="es-ES"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span lang="es-ES"&gt; donde&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);font-size:100%;" &gt;&lt;span lang="es-ES"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span lang="es-ES"&gt;WebRewriter sería el nombre del directorio virtual. Si lo habéis creado con otro nombre,usaréis ese otro nombre.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b style="color: rgb(255, 204, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 204);"&gt;Detalles  de posicionamiento en buscadores&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;-Hay que controlar del número de páginas “falsas” que generaremos; sites pequeños con miles de páginas, llamarán demasiado la atención y  probablemente serán penalizado  tarde o temprano. Google no es tonto, y si se puede hacer esto, es porque lo permite.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;-Sacar el id que usaremos para pasarlo como parámetro a las páginas finales reales fuera del nombre de fichero final (html o aspx). Es mejor que figure como un directorio más dentro del path a que forme parte del nombre de la página “falsa”.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;-Supresión de espacios, cambiados por _ o por + en cualquier parte del path, incluido el nombre final de la página&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;-Quitad acentos, diéresis  o cualquier otro tipo de puntuación de las palabras. A las “arañas” de los buscadores les molesta mucho.&lt;/span&gt; &lt;p face="arial" style="margin-left: 0.64cm; margin-bottom: 0cm;"&gt;  &lt;/p&gt;&lt;span style="font-size:100%;"&gt;-Es mejor realizar modificaciones continuas, aun pequeñas e ir  aumentando el número de páginas que se encuentran las arañas de Google en cada visita poco a poco, a  crear mucho contenido de golpe, de una sola vez, y que luego no haya ninguna variación en tiempo. Pequeños “trucos” serían algo así como crear un apartado de noticias que fuésemos actualizando a menudo, o algún otro tipo de entrada similar son bastante efectivos.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;-Crear un Sitemap. Google nos proporciona además herramientas para los administradores Web para la gestión del posicionamiento. Más información la podéis encontrar en &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);font-size:100%;" &gt;&lt;u&gt;&lt;a href="http://www.google.es/support/webmasters/"&gt;http://www.google.es/support/webmasters/&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;Es importante, situarlo lo más arriba posible en la página, ahora hablo de la resultante. Utilizad Capas (div) si es preciso. Las arañas de los buscadores leen linealmente, son vagas y se cansan pronto por lo que si vuestros enlaces están al final de páginas inmensas, tenéis probabilidades de que no lleguen hasta el final si no encuentran algo más por el camino.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;-Importante también el uso de controles de navegación, como el  sitemappath. Son más enlaces que cargamos en las páginas.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;-Existen diversos manuales sobre el tema como Hacks de Google: &lt;/span&gt;&lt;p style="margin-left: 0.64cm; margin-bottom: 0cm; font-family: arial;"&gt; &lt;/p&gt;  &lt;ul face="arial"&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;  &lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;  &lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;  &lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;  &lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;  &lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;  &lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;  &lt;/p&gt;&lt;/ul&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 204);font-size:130%;" &gt;Herramientas&lt;/span&gt;&lt;/b&gt;&lt;/span&gt; &lt;ul face="arial"&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;  &lt;/p&gt;&lt;/ul&gt;&lt;span style="color: rgb(102, 204, 204);font-size:100%;" &gt;&lt;b&gt;Expresiones regulares&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Entre otros programas, RegexDesigner. Intuitivo, sencillo y,  pudiendo verificar tanto “matchs” obtenidos como  “Replaces”  a efectuar.&lt;/span&gt;&lt;ul face="arial"&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;  &lt;/p&gt;&lt;/ul&gt;&lt;span style="color: rgb(102, 204, 204);font-size:100%;" &gt;&lt;b&gt;Analizadores Web&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;Decir antes de nada, que no me dedico a reposicionar páginas  en buscadores, pero siempre es bueno tener un control para evitar  sorpresas en fases de desarrollo avanzadas, por lo que tener unos  mínimos recursos a mano cuando nos embarcamos en un proyecto  de este tipo nunca está de más.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;En principio, todos los analizadores que añado corren bajo  entorno Web, no he probado aún ninguna aplicación de  escritorio sobre el tema. Hecho en falta, alguna que realmente haga  una búsqueda recursiva de todas y cada una de las páginas  saltando entre ellas y genere algún report general que nos dé  más pistas.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);font-size:100%;" &gt;&lt;u&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tools.summitmedia.co.uk/spider/"&gt;http://tools.summitmedia.co.uk/spider/&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;   Muy buena&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);font-size:100%;" &gt;&lt;u&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.seoforum.no/"&gt;http://www.seoforum.no/&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;ul face="arial"&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;  &lt;/p&gt;&lt;/ul&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 204);font-size:130%;" &gt;Enlaces de interés&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 204);"&gt;MSDN&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;ul face="arial"&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;  &lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;  &lt;/p&gt;&lt;/ul&gt;&lt;span style="color: rgb(0, 0, 255);font-size:100%;" &gt;&lt;u&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/urlrewriting.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/urlrewriting.asp&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;u&gt;&lt;a href="http://www.microsoft.com/spanish/msdn/articulos/archivo/020604/voices/URLRewriting.asp#urlrewriting_topic4"&gt;http://www.microsoft.com/spanish/msdn/articulos/archivo/020604/voices/URLRewriting.asp#urlrewriting_topic4&lt;/a&gt;&lt;/u&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;&lt;span style="color: rgb(0, 0, 255);font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%; color: rgb(102, 204, 204);"&gt;&lt;span style="font-weight: bold;"&gt;Web.config&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;u&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/ms178685%28VS.80%29.aspx"&gt;http://msdn2.microsoft.com/es-es/library/ms178685(VS.80).aspx&lt;/a&gt;&lt;/u&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style="color: rgb(102, 204, 204);"&gt;Varios&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;u&gt;&lt;a href="http://www.aspnetresources.com/blog/validation_scare.aspx"&gt;http://www.aspnetresources.com/blog/validation_scare.aspx&lt;/a&gt;&lt;/u&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b style="color: rgb(102, 204, 204);"&gt;Filtros para Rewriting&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;a href="http://www.qwerksoft.com/"&gt;http://www.iismods.com&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;u&gt;&lt;a href="http://www.qwerksoft.com/"&gt;http://www.qwerksoft.com&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;&lt;span style="color: rgb(0, 0, 255);font-size:100%;" &gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;&lt;span style="color: rgb(0, 0, 255);font-size:100%;" &gt;&lt;b style="color: rgb(102, 204, 204);"&gt;Expresiones regulares&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;&lt;span style="color: rgb(0, 0, 255);font-size:100%;" &gt;&lt;u&gt;&lt;a href="http://bulma.net/body.phtml?nIdNoticia=770&amp;nIdPage=2"&gt;http://www.sellsbrothers.com&lt;br /&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;&lt;span style="color: rgb(0, 0, 255);font-size:100%;" &gt;&lt;u&gt;&lt;a href="http://bulma.net/body.phtml?nIdNoticia=770&amp;nIdPage=2"&gt;http://bulma.net/body.phtml?nIdNoticia=770&amp;amp;nIdPage=2&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;  &lt;ul face="arial"&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;  &lt;/p&gt;&lt;p style="margin-top: 0.18cm; margin-bottom: 0.18cm; line-height: 120%;"&gt;  &lt;/p&gt;&lt;/ul&gt;PD: Como Santi está muy perro para publicar él la última parte del artículo, me ha pasado el marrón a mi... eso sí... el formato es todo suyo, porque no me ha dejado hacerlo a mi manera :P.&lt;br /&gt;&lt;br /&gt;PPD: El proyecto de ejemplo está pendiente de colgar...&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1374287091777746898-2628310399744832239?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/2628310399744832239/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=2628310399744832239&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/2628310399744832239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/2628310399744832239'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/05/rewriting-en-net-iv.html' title='Rewriting en .NET (IV)'/><author><name>la que no encuentra su sitio</name><uri>http://www.blogger.com/profile/03493632625124494225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ot57OBZ8IeE/SSMOeq9HbrI/AAAAAAAAAqQ/xjDo9m9Zvis/S220/avatar1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ot57OBZ8IeE/Rl3qrdzxg1I/AAAAAAAAAOE/bCs30HEYKHk/s72-c/logo_mscoder.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-7686472535182300393</id><published>2007-05-14T23:02:00.000+01:00</published><updated>2008-12-10T16:57:10.861+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rewriting'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='net'/><category scheme='http://www.blogger.com/atom/ns#' term='dotnet'/><title type='text'>Rewriting en .NET (III)</title><content type='html'>&lt;a href="http://www.mscoder.org/es/mscoder.html"&gt;&lt;span style="COLOR: rgb(204,255,255)"&gt;&lt;strong&gt;&lt;img id="BLOGGER_PHOTO_ID_5045249378614813090" style="FLOAT: left; MARGIN: 0px 10px 10px 0px" alt="" src="http://3.bp.blogspot.com/_yE31JyB0P5g/RgRTlDeYoaI/AAAAAAAAABU/dnaqY2agjf8/s200/logo_mscoder.jpg" border="0" /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="COLOR: rgb(204,255,255)"&gt;&lt;strong&gt; Tercera entrega del tema, dedicada esta vez a las expresiones regulares y a los problemas más frecuentes con los que os podéis encontrar durante el desarrollo.&lt;/strong&gt;&lt;/span&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="COLOR: rgb(102,204,204)"&gt;El extraño mundo de las &lt;/span&gt;&lt;span style="COLOR: rgb(102,204,204)"&gt;expresiones regulares&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Las clases &lt;span style="FONT-WEIGHT: bold; COLOR: rgb(102,204,204)"&gt;regex&lt;/span&gt;&lt;span style="COLOR: rgb(102,204,204)"&gt; &lt;/span&gt;y &lt;span style="FONT-WEIGHT: bold; COLOR: rgb(102,204,204)"&gt;Match&lt;/span&gt; son el corazón del rewriting. Ambas se encuentran en el NameSpace “System.Text.RegularExpressions”.&lt;br /&gt;&lt;br /&gt;A grandes rasgos, la idea general de las expresiones regulares es lograr encontrar patrones en cadenas, es decir, dentro de una cadena, la que sea, poder encontrar la coincidencia en la misma de otra subcadena, sin que tengamos que escribir literalmente esa subcadena, sino dar un formato genérico, que cualquier subcadena que lo cumpla, sea reconocida.&lt;br /&gt;&lt;br /&gt;Podéis encontrar un buen manual sobre expresiones regulares donde la primera parte es general y la segunda más orientada a otros entornos, no solo a &lt;span style="FONT-WEIGHT: bold; COLOR: rgb(102,204,204)"&gt;.NET&lt;/span&gt;, en :&lt;br /&gt;&lt;a href="http://bulma.net/body.phtml?nIdNoticia=770&amp;nIdPage=2"&gt;http://bulma.net/body.phtml?nIdNoticia=770&amp;amp;nIdPage=2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El punto más importante es tener en cuenta que en caso de encontrar el patrón de la expresión, en caso de substitución, ésta se realizará de TODA la cadena que coincida con el mismo.&lt;br /&gt;Vamos a ver las expresiones básicas sobre una regla de reescritura de nuestro ejemplo.&lt;br /&gt;Regla:&lt;br /&gt;Url de entrada:&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;(ESesFRfrcatCAT)\S+(ProductoLocal/)([0-9]+)/+\w+\.\w+$&lt;/span&gt;&lt;br /&gt;Url de salida, que reescribiremos&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;Productos.aspx?IdProducto=$3&lt;/span&gt;&lt;br /&gt;Si descomponemos la expresión en partes tendremos lo siguiente:&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;(ESesFRfrcatCAT)&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(102,204,204)"&gt;Agrupación&lt;/span&gt; () paréntesis:&lt;br /&gt;(ESesFRfrcatCAT) Utilizado para formar grupo, que se comportan como tal, tanto a efectos de comprobación, como para ser sustituidos por un parámetro. A efectos de parámetros, siempre manda el orden en que se formen los grupos; en este caso, si usásemos en la reescritura el parámetro $1, correspondería a este grupo.&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(102,204,204)"&gt;barra vertical&lt;/span&gt;:&lt;br /&gt;Componente OR; una opción u otra.&lt;br /&gt;En nuestro ejemplo, equivaldría a una expresión lógica como à ES OR es OR FR …&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(102,204,204)"&gt;Cadenas&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;\S+&lt;/span&gt; Cualquier cadena una o más veces.&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(102,204,204)"&gt;Literales&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,204,51)"&gt;(&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;ProductoLocal/&lt;/span&gt;&lt;span style="COLOR: rgb(255,204,51)"&gt;) &lt;/span&gt;Dentro de nuestra expresión, podemos escribir literales exactos. En nuestro ejemplo, forzamos a que dentro del patrón de búsqueda, exista exactamente “ProductoLocal/”&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(102,204,204)"&gt;Rangos &lt;/span&gt;[] Corchetes&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;([0-9]+)/&lt;/span&gt; Para establecer, rangos de números o letras. En este caso, cualquier número entre 0 y 9 repetido una o más veces.&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;+\w+\.\w+ &lt;/span&gt;cualquier carácter alfanumérico, seguido de un “.”, seguido de cualquier carácter alfanumérico.&lt;br /&gt;Coincidencia desde el final de la cadena&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;$&lt;/span&gt; Forzamos a que la coincidencia se busque desde el final de la cadena a la hora de compararlo con el patrón.&lt;br /&gt;&lt;br /&gt;Por último la reescritura que se hará en caso de coincidencia (“match”) en la expresión, será:&lt;br /&gt;Productos.aspx?IdProducto=$3, donde $3 corresponde al parámetro 3, como podéis comprobar el orden corresponde al grupo ([0-9]+), que será el Id del producto en nuestro caso.&lt;br /&gt;Por lo tanto, una petición de página como ésta:&lt;br /&gt;&lt;a href="http://www.midominio.com/ES/ProductoLocal/1/script.html"&gt;http://www.midominio.com/ES/ProductoLocal/1/script.html&lt;/a&gt;&lt;br /&gt;Crearía la reescritura siguiente: http://www.midominio.com/Productos.aspx?IdProducto=1&lt;br /&gt;Donde la cadena coincidente es: “ES/ProductoLocal/1/script.html”&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Como resumen de caracteres especiales en la generación de expresiones regulares, tenéis:&lt;br /&gt;[ ] à CorchetesàPara rangos&lt;br /&gt;() àParéntesisàPara formar grupos&lt;br /&gt;+ à Aparición de la subcadena 1 o más veces&lt;br /&gt;* à Asteriscoà Aparición de la subcadena 0 o más veces&lt;br /&gt;\ àHace que no se considere un comando lo que le sigue.&lt;br /&gt;^ à Indica que la coincidencia debe ser desde el inicio de la cadena (línea)&lt;br /&gt;$ à Indica que la coincidencia debe darse desde el final de la cadena (línea)&lt;br /&gt;à Barra verticalàOperador OR&lt;br /&gt;\w à Indica palabra (alfanuméricos y _)&lt;br /&gt;\W à Opuesto al anterior&lt;br /&gt;\s à Coincidencia con los caracteres los espacios y otros caracteres en blanco&lt;br /&gt;\S à Opuesto al anterior&lt;/p&gt;&lt;p&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(102,204,204)"&gt;2. Problemas durante el desarrollo&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;El famoso problema del PostBack&lt;/span&gt;&lt;br /&gt;Básicamente el problema consiste que cuando hacemos un postback en la página a la que hemos aplicado el &lt;span style="FONT-WEIGHT: bold; COLOR: rgb(102,204,204)"&gt;Rewriting&lt;/span&gt;, al hacer el render del objeto Htmlform, en la misma etiqueta form aparece el atributo action, con la página real, física, a la que llamamos, no con la página virtual que simulamos abrir.&lt;br /&gt;Por ejemplo si nuestra página con rewrite es &lt;a href="http://dominio/producto_x.html"&gt;http://dominio/producto_x.html&lt;/a&gt; y nuestra página real a la que redirigimos es &lt;a href="http://dominio/productos.aspx?IdProducto=x"&gt;http://dominio/productos.aspx?IdProducto=x&lt;/a&gt; al hacer el render en el servidor de la página, el tag form sería algo como &lt;em&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;strong&gt;&lt;/strong&gt;form method=”post” action= productos.aspx&lt;em&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;. Esto conlleva problemas con la captura de eventos de los controles, también que en la barra de navegación del navegador, aparezca la url real a la que hemos accedido.&lt;br /&gt;El problema es que no se puede acceder a este atributo en tiempo de ejecución ya que es de solo lectura lo que hace que haya que buscar otro tipo de solución.&lt;br /&gt;Hay diversos planteamientos para solucionarlo, entre ellos el uso de script sobrescribiendo el atributo en cuestión. En mis proyectos yo he optado, después de sudar mucho y cruzar los dedos, con buenos resultados hasta el momento, por crear una clase que herede de HtmlForm y en ella modificamos el atributo Action. La clase en cuestión con el método que nos interesa para modificarlo quedaría así:&lt;br /&gt;&lt;br /&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;!--{0}:Frm--&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;toolboxdata("&amp;lt;{0}:frm runat="server"&amp;gt;")&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;strong style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;/strong&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt; _&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;Public Class FormRewrite&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;Inherits System.Web.UI.HtmlControls.HtmlForm&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;Implements System.Web.UI.Design.IControlDesignerTag&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;'Protected Overrides Sub Render(ByVal output As System.Web.UI.HtmlTextWriter)&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;' If Not Me.DesignMode Then&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;' MyBase.Render(output)&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;' End If&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;'End Sub&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;Protected Overrides Sub RenderAttributes(ByVal writer As System.Web.UI.HtmlTextWriter)&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;Attributes.Add("enctype", Enctype)&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;Attributes.Add("id", ClientID)&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;Attributes.Add("method", Method)&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;Attributes.Add("name", Name)&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;Attributes.Add("target", Target)&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;Attributes.Render(writer)&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;MyBase.Attributes.Remove("action")&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;End Sub&lt;/span&gt;&lt;br /&gt;A partir de este momento, en los formularios que usaremos, sustituiremos el tag form de los mismos por nuestra clase&lt;br /&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;formrewrite:formrewrite id="form1" method="post" runat="server"&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/em&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;form id="form1" method="post" runat="server"&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;/em&gt;El registro del mismo lo podemos hacer en la misma página en la que lo usaremos o bien en el fichero Web.config con efectos para todas las páginas&lt;br /&gt;En el primer caso&lt;br /&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;%@ Register TagPrefix ="FormRewrite" Assembly ="App_Code" Namespace="BBWebforms"%&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;En el segundo:&lt;br /&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;!--&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;registerTagPrefixes&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;add tagPrefix="FormRewrite"&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;namespace="BBWebForms"&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;assembly="App_Code" /&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;/registerTagPrefixes&gt;--&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;Con esto tendremos solventado el problema del postBack en el rewrite, pero aún queda un escollo más por salvar; actualemente en la versión del VS 2005 parece existir un bug que no permite tags forms personalizados.&lt;br /&gt;El error que nos ocupa es el siguiente cuando intentéis entrar en el diseñador con un tag Form propio heredado de HtmlForm:&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(102,204,204)"&gt;Unable to cast object of type 'System.Web.UI.Design.HtmlIntrinsicControlDesigner' to type 'System.Web.UI.Design.ControlDesigner'&lt;/span&gt;&lt;br /&gt;Y habréis perdido la visión de todos los controles de la página bajo este feo error.&lt;br /&gt;Habitualmente trabajo con un diseñador, este bug, me obliga a cambiar el tag al original &lt;em&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;form&lt;em&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt; cuando quiero dejar que yo mismo o el diseñador accedamos al html para retocar algo. Demos las gracias por las masterpages que hacen que esto sólo lo tenga que hacer para unas pocas páginas, si no, lo hubiera desechado. En cualquier caso, considero lo comentado un buen y eficiente sistema para solventar el problema del postback y un bug del diseñador de VS no debería hacer que lo rechazarmos sin darle antes unas cuantas vueltas a los pros y contras.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(102,204,204)"&gt;Peticiones de ficheros desde las páginas (css, js, gif, jpg, etc.)&lt;/span&gt;&lt;br /&gt;Algo a tener en cuanta es que nuestra tarea de reescritura no se acaba con las peticiones a páginas. Hay que tener en cuenta cada petición que nos llega al servidor de los distintos tipos de ficheros habituales en cada una de nuestras páginas; desde las hojas de estilo, hasta los ficheros flash, pasando por scripts, hojas de estilo, etc. Todos y cada uno de ellos deben pasar por todas las fases que hemos comentado. Desde añadir las extensiones al servidor p ara su paso al motor de ASP para su proceso, hasta escribir las expresiones regulares para la captura y reescritura de las mismas.&lt;br /&gt;Normalmente me basta añadir una expresión regular a mi Web.config para esos ficheros específicos por cada grupo de páginas de las que tengo ya preparada una regla. Por ejemplo:&lt;br /&gt;Dos reglas para distintos de pagina, en el caso, dinamicas1 y dinamicas2&lt;br /&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;regla&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;url&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;(ESesFRfrcatCAT)\S+(dinamica1/)([0-9]+)/+\w+\.\w+$&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;/url&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;rewrite&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;productos.aspx?IdProducto=$3&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;/rewrite&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;/regla&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;regla&gt;&lt;/span&gt;&lt;br /&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;url&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;(ESesFRfrcatCAT)\S+(dinamica2/)([0-9]+)/+\w+\.\w+$&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;/url&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;rewrite&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;categorias.aspx?IdCategoria=$3&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;/rewrite&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;/regla&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51)"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;Mi regla para todas las peticiones de ficheros para esas mismas paginas&lt;br /&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;regla&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;url&gt;(ESesFRfrcatCAT)\S+(dinamica[0-9]+/)+([0-9]+)/(\S+\.(jsJSswfSWFjpgJPGgifGIFcssCSSSKINskin))&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;/url&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;rewrite&gt;$4&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;/rewrite&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;lt;&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;/regla&lt;/span&gt;&lt;em style="FONT-WEIGHT: bold; COLOR: rgb(255,204,51); FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(255,204,102)"&gt;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;regla&gt;&lt;rewrite&gt;&lt;/rewrite&gt;&lt;br /&gt;&lt;/regla&gt;&lt;/p&gt;Em el próximo post, unas consideraciones finales, así como un proyecto completo de ejemplo totalmente operativo.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;regla&gt;&lt;/regla&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1374287091777746898-7686472535182300393?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/7686472535182300393/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=7686472535182300393&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/7686472535182300393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/7686472535182300393'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/04/rewriting-en-net-iii.html' title='Rewriting en .NET (III)'/><author><name>Santi Balboa</name><uri>http://www.blogger.com/profile/02925321795836886361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_yE31JyB0P5g/RgRTlDeYoaI/AAAAAAAAABU/dnaqY2agjf8/s72-c/logo_mscoder.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-7569547946785278665</id><published>2007-04-16T23:11:00.000+01:00</published><updated>2007-04-17T23:25:59.717+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tagged'/><title type='text'>Taggeado!</title><content type='html'>Bueno, mi company de feina &lt;a href="http://jmtorres.blogspot.com"&gt;"el Torres"&lt;/a&gt; me ha pasado el marrón, digo el tagg, a mi edad y con estas cosas, en fin, habrá que cumplir. Cinco cosas sobre mí que normalmente no cuento a nadie.&lt;br /&gt;&lt;br /&gt;1-Tocaba el saxo en la intimidad, bueno, mi vecino no compartiría el término "intimidad", pero bueno, me relajaba y sin ninguna pretensión me lo pasaba como un enano esos ratillos. Hablo en pasado porque los mamones de correos me lo "perdieron" cuando me lo mandaron desde Madrid hará ya un par de años.&lt;br /&gt;2-Con 17 años estuve en la selección juvenil de futbol, todo parecía indicar que iba a ganar pasta por salir en calzones cada domingo a un campo. Pero las cosas no son como uno quiere, y como tantos otros me quedé a mitad de camino, compuesto y sin pasta y me toca currar de por vida. Bueno, seguramente ahora no estaría escribiendo esto si las cosas hubieran sido de otra manera.&lt;br /&gt;3-Escribía poesía. Dejé de hacerlo el día que una conocida me dijo que le gustaban mucho mis poemas porque "le recordaban a las canciones de Perales". Sin comentarios.&lt;br /&gt;4- Tengo la playa a 30 segundos de casa y para llegar al tren cada mañana paso por ella. Suele ser el mejor momento del día. Aunque soy de los madriles, ya no puedo vivir sin el mar.&lt;br /&gt;5-Voy a dejar de fumar, voy a ponerme a dieta, voy a volver al gimnasio, voy a estudiar otra vez...a veces soy un poco peliculero.&lt;br /&gt;&lt;br /&gt;Bueno, me toca marcar a alguien, así que va para: &lt;a href="http://laquenoencuentrasusitio.blogspot.com/"&gt;La que no encuentra su sitio&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1374287091777746898-7569547946785278665?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/7569547946785278665/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=7569547946785278665&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/7569547946785278665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/7569547946785278665'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/04/taggeado.html' title='Taggeado!'/><author><name>Santi Balboa</name><uri>http://www.blogger.com/profile/02925321795836886361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-5448354472681080398</id><published>2007-04-11T22:12:00.000+01:00</published><updated>2007-04-11T22:41:19.882+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dotnet'/><title type='text'>CATdotNET.org</title><content type='html'>Para profesionales, para estudiantes, para curiosos o simplemente gente interesada en .NET...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.catdotnet.org/"&gt;CATdotNET.org&lt;/a&gt; es un grupo, de las tierras catalanas, sobre .NET ... para colaborar, reunirse, compartir ideas.&lt;br /&gt;&lt;br /&gt;Está en plena fase de creación, pero organizándose con rapidez y ya en abril está previsto convocar una primera reunión (aunque el lugar y horario está por confirmar). Para esa primera convocatoria se barajan temas interesantes, que en cuanto estén cerrados os contará Santi desde aquí.&lt;br /&gt;&lt;br /&gt;Tenéis más información sobre el tema en el blog de su compañero &lt;a href="http://jmtorres.blogspot.com/"&gt;José Miguel Torres&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1374287091777746898-5448354472681080398?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/5448354472681080398/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=5448354472681080398&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/5448354472681080398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/5448354472681080398'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/04/catdotnetorg.html' title='CATdotNET.org'/><author><name>la que no encuentra su sitio</name><uri>http://www.blogger.com/profile/03493632625124494225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ot57OBZ8IeE/SSMOeq9HbrI/AAAAAAAAAqQ/xjDo9m9Zvis/S220/avatar1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-4948317420983761637</id><published>2007-03-30T23:52:00.000+01:00</published><updated>2008-12-10T16:57:11.339+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Certia'/><category scheme='http://www.blogger.com/atom/ns#' term='Cmmi'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual studio team system'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Seminarios Microsoft de  Mayo en Barcelona</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_yE31JyB0P5g/Rg2Vm1SLjWI/AAAAAAAAACA/wgLCDzpVKfg/s1600-h/teamcenter_home0.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5047855251723095394" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_yE31JyB0P5g/Rg2Vm1SLjWI/AAAAAAAAACA/wgLCDzpVKfg/s400/teamcenter_home0.jpg" border="0" /&gt;&lt;/a&gt; Durante el mes de Mayo, &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Microsoft,&lt;/span&gt;&lt;/strong&gt; con la colaboración de &lt;a href="http://www.certia.net/"&gt;Certia&lt;/a&gt;, organiza en Barcelona dos seminarios bastante interesantes con el Visual Studio Team System como estrella.&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;Los títulos de los mismos, &lt;a href="http://www.microsoft.com/spanish/msdn/vs2005/eventos/default.mspx#uno"&gt;“Acelere el ciclo de Vida de sus Aplicaciones”&lt;/a&gt; y &lt;a href="http://www.microsoft.com/spanish/msdn/vs2005/eventos/default.mspx#dos"&gt;“Metodología y Procesos de Desarrollo”&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;Se celebrarán los días &lt;em&gt;&lt;span style="color:#ffcc66;"&gt;10 y 31 de Mayo y el 7 de Junio&lt;/span&gt;&lt;/em&gt; en las oficinas de Microsoft en las Torres Diagonal Litoral. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;a href="http://www.certia.net/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5047856342644788594" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_yE31JyB0P5g/Rg2WmVSLjXI/AAAAAAAAACI/wMHqGGiz-tc/s200/certia.gif" border="0" /&gt;&lt;/a&gt; &lt;div&gt;Teneis toda la información en la página de &lt;a href="http://www.microsoft.com/spanish/msdn/vs2005/eventos/default.mspx"&gt;Microsoft &lt;/a&gt;y en la web de &lt;a href="http://www.certia.net/"&gt;Certia&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&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/1374287091777746898-4948317420983761637?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/4948317420983761637/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=4948317420983761637&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/4948317420983761637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/4948317420983761637'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/03/eventos-microsoft-mayo.html' title='Seminarios Microsoft de  Mayo en Barcelona'/><author><name>Santi Balboa</name><uri>http://www.blogger.com/profile/02925321795836886361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_yE31JyB0P5g/Rg2Vm1SLjWI/AAAAAAAAACA/wgLCDzpVKfg/s72-c/teamcenter_home0.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-5097705024575867041</id><published>2007-03-29T19:53:00.000+01:00</published><updated>2007-03-31T00:35:43.367+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team Foundation Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='Machine.config'/><category scheme='http://www.blogger.com/atom/ns#' term='Team Explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='dotnet'/><title type='text'>Error TF31002 al conectar al TFS desde Team explorer (II)</title><content type='html'>...Continúa desde &lt;a href="http://sbalboa.blogspot.com/2007/03/error-tf31002-al-conectar-desde-team.html"&gt;aquí &lt;/a&gt;&lt;br /&gt;El siguiente paso para resolver el error hubiera sido comprobar las claves del registro del &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Team Explorer&lt;/span&gt;&lt;/strong&gt; &lt;em&gt;&lt;span style="color:#ffcc66;"&gt;&lt;strong&gt;HKEY_CURRENT_USER\Software\Microsoft\Team Explorer&lt;/strong&gt;&lt;/span&gt;&lt;/em&gt;, concretamente la entrada &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Team Server&lt;/span&gt;&lt;/strong&gt;, para comprobar permisos y que esté en condiciones, llegando incluso a borrarla en caso neceserario para regenerarla creando de nuevo la conexión desde el &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Visual Studio&lt;/span&gt;&lt;/strong&gt;.&lt;br /&gt;En caso de fracaso, revisión de logs en el directorio del &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Team Explorer&lt;/span&gt;&lt;/strong&gt;, para ver si ha dejado algún rastro el error de conexión.&lt;br /&gt;Sin embargo, no ha sido necesario hacer esto. Cuando he llegado al puesto de trabajo habían restaurado el sistema completo, habiéndose solucionado el problema.&lt;br /&gt;El tema es que no lo hemos podido dejarlo zanjado por si hubiese vuelto a pasar, y por ley de Murphy...HA VUELTO A SUCEDER.&lt;br /&gt;Al estar ahora controlados los pasos, ha sido posible poder ver el paso concreto que ha generado el error , que ha sido el siguiente: al preparar el entorno de desarrollo para el uso de ensamblados compartidos, todos los programadores creamos la variable de entorno DevPath y modificamos el fichero Machine.config con la siguiente entrada&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ffcc66;"&gt; &amp;lt;runtime&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ffcc66;"&gt;    &amp;lt;developmentMode developerInstallation="true" /&amp;gt; &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ffcc66;"&gt;&amp;lt;runtime&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt; (más información sobre el tema &lt;a href="http://msdn2.microsoft.com/es-es/library/cskzh7h6(VS.80).aspx"&gt;Aquí&lt;/a&gt;)&lt;br /&gt;¿Qúe ha pasado entonces? que el usuario (perdón, Pablo, mi company de faenas :P) había duplicado la entrada runtime. El fichero machine.config no se quejaba porque seguía teniendo un formato &lt;strong&gt;xml&lt;/strong&gt; correcto, pero los efectos,entre otros posibles síntomas que se presentarían por esta causa, le ha tocado salir el primero el del &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Team Explorer&lt;/span&gt;&lt;/strong&gt;.&lt;br /&gt;La parte negativa es que ante un error de este calado, el mensaje de error del Team Explorer sea tan vago y tan genérico. Nos ha llevado un par de horas largas de análisis y pruebas cuando en realidad era un error tan evidente e importante.&lt;br /&gt;Espero que no le pase a nadie más, pero en cualquier caso, ojo a los mensajes de eror del susodicho.&lt;br /&gt;&lt;br /&gt;Saludos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1374287091777746898-5097705024575867041?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/5097705024575867041/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=5097705024575867041&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/5097705024575867041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/5097705024575867041'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/03/error-tf31002-al-conectar-al-tfs-desde.html' title='Error TF31002 al conectar al TFS desde Team explorer (II)'/><author><name>Santi Balboa</name><uri>http://www.blogger.com/profile/02925321795836886361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-3097875699476186878</id><published>2007-03-28T22:22:00.000+01:00</published><updated>2007-03-31T00:23:34.957+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team Foundation Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual studio team system'/><category scheme='http://www.blogger.com/atom/ns#' term='dotnet'/><title type='text'>Error TF31002 al conectar al TFS desde Team explorer (I)</title><content type='html'>&lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Escenario&lt;/span&gt;&lt;/strong&gt;: máquina con &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Visual Studio&lt;/span&gt;&lt;/strong&gt; para desarrolladores recien instalada. Team Explorer instalado atacando un &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Team Foundation Server&lt;/span&gt;&lt;/strong&gt; en pleno funcionamiento. Frameqork 2 + WinFx + extensiones WCF, WPF y WWF. Entorno de trabajo en una LAN, sin proxy en el &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;TFS&lt;/span&gt;&lt;/strong&gt;. Usuario autorizado, trabajando en &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Team Project&lt;/span&gt;&lt;/strong&gt;.&lt;br /&gt;Resto del equipo de desarrollo trabajando sin problemas.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Acción ¿desencadenante?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Obtenemos la última versión de una solución dentro del control de código fuente del Team Project. Los ficheros se bajan sin problema. Se actualiza en local en el espacio de trabajo por defecto de la máquina.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ccffff;"&gt;&lt;strong&gt;Problema&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;De repente la máquina en cuestión pierde la comunicación con el &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;TFS&lt;/span&gt;&lt;/strong&gt;. Tras varios intentos de conexión por el método normal (menú &lt;em&gt;herramientas--&gt;Conectar con servidor TFS&lt;/em&gt;), en todos y cada uno de ellos da error.&lt;br /&gt;Las posibles causas que se indican en el &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;MSDN&lt;/span&gt;&lt;/strong&gt; son:&lt;br /&gt;&lt;em&gt;&lt;span style="color:#ffcc66;"&gt;-El nombre del servidor, el número del puerto o el protocolo (http/https) es incorrecto.&lt;br /&gt;-La contraseña ha caducado o es incorrecta.&lt;br /&gt;-El servidor Team Foundation no está disponible.&lt;br /&gt;-La red no está disponible&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Manos a la obra&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Comprobamos conectividad. Ping y accesos a recursos de la máquina donde está el servidor. &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Correcto&lt;/span&gt;&lt;/strong&gt; por lo tanto &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;descartamos un problema de red&lt;/span&gt;&lt;/strong&gt; en el lado servidor.&lt;br /&gt;&lt;br /&gt;Comprobamos servicios del &lt;strong&gt;TFS&lt;/strong&gt; &lt;em&gt;(&lt;span style="color:#ffcc66;"&gt;http://&lt;server&gt;:8080/services/v1.0/serverstatus.asmx&lt;/span&gt;)&lt;/em&gt;, &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Correctos&lt;/span&gt; &lt;/strong&gt;&lt;br /&gt;Entrada de otro usuario del equipo. &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Correcto&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Entrada del usuario afectado desde una sesión en otra máquina. &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Puede acceder!!!&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Con estas tres pruebas, &lt;span style="color:#ccffff;"&gt;&lt;strong&gt;descartamos que el servidor TFS no esté disponible o que sea incorrecto la dirección o protocolo.&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Comprobamos permisos del usuario(&lt;span style="color:#ccffff;"&gt;&lt;strong&gt;TFS&lt;/strong&gt;, &lt;strong&gt;Sharepoint&lt;/strong&gt; y &lt;strong&gt;Reporting Services&lt;/strong&gt;&lt;/span&gt;). &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Correctos&lt;/span&gt; &lt;/strong&gt;&lt;br /&gt;Comprobación de perfil del usuario en el dominio. &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Correcto&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Descartamos pués que el usuario tenga problemas de contraseña&lt;/span&gt;&lt;/strong&gt; o algún otro tipo de problema con la autenticación.&lt;br /&gt;&lt;br /&gt;El problema aumenta. Si ninguna de las causas posibles de este error lo ha causado y en la máquina no se ha instalado nada en ningún momento que haya podido afectar a la instalación de algún componente, ¿qué ha pasado entonces?. Eso nos gustaría saber también a nosotros!&lt;br /&gt;&lt;br /&gt;Busquémonos la vida pues.&lt;br /&gt;El error que salta al intentar conectar, salta demasiado rápido, es como si ni siquiera llegara a "hablar" con el servidor, por lo que habrá que echar un vistazo a ver que se mueve por la red.&lt;br /&gt;Recurrimos al &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Ethereal&lt;/span&gt;&lt;/strong&gt; para comprobar el tráfico generado, y primera sorpresa!, no hay tráfico en absoluto cuando desde el &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;IDE&lt;/span&gt;&lt;/strong&gt; de &lt;span style="color:#ccffff;"&gt;&lt;strong&gt;VS&lt;/strong&gt;&lt;/span&gt; se intenta conectar al servidor. Volvemos a comprobar la conectividad con el servidor haciendo un nuevo ping, y el tráfico es normal con el &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;TFS&lt;/span&gt;&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Ya tenemos la pista, algo está &lt;span style="color:#ccffff;"&gt;&lt;strong&gt;bloqueando el tráfico&lt;/strong&gt;&lt;/span&gt; desde la máquina al servidor.&lt;br /&gt;El &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Firewall&lt;/span&gt;&lt;/strong&gt; de &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;XP&lt;/span&gt;&lt;/strong&gt; está desactivado.&lt;br /&gt;Comprobamos las opciones de conexión del &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;IExplorer&lt;/span&gt;&lt;/strong&gt; y están erróneas. Parece que las directivas de sistemas de inicio de sesión para configurar el proxy de la LAN de salida no se cargan bien.&lt;br /&gt;El primer paso es corregir esto. Una vez hablado con sistemas y corregido el problema, volvemos a intentar acceder. &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Imposible&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;¿Habrá que reinstalar el VS?¿sólo el Team Explorer?&lt;br /&gt;&lt;br /&gt;Continúa &lt;a href="http://sbalboa.blogspot.com/2007/03/error-tf31002-al-conectar-al-tfs-desde.html"&gt;aquí&lt;/a&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1374287091777746898-3097875699476186878?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/3097875699476186878/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=3097875699476186878&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/3097875699476186878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/3097875699476186878'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/03/error-tf31002-al-conectar-desde-team.html' title='Error TF31002 al conectar al TFS desde Team explorer (I)'/><author><name>Santi Balboa</name><uri>http://www.blogger.com/profile/02925321795836886361</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-1374287091777746898.post-3435518662146474337</id><published>2007-03-23T23:17:00.000+01:00</published><updated>2008-12-10T16:57:11.662+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rewriting'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='net'/><category scheme='http://www.blogger.com/atom/ns#' term='dotnet'/><title type='text'>Rewriting en .NET II</title><content type='html'>&lt;a href="http://www.mscoder.org/es/mscoder.html"&gt;&lt;span style="color:#ccffff;"&gt;&lt;strong&gt;&lt;img id="BLOGGER_PHOTO_ID_5045249378614813090" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_yE31JyB0P5g/RgRTlDeYoaI/AAAAAAAAABU/dnaqY2agjf8/s200/logo_mscoder.jpg" border="0" /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#ccffff;"&gt;&lt;strong&gt; Siguiendo con el tema, en esta segunda parte comenzaremos ya con el proceso completo, la configuración del IIS, y la captura de peticiones.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ccffff;"&gt;1. Proceso de generación del Rewriting &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ccffff;"&gt;· Configuración del IIS &lt;/span&gt;&lt;br /&gt;Paso básico para que funcione nuestro &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;ReWriter&lt;/span&gt;&lt;/strong&gt;. Partimos en la forma que trata el &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;IIS&lt;/span&gt;&lt;/strong&gt; las peticiones de recursos que le llegan.&lt;br /&gt;Las páginas simples. Html, txt, pdf, etc. las sirve directamente sin pasar la petición al motor de &lt;span style="color:#ccffff;"&gt;.NET&lt;/span&gt;. Lo mismo ocurre para imágenes, gif, jpeg, etc. El servidor las buscará directamente y en caso de encontrarlas se las servirá directamente al cliente. Ya que vamos a controlas las peticiones directamente con el motor de .NET, es básico que cualquier recurso pedido pase por nuestras manos por si pudiese ser motivo de algún tipo de tratamiento antes de su envío al solicitante.&lt;br /&gt;Para ello vamos a entrar de nuevo a las propiedades de la aplicación Web en la que estamos trabajando mediante el administrador del &lt;span style="color:#ccffff;"&gt;IIS&lt;/span&gt; y vamos a forzar que cualquier tipo de fichero pase al motor &lt;span style="color:#ccffff;"&gt;.NET&lt;/span&gt;.&lt;br /&gt;Difiere un poco de la versión 5 a la 6 del &lt;span style="color:#ccffff;"&gt;IIS&lt;/span&gt;.&lt;br /&gt;En la &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Versión 5&lt;/span&gt;&lt;/strong&gt; entramos en las propiedades de nuestra aplicación Web , y en la pestaña de Directorio virtual, a Configuración&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5045251822451204530" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_yE31JyB0P5g/RgRVzTeYobI/AAAAAAAAABc/_gu8dwilIhs/s200/rewrite1.jpg" border="0" /&gt; &lt;p&gt;Aquí podremos ver las extensiones que por defecto se envían a su procesamiento con .Net (a través de la dll &lt;span style="color:#ccffff;"&gt;aspnet_isapi.dll)&lt;/span&gt; y podremos añadir las extensiones que necesitemos para nuestro objetivo. En la versión 5 añadiremos directamente la extensión objetivo, el path a la dll, y los comandos o acciones que provocarán este envío (en principio, &lt;span style="color:#ffcc66;"&gt;&lt;em&gt;get, post, put y head&lt;/em&gt;&lt;/span&gt;).&lt;br /&gt;Podemos emplear el carácter comodín &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;* &lt;/span&gt;&lt;/strong&gt;para hacer referencia todos los tipos de ficheros solicitados y no tener que mapear cada una de las extensiones.&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5045252492466102722" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_yE31JyB0P5g/RgRWaTeYocI/AAAAAAAAABk/PZ_ZWaQMvH4/s200/rewrite2.JPG" border="0" /&gt;En la &lt;span style="color:#ccffff;"&gt;&lt;strong&gt;versión 6 del IIS&lt;/strong&gt;&lt;/span&gt;, la operativa es la misma; cambia un poco la interfaz y la configuración de las las asignaciones de recursos a la dll correspondiente para el caso de determinar todos los ficheros, que ya no se hace en la ventana anterior, sino que tiene un interfaz propio y separado del resto de extensiones directas. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ccffff;"&gt;· Modificando el Web.config &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Si recordáis el punto anterior del uso de filtros para generar el Rewrite, había un fichero Ini donde almacenábamos las expresiones regulares que haríamos servir para nuestro fin.&lt;br /&gt;En el caso que nos ocupa, estas &lt;span style="color:#ccffff;"&gt;&lt;strong&gt;expresiones regulares&lt;/strong&gt;&lt;/span&gt; las almacenaremos en un repositorio, un fichero de texto, y por la organización que necesita el mismo, regla-reescritura, el formato más adecuado, es un xml.&lt;br /&gt;Llegados a este punto, podemos optar por dos opciones, usar nuestro &lt;span style="color:#ccffff;"&gt;&lt;strong&gt;web.config&lt;/strong&gt;&lt;/span&gt;, o crear un fichero xml específico para esta función. En mi opinión es más eficiente, hacer uso del &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;web.config&lt;/span&gt;&lt;/strong&gt;, pues tendremos nuestras reglas en una sección, dentro de la organización jerárquica que nos proporciona, posibilidad de asociarle un manejador, seguridad integrada que el servidor atribuye ya de por sí a este tipo de ficheros ante intentos de intrusión y obtención del mismo., cosa que tendríamos que implementar nosotros en el caso de usar un fichero independiente. Además nos proporciona una manera eficaz de organizar distintas aplicaciones con temas en común debido a la organización jerárquica de los ficheros de configuración en .NET (machine.configàWeb.config de la raíz del servidoràWeb.config de cada SiteàWeb.config de cada aplicación del Site.) Podréis obtener más información de cómo se organizan los ficheros de configuración &lt;a href="http://msdn2.microsoft.com/es-es/library/ms178685(VS.80).aspx"&gt;aquí&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Como sabemos, todos los valores de configuración de &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;ASP.NET&lt;/span&gt;&lt;/strong&gt; se encuentran anidadas de forma jerárquica en el fichero &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;Web.config&lt;/span&gt;&lt;/strong&gt;, dentro de la etiqueta raíz &lt;strong&gt;&lt;em&gt;&lt;span style="color:#ffcc66;"&gt;&lt;configuration&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;. De esta manera, para cada sección nueva que añadamos se requiere un controlador apropiado. Estos se definirán en la etiqueta &lt;strong&gt;&lt;span style="color:#ffcc66;"&gt;&lt;httpmodules&gt;&lt;/span&gt;&lt;/strong&gt;.&lt;br /&gt;El primer paso será preparar la creación de la sección donde guardaremos nuestras expresiones regulares. Esta declaración debe estar dentro de las sección &lt;em&gt;&lt;span style="color:#ffcc66;"&gt;&amp;lt;system.web&amp;gt;&lt;br /&gt;&amp;lt;configsections&amp;gt;&lt;br /&gt;&amp;lt;sectiongroup name="system.web"&amp;gt;&lt;br /&gt;&amp;lt;section name="urlrewrites" type= "ReWriter, App_Code"&amp;gt;&lt;br /&gt;&amp;lt;/sectiongroup&amp;gt;&lt;br /&gt;&amp;lt;/configsections&amp;gt;&lt;strong&gt;&lt;system.web&gt;&lt;/strong&gt; &lt;/span&gt;&lt;/em&gt;&lt;/configsections&gt;&lt;br /&gt;Podemos ver que esta declaración se subdivide en dos partes.&lt;br /&gt;El grupo al que se añade la misma, sectionGroup, porque la configuración de ASP.NET nos permite agrupar secciones para una mejor organización de las mismas.&lt;br /&gt;La sección que crearemos, con el nombre de la misma, y el controlador que se encargará de su procesamiento. La podemos incorporar al grupo que queramos, pero siempre declararla; además la asociaremos un manejador para la misma donde implementaremos la lógica de la reescritura.&lt;br /&gt;Esto sucede porque &lt;strong&gt;&lt;span style="color:#ccffff;"&gt;ASP.NET&lt;/span&gt;&lt;/strong&gt; deja el procesamiento de las secciones del fichero web.config en manos de algún controlador de sección. Cada uno de estos manejadores que declaremos, simplemente consistirá en una clase que implementa el interfaz IConfigurationsectionHandler. Más información sobre este tema la podréis encontrar &lt;a href="http://msdn2.microsoft.com/en-us/library/system.configuration.iconfigurationsectionhandler.aspx"&gt;aquí&lt;/a&gt;.&lt;br /&gt;Un apunte más, los nombres de etiqueta son “&lt;span style="color:#ccffff;"&gt;Case sensitive&lt;/span&gt;”, por lo que habrá que prestar atención al uso de las mayúsculas y minúsculas al declararlas.&lt;br /&gt;Ya sólo nos queda crear la sección y empezar a incorporar las &lt;span style="color:#ccffff;"&gt;reglas de reescritura&lt;/span&gt; en función de cómo las necesitemos. Siguiendo el ejemplo, quedaría de la siguiente manera:&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#ffcc66;"&gt;&amp;lt;rewriterurl&amp;gt;&lt;br /&gt;&amp;lt;regla&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;expresion regular a buscar&amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;rewrite&amp;gt;pagina a la que redigiremos&amp;lt;/rewrite&amp;gt;&lt;br /&gt;&amp;lt;/regla&amp;gt;&lt;br /&gt;&amp;lt;regla&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;…&amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;rewrite&amp;gt;…&amp;lt;/rewrite&amp;gt;&lt;br /&gt;&amp;lt;/regla&amp;gt;&lt;br /&gt;&amp;lt;/rewriterurl&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ccffff;"&gt;· Capturando las peticiones&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Para capturar las peticiones de páginas, disponemos de varias opciones. Explicaré la que más se integra en la arquitectura propuesta por &lt;span style="color:#ccffff;"&gt;ASP.NET 2.0&lt;/span&gt;, integrando un módulo en el directorio &lt;span style="color:#ccffff;"&gt;App_Code&lt;/span&gt;, aunque veremos un repaso rápido por las demás opciones.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ccffff;"&gt;· Global.asax&lt;/span&gt;&lt;/strong&gt;. La opción más simple y más rápida de implementar. Sólo necesitaremos una referencia en el global.asax al módulo que hemos creado (ver la sección sobre el &lt;span style="color:#ccffff;"&gt;&lt;strong&gt;web.config&lt;/strong&gt;&lt;/span&gt;) y hacer la llamada a los métodos necesarios dentro de el evento BeginRequest, pasándo como parámetro el “request.path que nos llega en la petición del cliente.&lt;br /&gt;Las ventajas son su simplicidad y rapidez de implemetanción, sin que tengamos que sacar la lógica a un módulo propio externo.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ccffff;"&gt;· Una dll externa.&lt;/span&gt;&lt;/strong&gt; Podemos implementar toda la lógica del rewrite en una dll externa al proyecto, incorporándolo al directorio bin de nuestro proyecto, haciendo referencia a la misma. El ensamblado que generemos debe ir firmado y por tanto tener un nombre seguro (strongname) e ir incorporado en el GAC. (más info sobre ensamblados firmados &lt;a href="http://msdn2.microsoft.com/en-us/library/xc31ft41(VS.80).aspx"&gt;aquí&lt;/a&gt; )·&lt;br /&gt;Las ventajas, todas las referentes a modularizar una aplicación, reutilización de código, claridad del mismo, etc.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ccffff;"&gt;· Módulo compilado en el App_Code&lt;/span&gt;&lt;/strong&gt;. La implementación es la misma que en el caso de una dll externa, solo que en este caso el código lo generaremos y compilaremos dentro de la carpeta de sistema &lt;span style="color:#ccffff;"&gt;App_Code&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#ccffff;"&gt;Ventajas&lt;/span&gt;, aprovechamos la arquitectura que nos proporciona NET con la compilación en tiempo de ejecución, la claridad del código.&lt;br /&gt;&lt;span style="color:#ccffff;"&gt;Desventajas&lt;/span&gt;, para quien no este familiarizado con ello, la pelea que supone pelearnos con la generación y declaración del módulo.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ccffff;"&gt;· Proceso general en cualquiera de los tres casos anteriores&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Una vez hecho esto, comienza la captura de peticiones.&lt;br /&gt;Capturamos el evento &lt;span style="color:#ccffff;"&gt;BeginRequest&lt;/span&gt; ante la llegada de una petición de recursos a nuestra aplicación.&lt;br /&gt;Pasamos el path del recurso solicitado, MEDIANTE LA PROPIEDAD &lt;span style="color:#ccffff;"&gt;Request.path&lt;/span&gt; actual, a nuestro proceso de reescritura, que se encargará de buscar coincidencias en las reglas que hemos generado en nuestro &lt;span style="color:#ccffff;"&gt;Web.config&lt;/span&gt;. Para ello, en nuestro caso, buscará el path en el nodo “url”.&lt;br /&gt;Este proceso en caso de coincidencia nos devolverá el path de reescritura que se encuentra, en nuestro ejemplo, en la misma regla, en el nodo “rewrite”. En caso de no encontrar ninguna coincidencia, mantendrá el path original que nos ha llegado.&lt;br /&gt;Al finalizar, llama al método &lt;span style="color:#ccffff;"&gt;&lt;strong&gt;RewritePath&lt;/strong&gt;&lt;/span&gt;, con un parámetro que será el path, cambiado o no, que será finalmente el recurso que enviaremos al cliente.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#ccffff;"&gt;En el próximo artículo daremos un repaso a las expresiones regulares que usaremos para hacer la reescritura así como todos los problemas que me encontré durante el desarrollo y alguna forma de solucionarlos.&lt;/span&gt;&lt;/strong&gt;&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/1374287091777746898-3435518662146474337?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/3435518662146474337/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=3435518662146474337&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/3435518662146474337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/3435518662146474337'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/03/rewriting-en.html' title='Rewriting en .NET II'/><author><name>Santi Balboa</name><uri>http://www.blogger.com/profile/02925321795836886361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_yE31JyB0P5g/RgRTlDeYoaI/AAAAAAAAABU/dnaqY2agjf8/s72-c/logo_mscoder.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-6541018565019665962</id><published>2007-03-19T16:54:00.000+01:00</published><updated>2008-12-10T16:57:11.825+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Error de debug en Eclipse (Ubuntu)</title><content type='html'>Instalado el &lt;span style="font-weight: bold;"&gt;JDK&lt;/span&gt; 1.5, el &lt;span style="font-weight: bold;"&gt;Eclipse&lt;/span&gt; y después de probar el típico &lt;span style="font-style: italic;"&gt;Hola Mundo&lt;/span&gt; y ponerme con la PAC de POO... oooooooh, error al intentar debugar.&lt;br /&gt;El JDK está instalado correctamente (se puede compilar desde línea de comandos y desde Eclipse)... el error sólo al &lt;span style="font-style: italic;"&gt;debugar&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ot57OBZ8IeE/Rf6yrlaI6eI/AAAAAAAAAIA/5wapw7AHsHI/s1600-h/errorvmeclipse.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_ot57OBZ8IeE/Rf6yrlaI6eI/AAAAAAAAAIA/5wapw7AHsHI/s200/errorvmeclipse.jpg" alt="" id="BLOGGER_PHOTO_ID_5043665094547401186" border="0" /&gt;&lt;/a&gt;Me ha costado un poco resolverlo (llamadme ignorante, piltrafilla o lo que corresponda), pero era algo tan sencillo como añadir el localhost al archivo de hosts (/etc/hosts), que debe quedar tal que así:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;# IP-Address  Full-Qualified-Hostname  Short-Hostname&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;127.0.0.1       localhost&lt;/span&gt;&lt;/blockquote&gt;Ahora sin problemas... debugando en Windows y Linux :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1374287091777746898-6541018565019665962?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/6541018565019665962/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=6541018565019665962&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/6541018565019665962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/6541018565019665962'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/03/error-de-debug-en-eclipse-ubuntu.html' title='Error de debug en Eclipse (Ubuntu)'/><author><name>la que no encuentra su sitio</name><uri>http://www.blogger.com/profile/03493632625124494225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ot57OBZ8IeE/SSMOeq9HbrI/AAAAAAAAAqQ/xjDo9m9Zvis/S220/avatar1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ot57OBZ8IeE/Rf6yrlaI6eI/AAAAAAAAAIA/5wapw7AHsHI/s72-c/errorvmeclipse.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-1089783633553002033</id><published>2007-03-16T00:24:00.000+01:00</published><updated>2007-03-16T00:55:01.539+01:00</updated><title type='text'>No pulses ese botón!!</title><content type='html'>Leyendo el post &lt;a id="bp___ctl00___RecentPosts___postlist___EntryItems_ctl01_PostTitle" href="http://geeks.ms/blogs/jorge/default.aspx"&gt;El desarrollo de Software no es fácil, incluso cuando tenemos todo controlado&lt;/a&gt; del buen blog de &lt;a href="http://geeks.ms/blogs/jorge/default.aspx"&gt;Jorge Serrano&lt;/a&gt;, (al que llegué a través del de mi colega de curro &lt;a href="http://jmtorres.blogspot.com/"&gt;José Miguel Torres&lt;/a&gt;) me ha venido a la cabeza una anécdota real sobre las manías-perezas-acojones o vete a saber como llamarlo de los programadores y sus responsables en esta cosa del desarrollo. Estando en una empresa de cuyo nombre no quiero acordarme, en una aplicación que hace poco había pasado a producción, de repente aparecieron problemas en una función a la que se accedía a través de un click en un botón del formulario principal. Este click provocaba el cierre anticipado del programa con la perdida de todo lo que no tuvieses guardado. No es que fuera una funcionalidad imprescindible, de hecho sólo iba dirigida a uno o dos usuarios, pero era muy visible y el peligro de petar la aplicación se encontraba a un click de cualquiera.&lt;br /&gt;A alguien en un momento de inspiración absoluta, quizá esperando que el tema estuviera resuelto en un corto plazo, no se le ocurrió otra cosa que poner como caption del botón "no pulsar, peta". Ni que decir tiene, que al momento de pasarlo a los usuarios, el primer día las caidas de la aplicación fueron todas.&lt;br /&gt;Lo peor, es que cuando me fuí de aquel lugar, pasado ya un tiempo, el botón seguía ahí, con su invitación latente "no pulsar, peta".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1374287091777746898-1089783633553002033?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/1089783633553002033/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=1089783633553002033&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/1089783633553002033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/1089783633553002033'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/03/no-pulses-ese-botn.html' title='No pulses ese botón!!'/><author><name>Santi Balboa</name><uri>http://www.blogger.com/profile/02925321795836886361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-5962241505234713866</id><published>2007-03-15T22:22:00.000+01:00</published><updated>2008-12-10T16:57:12.881+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rewriting'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='net'/><category scheme='http://www.blogger.com/atom/ns#' term='dotnet'/><title type='text'>Rewriting en .NET I</title><content type='html'>&lt;a href="http://www.mscoder.org/es/mscoder.html"&gt;&lt;span style="color:#99ffff;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5042266248335402370" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_yE31JyB0P5g/Rfm6cBL5JYI/AAAAAAAAABE/9ovw-1SUs4I/s200/logo_mscoder.jpg" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;em&gt;&lt;span style="color:#99ffff;"&gt;Os voy a dejar a lo largo de varios posts el artículo sobre rewrite que publiqué en la revista MsCoder del mes de Febrero. Espero que os sea útil&lt;/span&gt;&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;¿Necesitas dar sentido al texto de tus urls mostrado en la barra de direcciones de los navegadores en las peticiones que se realizan a tus páginas? ¿Quizá buscas un mejor posicionamiento en Google, Yahoo y demás buscadores mediante la indexación de un gran número de enlaces apuntando a unas pocas páginas parametrizadas? ¿Simplemente buscas ocultar el nombre Y path de las mismas atendiendo a criterios de seguridad?&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Entonces has llegado a &lt;span style="color:#99ffff;"&gt;Rewrite&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. &lt;strong&gt;&lt;span style="color:#99ffff;"&gt;Introducción &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;· &lt;strong&gt;&lt;span style="color:#99ffff;"&gt;¿Qué es Rewriting?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;El &lt;span style="color:#99ffff;"&gt;Rewriting&lt;/span&gt; a grandes rasgos es una técnica que consiste en reescribir urls que apuntan a páginas que no existen en tu servidor, capturando esta petición en algún punto de todo el proceso, redirigiendola a páginas físicas reales, las cuales son servidas al cliente, que en ningún momento advierte este proceso, siendo transparente para el mismo.&lt;br /&gt;Los motivos para usarlo en nuestros desarrollos son diversos.&lt;br /&gt;Hay un componente descriptivo, en cierto modo estético, que nos permitirá poder construir urls “amigables”, que en el mismo path conlleven una descripción de la página a la que apuntan, o incluso, una parte de su título o algún otro dato significativo de las mismas.&lt;br /&gt;&lt;span style="color:#99ffff;"&gt;Enlace que verá el cliente&lt;/span&gt;:&lt;br /&gt;&lt;em&gt;&lt;span style="color:#ffffcc;"&gt;http://www.midominio.com/ES/noticias/5/El_ciclon_Gordon_llega_a_Galicia.html&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;span style="color:#99ffff;"&gt;La página real a la que realmente accede el cliente&lt;/span&gt;:&lt;br /&gt;&lt;em&gt;&lt;span style="color:#ffffcc;"&gt;http://www.midominio.com/noticias?IdNoticia=5&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;Otro componente importante es la seguridad. Sin ser una de las medidas más importantes en este aspecto, sin embargo nos ofrece la posibilidad de ocultar el path y nombre verdadero de nuestras páginas en el servidor, con lo que ocultamos en alguna medida, los primeros pasos de un intento de ataque mediante la obtención de cualquier tipo de información sobre nuestro servidor y páginas.&lt;br /&gt;El tercero y de un tiempo a esta parte quizá el más importante, es la posibilidad que nos brinda el &lt;strong&gt;&lt;span style="color:#99ffff;"&gt;rewriting&lt;/span&gt;&lt;/strong&gt; de subir el &lt;strong&gt;&lt;span style="color:#99ffff;"&gt;posicionamiento de nuestra Web en los buscadores&lt;/span&gt;&lt;/strong&gt;. Más adelante profundizaré en este tema, quizá el punto central del mismo, pero como avance, podemos decir, que mediante estas técnicas, podemos hacer que los buscadores indexen una cantidad de páginas muy superior a las que físicamente tenemos. De hecho, las limitaciones al respecto son mínimas, pudiendo hacer crecer el número de páginas &lt;strong&gt;&lt;span style="color:#99ffff;"&gt;“simuladas”&lt;/span&gt;&lt;/strong&gt; cuanto queramos, lo que también nos lleva a que, sin un control del mismo, podemos producir un efecto contrario al deseado ya que es un tema sabido que este tipo de simulaciones es uno de los motivos de penalización en los buscadores.&lt;br /&gt;&lt;br /&gt;· &lt;strong&gt;&lt;span style="color:#99ffff;"&gt;De ASP a ASP.NET&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Hasta el momento, querer reescribir las urls de tus páginas suponía utilizar&lt;strong&gt; &lt;span style="color:#99ffff;"&gt;Apache con PHP y mod_Rewrite&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:#99ffff;"&gt; &lt;/span&gt;o bien, en un&lt;strong&gt; &lt;span style="color:#99ffff;"&gt;servidor IIS con ASP&lt;/span&gt;&lt;/strong&gt;, alguna herramienta de terceros en forma de filtro Isapi, como Isapi_rewrite. Si bien con .NET aún se puede recurrir a las herramientas mencionadas, ahora sí nos permite utilizar el motor de .NET para llegar al mismo resultado y, en mi opinión, un mayor control de lo que realmente está pasando en las entrañas de nuestro servidor.&lt;br /&gt;Normalmente el proceso en el caso de usar un filtro externo sería el siguiente. Instalamos la dll que implementa el filtro (dos filtros disponibles son &lt;strong&gt;&lt;span style="color:#99ffff;"&gt;&lt;a href="http://www.qwerksoft.com/"&gt;iisRewrite&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt; y &lt;a href="http://www.iismods.com"&gt;mod_Rewrite&lt;/a&gt;)&lt;br /&gt;En cualquiera de los casos anteriores, el funcionamiento y configuración de los filtros una vez instalados, será muy similar con ligeras variaciones.&lt;br /&gt;El siguiente paso será configurar el IIS para que haga uso de esta dll. Esto se hará a través de las propiedades del Site donde queremos usar el rewrite (se realizará individualmente para cada Web site), añadiendo el filtro en la siguiente ventana de configuración a la que accederemos desde el menú contextual del site en sus propiedades:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#99ffff;"&gt;&lt;a href="http://www.iismods.com/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5042268726531532178" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_yE31JyB0P5g/Rfm8sRL5JZI/AAAAAAAAABM/DOF-TVst5FU/s200/rewrite1.jpg" border="0" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;/strong&gt;Una vez añadida (pulsamos agregar y buscamos el path donde hemos instalado anteriormente la dll), accederemos a fichero de configuración, donde estableceremos las reglas de reescritura.&lt;br /&gt;Como comenté antes, este paso es similar en todos los filtros, en cualquier caso, podéis encontrar ejemplos de los dos comentados en las siguientes direcciones: &lt;a href="http://www.qwerksoft.com/products/iisrewrite/documentation.asp"&gt;Mod_Rewirte &lt;/a&gt;y &lt;a href="http://www.iismods.com/url-rewrite/documentation.htm"&gt;Mod_Rewirte&lt;/a&gt;.&lt;br /&gt;Ambas librerías se configuran a través de un &lt;span style="color:#99ffff;"&gt;fichero .ini&lt;/span&gt; cuyo path es el mismo donde hayamos instalado la dll.&lt;br /&gt;&lt;br /&gt;Las entradas de este fichero que más nos interesan serían:&lt;br /&gt;&lt;span style="color:#99ffff;"&gt;Condiciones&lt;/span&gt;. A través de la cuales vamos a predeterminar cuando se aplicará el filtro o la redirección que tenemos a continuación.&lt;br /&gt;El formato de la misma es: &lt;em&gt;&lt;span style="color:#ffffcc;"&gt;RewriteCond “Variable de servidor” “Expresión regular”.&lt;/span&gt;&lt;/em&gt; Pueden concatenarse varias condiciones mediante los operadores &lt;span style="color:#ffffcc;"&gt;AND y OR&lt;/span&gt;.&lt;br /&gt;La idea es simple, aplicaremos la regla que viene a continuación, si y sólo si se da esta condición *.&lt;br /&gt;&lt;span style="color:#99ffff;"&gt;Reglas de redirección&lt;/span&gt;. Que determinarán la reescritura correcta de la página según la coincidencia con la expresión regular buscada. El formato sería: &lt;span style="color:#ffffcc;"&gt;RewriteRule “Expresión regular entrada” espacio “Expresión regular salida”&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#99ffff;"&gt;Apliquemos un ejemplo&lt;/span&gt;&lt;br /&gt;Queremos hacer una redirección hacia nuestra página de productos con el identificador del producto correspondiente, y como condición, sólo a modo de ejemplo, que la petición corresponda a una determinada IP, en este caso, el bucle local.&lt;br /&gt;&lt;em&gt;&lt;span style="color:#ffffcc;"&gt;RewriteCond REMOTE_HOST 127.0.0.1&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#ffffcc;"&gt;RewriteRule (ESesFRfrcatCAT)\S+(ProductoLocal/)([0-9]+)/+\w+\.\w+$ Productos.aspx?IdProducto=$3&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;Más adelante haremos una introducción a las &lt;span style="color:#99ffff;"&gt;expresiones regulares**&lt;/span&gt;, para el siguiente caso bastará saber que, en primer lugar, determinamos la condición de que la petición provenga del bucle local de la máquina donde esta el servidor (no tiene mucho sentido, ¿o sí?, pero en cualquier caso es sólo un ejemplo). En segundo lugar, estamos estableciendo la regla que hará, si seguís la expresión, que todas las peticiones que contengan ES o es o cualquiera de las primeras opciones, del primer paréntesis, más cualquier texto, más el literal “ProductoLocal/” + cualquier número + cualquier texto + “.” + más cualquier texto, se redirija a la página Productos.aspx, con el parámetro improducto que le daremos el valor $3 que se corresponde si os fijáis con la tercera agrupación del a expresión ([0-9]+).&lt;br /&gt;*Podéis obtener, entre otras cosas, la lista completa de variables del servidor activando el &lt;span style="color:#99ffff;"&gt;seguimiento (trace)&lt;/span&gt; de vuestra aplicación, y posteriormente accediendo a la página virtual trace.axd o activando el seguimiento para las páginas individuales.&lt;br /&gt;**Podéis bajaros algún &lt;span style="color:#99ffff;"&gt;editor&lt;/span&gt; para ir haciendo pruebas con las expresiones regulares. Mi preferido, es &lt;span style="color:#99ffff;"&gt;&lt;a href="http://www.sellsbrothers.com/tools/#regexd"&gt;RegexDesigner&lt;/a&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#99ffff;"&gt;&lt;strong&gt;Continúa...&lt;/strong&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1374287091777746898-5962241505234713866?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/5962241505234713866/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=5962241505234713866&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/5962241505234713866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/5962241505234713866'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/03/rewriting-en-net-i.html' title='Rewriting en .NET I'/><author><name>Santi Balboa</name><uri>http://www.blogger.com/profile/02925321795836886361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_yE31JyB0P5g/Rfm6cBL5JYI/AAAAAAAAABE/9ovw-1SUs4I/s72-c/logo_mscoder.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-1867107745665699636</id><published>2007-03-09T10:37:00.000+01:00</published><updated>2008-12-10T16:57:13.101+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Seguridad'/><title type='text'>Distros Linux sobre seguridad y análisis de redes</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ot57OBZ8IeE/RfEtdPlfgRI/AAAAAAAAAG4/UlhJfAfvFes/s1600-h/dragon_small.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5039859438427537682" style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 159px; height: 159px;" alt="" src="http://3.bp.blogspot.com/_ot57OBZ8IeE/RfEtdPlfgRI/AAAAAAAAAG4/UlhJfAfvFes/s200/dragon_small.jpg" border="0" /&gt;&lt;/a&gt;De un tiempo a esta parte, Linux se veía (para quien no conocía el sistema) como una herramienta o sistema de hackers. Pero eso ha cambiado con las mejoras y facilidades que se van implementando en las nuevas distribuciones como Ubuntu, Fedora y demás... más enfocadas a usuarios estándar y a su entorno gráfico.&lt;br /&gt;&lt;br /&gt;Y lo cierto es... que todo ese potencial se puede concentrar hasta cierto punto en una sola distro (y sobre el tema hay variedad para todos los gustos).&lt;br /&gt;Ejemplos como BackTrack (que últimamente vuelve a ser noticia por la nueva versión, la 2), Knoppix-STD, nUbuntu, PHLAK, Whoppix... y así unas cuantas.&lt;br /&gt;&lt;br /&gt;Resulta interesante disponer de todas esas herramientas, ya instaladas, en un único CD con el que poder arrancar el sistema sin necesidad de instalarlo... da mucho juego :)&lt;br /&gt;&lt;br /&gt;Enlaces: &lt;a href="http://www.securitydistro.com/"&gt;Security Distro&lt;/a&gt;, &lt;a href="http://www.remote-exploit.org/backtrack.html"&gt;BackTrack&lt;/a&gt;, &lt;a href="http://www.nubuntu.org/"&gt;nUbuntu&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1374287091777746898-1867107745665699636?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/1867107745665699636/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=1867107745665699636&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/1867107745665699636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/1867107745665699636'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/03/distros-linux-sobre-seguridad-y-anlisis.html' title='Distros Linux sobre seguridad y análisis de redes'/><author><name>la que no encuentra su sitio</name><uri>http://www.blogger.com/profile/03493632625124494225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ot57OBZ8IeE/SSMOeq9HbrI/AAAAAAAAAqQ/xjDo9m9Zvis/S220/avatar1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ot57OBZ8IeE/RfEtdPlfgRI/AAAAAAAAAG4/UlhJfAfvFes/s72-c/dragon_small.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-7003954364966532782</id><published>2007-03-09T00:08:00.000+01:00</published><updated>2008-12-10T16:57:13.608+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redes'/><category scheme='http://www.blogger.com/atom/ns#' term='Seguridad'/><title type='text'>Kit personal de seguridad I</title><content type='html'>Llámalo paranoia si quieres, pero cada vez que cambio de equipo y después de intalar mis aplicaciones de desarrollo, guardo un hueco para una serie de herramientas que me han sacado de más de un apuro. Desde darme pistas de aquel error de un asp que no había manera de meterle mano, hasta enseñarme qué aplicación está capando mi ancho de banda.&lt;br /&gt;&lt;br /&gt;Os paso una lista de mis "básicos".&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ethereal.com/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5039696446645486802" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_yE31JyB0P5g/RfCZN34aRNI/AAAAAAAAAAs/ykTH4E-K6wQ/s200/ethereal.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Ethereal&lt;/strong&gt;. Actualmente tengo la 0.10.10 con el Winpcap 3.1 y va pero que muy bien. Una joya. De un tal Gerald Combs. Open Source con licencia GNU.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.wireshark.org/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5039697365768488162" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_yE31JyB0P5g/RfCaDX4aROI/AAAAAAAAAA0/LeaRBdzPoRM/s200/wireshark.png" border="0" /&gt;&lt;/a&gt;&lt;strong&gt;WireShark&lt;/strong&gt;. No conozco en profundidad si fue primero el huevo o la gallina en este caso, pero como Ethereal fue el primero que conocí, esta para mi es una nueva versión de aquel. Pero es otra joya, básicamente porque es lo mismo!. La verdad es que uso indiscriminadamente cualquiera de los dos. Quizá el primero que vea en el escritorio. No sé realmente el motivo de que existan las dos versiones. si alguien lo conoce, pues que me ilumine por favor, tengo curiosidad. Actualmente tengo instalada la versión 0.99.3.&lt;br /&gt;Es también de Gerald Combs. Es Open Source con licencia GNU&lt;br /&gt;&lt;br /&gt;&lt;a href="http://insecure.org/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5039700831807096050" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_yE31JyB0P5g/RfCdNH4aRPI/AAAAAAAAAA8/4dzOYm7sh3I/s200/nmap.gif" border="0" /&gt;&lt;/a&gt;&lt;strong&gt;NmapWin&lt;/strong&gt;. ¿Qué voy a contar que no sepais? Scaner de puertos puro y duro, con distintos métodos de scaneo. Actualmente tengo instalada la versión 1.2.8 sobre un nmap 2.54&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Mañana más, entre otros Nesus, Acunetix web vulnerability scanner, GFI Languard Network Security Scanner, Network stumbler, etc.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1374287091777746898-7003954364966532782?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/7003954364966532782/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=7003954364966532782&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/7003954364966532782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/7003954364966532782'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/03/kit-personal-de-seguridad-i.html' title='Kit personal de seguridad I'/><author><name>Santi Balboa</name><uri>http://www.blogger.com/profile/02925321795836886361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_yE31JyB0P5g/RfCZN34aRNI/AAAAAAAAAAs/ykTH4E-K6wQ/s72-c/ethereal.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-7964729361497287794</id><published>2007-03-05T09:10:00.000+01:00</published><updated>2008-12-10T16:57:13.773+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='dotnet'/><title type='text'>El proyecto Mono</title><content type='html'>&lt;div style="TEXT-ALIGN: left"&gt;&lt;a href="http://1.bp.blogspot.com/_yE31JyB0P5g/Re3uR9FuIuI/AAAAAAAAAAc/o4VKsyOcSc4/s1600-h/mono-logo.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5038945550321197794" style="FLOAT: right; MARGIN: 0px 0px 10px 10px" alt="" src="http://1.bp.blogspot.com/_yE31JyB0P5g/Re3uR9FuIuI/AAAAAAAAAAc/o4VKsyOcSc4/s200/mono-logo.png" border="0" /&gt;&lt;/a&gt;Un artículo interesante en la revista Mundo Linux de este mes: "Desarrollo y ejecución de aplicaciones .Net en Linux".&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Al ritmo que van, implementar aplicaciones del framework de Microsoft .Net en entornos Linux empieza a ser ... menos incoherente :P&lt;br /&gt;Con el IDE MonoDevelop 0.13 en release, se añaden nuevas funcionalidades como control de versiones y soporte para referencias web.&lt;br /&gt;De momento siguen existiendo limitaciones en los casos en los que se recurre a la API de Windows, pero el proyecto está en continuo desarrollo y mejorando día a día.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enlaces: &lt;a href="http://www.mono-project.com/Main_Page"&gt;Proyecto Mono&lt;/a&gt;, &lt;a href="http://digital.revistasprofesionales.com/mundolinux/"&gt;Mundo Linux&lt;/a&gt;, &lt;a href="http://www.monohispano.org/"&gt;Mono hispano&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1374287091777746898-7964729361497287794?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/7964729361497287794/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=7964729361497287794&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/7964729361497287794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/7964729361497287794'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/03/el-proyecto-mono.html' title='El proyecto Mono'/><author><name>la que no encuentra su sitio</name><uri>http://www.blogger.com/profile/03493632625124494225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ot57OBZ8IeE/SSMOeq9HbrI/AAAAAAAAAqQ/xjDo9m9Zvis/S220/avatar1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_yE31JyB0P5g/Re3uR9FuIuI/AAAAAAAAAAc/o4VKsyOcSc4/s72-c/mono-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1374287091777746898.post-7571423967834301104</id><published>2007-03-03T13:47:00.000+01:00</published><updated>2007-03-06T23:05:38.463+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RFID'/><title type='text'>Kit RFID</title><content type='html'>Teneis en &lt;a href="http://www.thinkgeek.com/geektoys/science/907a/?cpg=wnrss"&gt;kit económico para "trastear" con RFID&lt;/a&gt; para todos los interesados en el tema. Un poco más de información en la página de &lt;a href="http://www.kriptopolis.org/kit-de-experimentacion-rfid"&gt;kriptopolis&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;De momento parece que no hay nada en stock, esperemos que se solucione en breve. Lo económico del mismo lo hace interesante para iniciarse en el tema.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1374287091777746898-7571423967834301104?l=sbalboa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sbalboa.blogspot.com/feeds/7571423967834301104/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1374287091777746898&amp;postID=7571423967834301104&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/7571423967834301104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1374287091777746898/posts/default/7571423967834301104'/><link rel='alternate' type='text/html' href='http://sbalboa.blogspot.com/2007/03/kit-rfid.html' title='Kit RFID'/><author><name>Santi Balboa</name><uri>http://www.blogger.com/profile/02925321795836886361</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>
