<?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-26067392</id><updated>2011-12-07T09:56:28.573-07:00</updated><category term='Vista'/><category term='problemas'/><category term='gemas'/><category term='SQL'/><category term='web'/><category term='servidores'/><category term='bugs'/><category term='interface de usuario'/><category term='seguridad'/><category term='Visual Studio 2005'/><category term='analogias'/><category term='listas genericas'/><category term='UI'/><category term='tecnologia'/><category term='hacking'/><category term='Windows'/><category term='redes sociales'/><category term='gratis'/><category term='Apple'/><category term='firefox'/><category term='trucos'/><category term='Visual Studio 2008'/><category term='refleccion'/><category term='linea de comando'/><category term='download'/><category term='libros'/><category term='fsharp'/><category term='tips'/><category term='chistoso'/><category term='MS Outlook'/><category term='Mac'/><category term='trivia'/><category term='usabilidad'/><category term='WTF'/><category term='.net'/><category term='errores'/><category term='blogs'/><category term='codigo'/><category term='Windows 7'/><category term='seguridad .net'/><category term='debug'/><category term='xml'/><category term='IE7'/><category term='divertido'/><category term='personal'/><category term='videos'/><category term='novell'/><category term='files'/><category term='literatura de software'/><category term='Instalacion'/><category term='ideas'/><category term='links'/><category term='quiz'/><category term='herramientas'/><category term='tip'/><category term='oracle'/><category term='mvc'/><category term='C#'/><category term='optimizacion'/><category term='preguntas para entrevista'/><category term='iTunes'/><category term='componentes'/><category term='activex'/><category term='Linux'/><category term='twitter'/><category term='noticias'/><category term='IE8'/><category term='utilidades'/><category term='third party'/><category term='refactorizacion'/><category term='microsoft'/><category term='patrones'/><category term='asp.net'/><category term='IE'/><category term='alt.net hispano'/><category term='sugerencias'/><category term='dialogos'/><category term='practicas'/><category term='.net DIB Bitmap TIFF C#'/><category term='SVN'/><category term='extenciones'/><category term='excepciones'/><category term='google'/><category term='DOS'/><title type='text'>Que quieres desarrollar hoy?</title><subtitle type='html'>mis pensamientos, articulos o lo que se me ocurra, principalmente sobre programacion y computadoras en general</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default?start-index=101&amp;max-results=100'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>200</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-26067392.post-5697956384578513104</id><published>2011-01-19T11:03:00.005-07:00</published><updated>2011-02-10T09:00:52.934-07:00</updated><title type='text'>Pronunciacion de terminos tecnicos</title><content type='html'>Algo que he notado en la comunidad hispana es la pronunciacion incorrecta en ingles de muchos terminos tecnicos o nombres de tecnologias, algunas veces he compartido estos datos en &lt;a href="http://twitter.com/ebersys"&gt;Twitter&lt;/a&gt; y han generado sorpresa en mas de alguna ocasion, asi que decidi crear este post donde ire agregando terminos que vea yo que requieren clarificacion de la pronunciacion correcta o mas aceptada.&lt;br /&gt;&lt;br /&gt;ASP.NET - ei-es-pi dot-net&lt;br /&gt;Azure - &lt;b&gt;AAshur&lt;/b&gt; (todo el enfasis en la A)&lt;br /&gt;C# - si-sharp&lt;br /&gt;HTML - eich-ti-em-el&lt;br /&gt;Java - Yava&lt;br /&gt;Project Euler - Euler se pronuncia "&lt;b&gt;Oiler&lt;/b&gt;"&lt;br /&gt;LINQ - &amp;nbsp;asi tal cual, &lt;b&gt;LINK&lt;/b&gt;&lt;br /&gt;Moq - &lt;b&gt;MOK (&lt;/b&gt;&amp;lt;= de preferencia,&amp;nbsp;o &lt;b&gt;Mok-iu)&lt;/b&gt;&lt;br /&gt;MVC - em-vi-ci&lt;br /&gt;NHibernate - enjaiberneit&lt;br /&gt;NuGet - &lt;b&gt;niu-guet&lt;/b&gt;, como si fuera new-get&lt;br /&gt;SQL - &lt;b&gt;si-kuol&lt;/b&gt; (o &lt;b&gt;es-kiu-el&lt;/b&gt;)&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;VB - bibi &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Si tienen duda sobre algun termino haganmelo saber para agregarlo a la lista&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-5697956384578513104?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/5697956384578513104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=5697956384578513104' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5697956384578513104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5697956384578513104'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2011/01/pronunciacion-de-terminos-tecnicos.html' title='Pronunciacion de terminos tecnicos'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-4115870196060900977</id><published>2010-12-10T17:08:00.000-07:00</published><updated>2010-12-10T17:08:23.848-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='codigo'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>SQL: agrupar registros por un intervalo arbitrario</title><content type='html'>Recientemente, un compañero me presento un problema, necesitaba escribir un query que agrupara registros por intervalos de 5,10,15 minutos, idealmente queria que se pudiera pasar un parametro al query para especificar el intervalo, despues de unos minutos di con la solucion:&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="border-collapse: collapse; font-size: 13px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New';"&gt;&lt;span style="color: blue; font-family: 'Courier New'; font-size: 10pt;"&gt;declare&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt; @interval &lt;span style="color: blue;"&gt;int&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New';"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New';"&gt;&lt;span style="color: blue; font-family: 'Courier New'; font-size: 10pt;"&gt;set&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt; @interval &lt;span style="color: grey;"&gt;=&lt;/span&gt; 5&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New';"&gt;&lt;span style="color: blue; font-family: 'Courier New'; font-size: 10pt;"&gt;select&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt; &lt;span style="color: magenta;"&gt;datepart&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;hh&lt;span style="color: grey;"&gt;,&lt;/span&gt; DateTimeColumn&lt;span style="color: grey;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New';"&gt;&lt;span style="color: grey; font-family: 'Courier New'; font-size: 10pt;"&gt;,&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt; &lt;span style="color: magenta;"&gt;datepart&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;mi&lt;span style="color: grey;"&gt;,&lt;/span&gt; DateTimeColumn&lt;span style="color: grey;"&gt;)/&lt;/span&gt;&lt;b&gt;@interval&lt;span style="color: grey;"&gt;*&lt;/span&gt;@interval&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New';"&gt;&lt;span style="color: grey; font-family: 'Courier New'; font-size: 10pt;"&gt;,&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt; &lt;span style="color: magenta;"&gt;count&lt;/span&gt;&lt;span style="color: grey;"&gt;(*)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New';"&gt;&lt;span style="color: blue; font-family: 'Courier New'; font-size: 10pt;"&gt;from&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt; thetable&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New';"&gt;&lt;span style="color: blue; font-family: 'Courier New'; font-size: 10pt;"&gt;group&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt; &lt;span style="color: blue;"&gt;by&lt;/span&gt; &lt;span style="color: magenta;"&gt;datepart&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;hh&lt;span style="color: grey;"&gt;,&lt;/span&gt; DateTimeColumn&lt;span style="color: grey;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New';"&gt;&lt;span style="color: grey; font-family: 'Courier New'; font-size: 10pt;"&gt;,&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt; &lt;span style="color: magenta;"&gt;datepart&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;mi&lt;span style="color: grey;"&gt;,&lt;/span&gt; DateTimeColumn&lt;span style="color: grey;"&gt;)/&lt;/span&gt;&lt;b&gt;@interval&lt;span style="color: grey;"&gt;*&lt;/span&gt;@interval&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;El truco esta en &lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New'; font-size: 13px;"&gt;&lt;b&gt;@interval&lt;span style="color: grey;"&gt;*&lt;/span&gt;@interval&lt;/b&gt;&lt;/span&gt;, aunque parece que la division y multiplicacion se eliminan entre si, lo que realmente pasa ahi es una &lt;b&gt;division entera&lt;/b&gt;, la cual al multiplicarla por el mismo valor, nos da los intervalos correctos.&lt;br /&gt;&lt;br /&gt;He aqui una lista de valores generados para un intervalo de 5&lt;br /&gt;&lt;br /&gt;&lt;b&gt;minuto&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;|&lt;/span&gt;dividido por 5&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;|&lt;/span&gt;multiplicado por 5&lt;/b&gt;&lt;br /&gt;0&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; | &lt;/span&gt;0&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; |  &lt;/span&gt;0&lt;br /&gt;1&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; | &lt;/span&gt;0&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; |  &lt;/span&gt;0&lt;br /&gt;...&lt;br /&gt;5&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; | &lt;/span&gt;1&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; |  &lt;/span&gt;5&lt;br /&gt;6&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; | &lt;/span&gt;1&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; |  &lt;/span&gt;5&lt;br /&gt;...&lt;br /&gt;10&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; | &lt;/span&gt;2&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; |  &lt;/span&gt;10&lt;br /&gt;11&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; | &lt;/span&gt;2&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; |  &lt;/span&gt;10&lt;br /&gt;...&lt;br /&gt;Teniendo esto se pueden agregar mas campos al select, o hacer la presentacion del tiempo mas bonito, etc&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="color: blue; font-family: 'Courier New'; font-size: 10pt;"&gt;declare&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt; @interval &lt;span style="color: blue;"&gt;int&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="color: blue; font-family: 'Courier New'; font-size: 10pt;"&gt;set&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt; @interval &lt;span style="color: grey;"&gt;=&lt;/span&gt; 5&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="color: blue; font-family: 'Courier New'; font-size: 10pt;"&gt;select&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt; &lt;span style="color: blue;"&gt;convert&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;varchar&lt;span style="color: grey;"&gt;(&lt;/span&gt;8&lt;span style="color: grey;"&gt;),&lt;/span&gt; DTColumn&lt;span style="color: grey;"&gt;,&lt;/span&gt; 1&lt;span style="color: grey;"&gt;)+&lt;/span&gt;&lt;span style="color: red;"&gt;' '&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;+&lt;/span&gt;&lt;span style="color: blue;"&gt;convert&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;varchar&lt;span style="color: grey;"&gt;(&lt;/span&gt;2&lt;span style="color: grey;"&gt;),&lt;/span&gt; &lt;span style="color: magenta;"&gt;datepart&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;hh&lt;span style="color: grey;"&gt;,&lt;/span&gt; DTColumn&lt;span style="color: grey;"&gt;))+&lt;/span&gt;&lt;span style="color: red;"&gt;':'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;+&lt;/span&gt;&lt;span style="color: blue;"&gt;convert&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;varchar&lt;span style="color: grey;"&gt;(&lt;/span&gt;2&lt;span style="color: grey;"&gt;),&lt;/span&gt; &lt;span style="color: magenta;"&gt;datepart&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;mi&lt;span style="color: grey;"&gt;,&lt;/span&gt; DTColumn&lt;span style="color: grey;"&gt;)/&lt;/span&gt;@interval&lt;span style="color: grey;"&gt;*&lt;/span&gt;@interval&lt;span style="color: grey;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="color: grey; font-family: 'Courier New'; font-size: 10pt;"&gt;,&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt; &lt;span style="color: magenta;"&gt;count&lt;/span&gt;&lt;span style="color: grey;"&gt;(*)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="color: blue; font-family: 'Courier New'; font-size: 10pt;"&gt;from&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt; the_table&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="color: blue; font-family: 'Courier New'; font-size: 10pt;"&gt;group&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt; &lt;span style="color: blue;"&gt;by&lt;/span&gt; &lt;span style="color: blue;"&gt;convert&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;varchar&lt;span style="color: grey;"&gt;(&lt;/span&gt;8&lt;span style="color: grey;"&gt;),&lt;/span&gt; DTColumn&lt;span style="color: grey;"&gt;,&lt;/span&gt; 1&lt;span style="color: grey;"&gt;)+&lt;/span&gt;&lt;span style="color: red;"&gt;' '&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;+&lt;/span&gt;&lt;span style="color: blue;"&gt;convert&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;varchar&lt;span style="color: grey;"&gt;(&lt;/span&gt;2&lt;span style="color: grey;"&gt;),&lt;/span&gt; &lt;span style="color: magenta;"&gt;datepart&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;hh&lt;span style="color: grey;"&gt;,&lt;/span&gt; DTColumn&lt;span style="color: grey;"&gt;))+&lt;/span&gt;&lt;span style="color: red;"&gt;':'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;h1 style="margin-bottom: 5.0pt; margin-left: 0in; margin-right: 0in; margin-top: 5.0pt;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;+&lt;/span&gt;&lt;span style="color: blue;"&gt;convert&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;varchar&lt;span style="color: grey;"&gt;(&lt;/span&gt;2&lt;span style="color: grey;"&gt;),&lt;/span&gt; &lt;span style="color: magenta;"&gt;datepart&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;mi&lt;span style="color: grey;"&gt;,&lt;/span&gt; DTColumn&lt;span style="color: grey;"&gt;)/&lt;/span&gt;@interval&lt;span style="color: grey;"&gt;*&lt;/span&gt;@interval&lt;span style="color: grey;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;&lt;span style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: grey; font-family: 'Courier New'; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: small;"&gt;Esto nos da algo asi:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: grey; font-family: 'Courier New'; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;h1 style="margin-bottom: 5.0pt; margin-left: 0in; margin-right: 0in; margin-top: 5.0pt;"&gt;&lt;span class="Apple-style-span" style="color: grey; font-family: 'Courier New'; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: small;"&gt;&lt;span style="color: blue; font-family: 'Courier New'; font-size: 10pt; font-weight: normal;"&gt;11/12/10 10:10&amp;nbsp;&amp;nbsp;&amp;nbsp; 28&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 style="margin-bottom: 5.0pt; margin-left: 0in; margin-right: 0in; margin-top: 5.0pt;"&gt;&lt;span class="Apple-style-span" style="color: grey; font-family: 'Courier New'; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: small;"&gt;&lt;span style="color: blue; font-family: 'Courier New'; font-size: 10pt; font-weight: normal;"&gt;11/12/10 10:15&amp;nbsp;&amp;nbsp;&amp;nbsp; 11&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 style="margin-bottom: 5.0pt; margin-left: 0in; margin-right: 0in; margin-top: 5.0pt;"&gt;&lt;span class="Apple-style-span" style="color: grey; font-family: 'Courier New'; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: small;"&gt;&lt;span style="color: blue; font-family: 'Courier New'; font-size: 10pt; font-weight: normal;"&gt;11/12/10 10:20&amp;nbsp;&amp;nbsp;&amp;nbsp; 57&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: grey; font-family: 'Courier New'; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: small;"&gt;&lt;span style="color: blue; font-family: 'Courier New'; font-size: 10pt; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: small;"&gt;Espero le sea de utilidad a alguien&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&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/26067392-4115870196060900977?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/4115870196060900977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=4115870196060900977' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/4115870196060900977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/4115870196060900977'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2010/12/sql-agrupar-registros-por-un-intervalo.html' title='SQL: agrupar registros por un intervalo arbitrario'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-3170733609514406304</id><published>2010-11-29T13:00:00.000-07:00</published><updated>2010-11-29T13:00:38.853-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>VirtualBox VM no suelta el mouse</title><content type='html'>&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Un pequeño post para compartirles algo que me acaba de suceder, estoy probando VirtualBox en mi OpenSuse, instalando Windows XP en una VM, se me ocurrio dar click dentro de la VM, habiendo leido que con la tecla [ctrl] derecha me soltaba el mouse, pero para mi sorpresa [ctrl] no funciono, busque en Google desde otra maquina y no encontre la solucion, aunque si muchos articulos que hablan sobre el tema, y las razones tecnicas y como hacer para que ya no suceda y otras hierbas, el caso que no encontre nada que me sirviera en ese momento para salirme de la VM, asi que ya resignado, instintivamente presione &lt;b&gt;ctrl+alt+del&lt;/b&gt;, y oh sorpresa, esa combinacion fue la que solto el mouse de la VM :)&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Asi que decidi documentar la anectoda, esperando le sea de utilidad a alguien mas&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-3170733609514406304?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/3170733609514406304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=3170733609514406304' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/3170733609514406304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/3170733609514406304'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2010/11/virtualbox-vm-no-suelta-el-mouse.html' title='VirtualBox VM no suelta el mouse'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-6435954640660720687</id><published>2010-10-01T22:48:00.000-06:00</published><updated>2010-10-01T22:48:28.879-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interface de usuario'/><category scheme='http://www.blogger.com/atom/ns#' term='usabilidad'/><title type='text'>Interfaces de usuario para captura de datos</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_cofcJplmJ2Q/TKa284_H0KI/AAAAAAAABXU/26ehUFHFElc/s1600/keyboard_enter.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_cofcJplmJ2Q/TKa284_H0KI/AAAAAAAABXU/26ehUFHFElc/s1600/keyboard_enter.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Hace unos dias grabe un episodio del &lt;a href="http://www.dev3cast.com/"&gt;dev3cast&lt;/a&gt; con &lt;a href="http://twitter.com/pelosbriseno"&gt;Alex Briseño&lt;/a&gt; y &lt;a href="http://twitter.com/gabo"&gt;Gabriel Flores&lt;/a&gt; sobre interfaces graficas orientadas a captura masiva de datos, si nunca has trabajado en este tipo de aplicaciones seguramente te sorprenderan algunas de las tecnicas que se aplican ahi, algunas de estas van en contra del "standard" al que estamos acostumbrados en aplicaciones 'normales'. &lt;b&gt;&lt;a href="http://www.dev3cast.com/2010/09/16/interfaces-graficas-funcionales/"&gt;El podcast lo encuentras aca&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Gracias a Gabo por la invitacion a participar en el &lt;a href="http://www.dev3cast.com/"&gt;dev3cast&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-6435954640660720687?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/6435954640660720687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=6435954640660720687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6435954640660720687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6435954640660720687'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2010/10/interfaces-de-usuario-para-captura-de.html' title='Interfaces de usuario para captura de datos'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cofcJplmJ2Q/TKa284_H0KI/AAAAAAAABXU/26ehUFHFElc/s72-c/keyboard_enter.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-1710123384588434256</id><published>2010-09-21T22:29:00.001-06:00</published><updated>2010-09-21T22:35:33.822-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>La intuitividad de Apple: Actualizando OS X</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_cofcJplmJ2Q/TJl6ofqmw7I/AAAAAAAABW8/o-zN4BZrPAg/s1600/mac-os-x-snow-leopard.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_cofcJplmJ2Q/TJl6ofqmw7I/AAAAAAAABW8/o-zN4BZrPAg/s320/mac-os-x-snow-leopard.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Acabo de actualizar mi OS X a Snow Leopard (lo se, un poco tarde), primero que nada no puedo entender como es que OS X, que corre en una sola configuracion de hardware (ok, talvez 2 o 3) toma mas de una hora para instalar, mientras que Windows que corre en millones de configuraciones de hardware puede instalar en 15 minutos (incluyendo la reseteada obligatoria, ya listo para usarse).Por mas que intento no le veo lo &lt;b&gt;intuitivo&lt;/b&gt; a este asunto, pero bueno, dejando eso de lado, una de las 3? grandes caracteristicas de Snow Leopard es Safari 4, antes de instalar me di cuenta que ya tenia Safari 5, procedi con la instalacion y para mi sorpresa, cuando finalmente termino de actualizar, ahora tenia &lt;b&gt;Safari 4&lt;/b&gt;!! Mas de una hora actualizando y ni siquiera pudieron checar si la version de los componentes existentes era mayor que los de la actualizacion? La verdad me dio miedo checar si habia algo mas que hubiera bajado de version. &lt;b&gt;Actualizar OS X resulta en una obsoletizacion (palabra inventada) de sus componentes&lt;/b&gt;, como es que eso es &lt;b&gt;intuitivo&lt;/b&gt;?&lt;br /&gt;Para terminar, despues de la actualizacion fui a checar las actualizaciones, habia 776MB de estas (y estos son los que se burlan de las actualizaciones de Windows?) y, claro esta, en la lista estaba Safari 5.&lt;br /&gt;&lt;br /&gt;En resumidas cuentas: Tenia Safari 5, actualice OS X, me bajo la version a Safari 4, luego tuve que instalar 776MB de actualizaciones para regresar a donde estaba antes de la actualizacion. Intuitivo o no? ahi se los dejo.&lt;br /&gt;&lt;br /&gt;Update. Despues de otros 10 minutos, llegaron mas actualizaciones, esta vez unos 200MB adicionales de actualizaciones, claro, reseteada requerida incluida.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-1710123384588434256?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/1710123384588434256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=1710123384588434256' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1710123384588434256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1710123384588434256'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2010/09/la-intuitividad-de-apple-actualizando.html' title='La intuitividad de Apple: Actualizando OS X'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cofcJplmJ2Q/TJl6ofqmw7I/AAAAAAAABW8/o-zN4BZrPAg/s72-c/mac-os-x-snow-leopard.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-1231601195125457459</id><published>2009-11-02T16:53:00.000-07:00</published><updated>2009-11-02T16:53:39.207-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='literatura de software'/><category scheme='http://www.blogger.com/atom/ns#' term='seguridad'/><title type='text'>Divulgacion de informacion: Esta en todos lados</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_cofcJplmJ2Q/SuEubDE3xBI/AAAAAAAABP0/aVUtOq6_0nk/s1600-h/information_disclosure.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5395644870783648786" src="http://3.bp.blogspot.com/_cofcJplmJ2Q/SuEubDE3xBI/AAAAAAAABP0/aVUtOq6_0nk/s320/information_disclosure.jpg" style="cursor: pointer; float: left; height: 182px; margin: 0pt 10px 10px 0pt; width: 320px;" /&gt;&lt;/a&gt;Talvez hallas visto alguna calcomania como esta en la parte trasera de algun auto, y talvez te parecio ingeniosa/divertida/tonta, pero has pensado que es una forma de divulgacion de informacion? La pregunta muy probablemente cambie tu perspectiva sobre esta inocente calcomania en caso de que no lo vieras asi antes. Tristemente en paises de Mexico a sudamerica cada vez es mas comun la extorsion usando secuestros virtuales, que es cuando te llaman por telefono y te dicen que tienen secuestrado a tu hijo (los nombres estan en la calcomania, recuerdas?) y te piden que pagues inmediatamente el rescate, en los casos de secuestro virtual es mentira que tengan a la persona secuestrada, pero utilizan muchas artimañas para hacerte creer que asi es y utilizan el impacto y momento psicologico para aprovecharse de las personas. Este es solo un ejemplo de la manera en que estas personas conducen estas actividades y mi interes no es hablar de eso, sino hacer incapie sobre la divulgacion de informacion y de que esta puede estar en los lugares mas inocentes, si crees que eso no te puede pasar a ti, lamento decirte que eso te hace mas vulnerable.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Que tal esto, has visto algo asi?:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_cofcJplmJ2Q/SutbHo_CvyI/AAAAAAAABQ0/uMiMfgzm9lI/s1600-h/wordpress_fail.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_cofcJplmJ2Q/SutbHo_CvyI/AAAAAAAABQ0/uMiMfgzm9lI/s640/wordpress_fail.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;La cantidad de blogs que han sido hackeados por este detallito es demasiado grande, WordPress hace estos sitios demasiado facil de encontrar y es cuestion de usar una de tantas vulnerabilidades que aparecen para este sistema y lograr hacer algun daño&lt;br /&gt;&lt;br /&gt;Tambien he visto sistemas en los que usan el numero de empleado para hacer login en las computadoras, el # de empleado es visible cuando la computadora esta bloqueada, y resulta que puedes llamar al help desk de la compañia, dar ese numero con el nombre de la persona y ellos resetean la contraseña y te la dan ahi mismo.&lt;br /&gt;&lt;br /&gt;Desafortunadamente no hay reglas establecidas para prevenir el problema de la divulgacion de informacion, mi intencion es simplemente crear mas conciencia sobre el gran problema que esto puede llegar a representar en el desarrollo de software o incluso en tu vida personal. Lo unico que te digo es que este problema esta en todos lados, en tus comentarios, archivos de configuracion, en mostrar al usuario la version de tal o cual componente que uses en tu aplicacion, la misma version de tu app, el # de empleado, etc. aun en esa inocente calcomania.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;La seguridad se atravieza en el camino de la usabilidad, y la usabilidad en el camino de la seguridad&lt;/b&gt;, es cuestion de analizar un poquito mas lo que exponemos en nuestras aplicaciones y tener cuidado.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;No existe un sistema seguro&lt;/b&gt;, lo unico que podemos hacer es poner la barra mas alta y aunque no nos guste, &lt;b&gt;la seguridad por obscuridad&lt;/b&gt; puede ser nuestro unico amigo algunas veces.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-1231601195125457459?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/1231601195125457459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=1231601195125457459' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1231601195125457459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1231601195125457459'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/11/divulgacion-de-informacion-esta-en.html' title='Divulgacion de informacion: Esta en todos lados'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cofcJplmJ2Q/SuEubDE3xBI/AAAAAAAABP0/aVUtOq6_0nk/s72-c/information_disclosure.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-4474592998791813089</id><published>2009-10-21T18:33:00.017-06:00</published><updated>2009-10-22T22:10:57.145-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='literatura de software'/><category scheme='http://www.blogger.com/atom/ns#' term='patrones'/><title type='text'>Duct tape programming: El codigo elegante no paga tu sueldo</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cofcJplmJ2Q/Stkf1x7V5II/AAAAAAAABPo/4YyZcZ67yu4/s1600-h/duct_tape_programmer.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 213px; height: 320px;" src="http://4.bp.blogspot.com/_cofcJplmJ2Q/Stkf1x7V5II/AAAAAAAABPo/4YyZcZ67yu4/s320/duct_tape_programmer.jpg" alt="" id="BLOGGER_PHOTO_ID_5393377037548643458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Finalmente me di el tiempo de terminar este articulo sobre la conversacion de &lt;a href="http://www.joelonsoftware.com/items/2009/09/23.html"&gt;the Duct Tape programmer&lt;/a&gt;; antes de continuar con el articulo dedicare el resto de este parrafo para tratar de explicar el termino. La traduccion literal es&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;b&gt;programador de cinta gris&lt;/b&gt;; se usa esta expresion porque la cinta gris es un material muy resistente para uso multiple que se invento durante la segunda guerra mundial, donde se utilizo para reparar equipo militar rapidamente, cualquier cosa desde armas de fuego hasta aviones; hoy en dia se utiliza para reparar muchas cosas.&lt;br /&gt;&lt;br /&gt;Este articulo ha provocado mucha polemica en las ultimas semanas en los medios sociales; gran parte de la comunidad bloguera y twittera tomo este articulo de Joel como un ataque a TDD, &lt;a href="http://es.wikipedia.org/wiki/Desarrollo_%C3%A1gil_de_software"&gt;practicas agiles de desarrollo&lt;/a&gt; y desarrollo de software de calidad en general, algo que encaja perfectamente si lo analizas un poquito, estas personas viven de eso, es lo que venden, bloguean y twittean sobre esto todo el tiempo, asi que el post les toco unas fibras sensibles. Estos fanaticos de patrones y practicas han lanzado una campaña agresiva para convencer al mundo que a los programadores de cinta gris no les importa la calidad del software, que su codigo es inmantenible, que carece de todos esos atributos que esperamos del buen software. Estas personas son las mismas que minimizan el "&lt;span style="font-weight: bold;"&gt;contenido meramente tecnico&lt;/span&gt;", se les ve hablar y hablar (o escribir) sobre buenas practicas de desarrollo y quejarse de como todo el mundo siempre lo hace mal, pero nunca o raramente los ves hablar sobre implementaciones de algo remotamente relacionado con codigo, yo opino que &lt;span style="font-weight: bold;"&gt;la teoria esta bien, pero sin la practica no sirve de nada&lt;/span&gt;. Como siempre lo digo, el problema en todo caso, son los extremos.&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;&lt;/b&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Desafortunadamente para ellos el primer ejemplo de programacion con cinta gris que salta a la vista es &lt;a href="http://stackoverflow.com/"&gt;StackOverflow&lt;/a&gt;, un sitio que ha sido desarrollado por programadores que abiertamente han aceptado sin problema alguno que usan tecnicas que no son precisamente agiles o dentro de los mas estrictos patrones de desarrollo, al mismo tiempo este sitio se ha mantenido funcionando al 100% y han agregado un sinnumero de caracteristicas desde su inicio hasta la fecha, lo cual me dice que tienen un codigo con cualidades que hace que esto sea posible; estoy seguro que el codigo no es algo que el programador promedio podria entender y seguramente los puristas encontrarian muchas cosas que les resultarian muy desagradables por aqui y por alla, pero es codigo que cumple su funcion, y lo hace excelentemente bien.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Cuando dije esto sobre SO en twitter, algunos no lo creyeron (mostrando incredulidad de que algo tan bueno pudiera estar hecho con cinta gris, pero hay podcasts donde hablan abiertamente sobre como conducen el desarrollo del sitio), alguien por ahi me respondio muy enojado tratando de minimizarlo alegando que era el unico ejemplo real de programacion exitosa usando cinta gris, desafortunadamente para ellos (una vez mas) si vemos el tremendo exito en los productos de Apple ultimamente, vemos programacion con cinta gris por todos lados, &lt;span style="font-weight: bold;"&gt;Apple es la Reina&lt;/span&gt; (o Rey?) &lt;span style="font-weight: bold;"&gt;de la programacion con cinta gris&lt;/span&gt;, especialmente el &lt;span style="font-weight: bold;"&gt;ecosistema de desarrollo para iPhone&lt;/span&gt;, los que han trabajado con el saben de sus grandes limitaciones y obstaculos que hay que sortear para escribir aplicaciones, pero al final, &lt;span style="font-weight: bold;"&gt;la gente esta feliz con el producto&lt;/span&gt;, y &lt;span style="font-weight: bold;"&gt;eso es lo realmente importante&lt;/span&gt;, a la gente no le importa si la arquitectura es una porqueria o si el codigo es horrible; lo dire una vez mas: &lt;span style="font-weight: bold;"&gt;no importa&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;El problema mas grande de los puristas es que cuando te concentras solamente en hacer que cada linea de codigo este dentro de un patron de diseño, es muy facil cruzar las lineas de abuso de ingenieria y olvidarse de lo mas basico, que es el cumplir con tus clientes y terminar tus proyectos, si no lo terminas, no importa que tan bueno sea el codigo, desafortunadamente &lt;span style="font-weight: bold;"&gt;el codigo elegante no paga tu sueldo&lt;/span&gt;, terminar tus proyectos si lo hace.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Creo que el patron de desarrollo que uso mas frecuentemente es "lo que funcione mejor", no tengo miedo de usar programacion procedural, funcional, POO, dinamica, stored procedures o lo que se requiera, lo que me permita sacar adelante mi trabajo (bueno, a excepcion de XML, &lt;a href="http://ebersysesp.blogspot.com/2009/07/estas-cansado-de-xml-yo-tambien.html"&gt;odio XML&lt;/a&gt;) de una forma que me permita siempre extender y/o modificar mis sistemas facilmente en un futuro, pero lo mas importante de todo es que &lt;span style="font-weight: bold;"&gt;estoy acostumbrado a entregar buenos resultados&lt;/span&gt;, siempre, sin excusas, con frecuencia predico una de mis frases favoritas: &lt;span style="font-weight: bold;"&gt;no es opcional, tiene que funcionar&lt;/span&gt;. Quiero aclarar un punto muy importante, soy muy estricto a la hora de escribir codigo, me gusta el codigo elegante, sigo principios &lt;a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod"&gt;SOLID&lt;/a&gt;, escribo pruebas unitarias cuando un codigo lo requiere, es solo que no me gusta forzar todo dentro de un patron, y no siempre escribo mis pruebas religiosamente antes que el codigo (ok, de hecho, nunca escribo las pruebas primero). Eso para mi, es el programador de cinta gris, el que sabe cuando abstenerse de la mera aplicacion de patrones y tiene siempre presente la mas importante caracteristica de tu software; &lt;span style="font-weight: bold;"&gt;el software que cumple y se entrega a tiempo&lt;/span&gt; es esa caracteristica, sin esta, no importa lo que hagas, aun si es una obra de arte, no vale un centavo.&lt;br /&gt;&lt;br /&gt;Por otro lado, creo que &lt;span style="font-weight: bold;"&gt;si hay areas donde se puede ser purista&lt;/span&gt; y aplicar todos tus (des?)conocimientos, creo los que proyectos de codigo abierto o proyectos personales son ejemplos perfectos para aplicar todo esto, no hay fechas de entrega, no hay compromiso, no hay riesgos, estara listo cuando estara listo.&lt;br /&gt;&lt;br /&gt;Cuando los puristas se encuentran acorralados ante las muestras de buenos resultados de la programacion con cinta gris, la salida facil -esto me recuerda como los mismos Agilistas dicen que cuando un proyecto Agil falla es porque no se aplico correctamente- es decir que se requiere gente muy talentosa para sacar adelante algo asi, y claro, nadie dijo que fuera facil, se requiere talento, se requiere leer y entender esos blogs de &lt;span style="font-weight: bold;"&gt;contenido meramente tecnico&lt;/span&gt;, experimentar, jugar, hackear; al final, el desarrollo de &lt;a href="http://www.codinghorror.com/blog/archives/001033.html"&gt;software es un problema humano&lt;/a&gt;. Yo creo que &lt;span style="font-weight: bold;"&gt;las metodologias son para compensar la falta de talento&lt;/span&gt;, pero ese es tema para otro post.&lt;br /&gt;&lt;br /&gt;No hay reglas fijas y estrictas en el desarrollo de software, si fuera asi, este seria demasiado facil.&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;small&gt;&lt;small&gt;&lt;br /&gt;si no les gusta el termino "programador de cinta gris" pueden pasar a reclamarle a &lt;a href="http://twitter.com/mhcornejo"&gt;Mario Cornejo&lt;/a&gt; :)&lt;br /&gt;&lt;/small&gt;&lt;/small&gt;&lt;/span&gt;&lt;/b&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/26067392-4474592998791813089?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/4474592998791813089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=4474592998791813089' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/4474592998791813089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/4474592998791813089'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/10/duct-tape-programming-el-codigo.html' title='Duct tape programming: El codigo elegante no paga tu sueldo'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cofcJplmJ2Q/Stkf1x7V5II/AAAAAAAABPo/4YyZcZ67yu4/s72-c/duct_tape_programmer.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-2638219132323733132</id><published>2009-10-03T14:37:00.003-06:00</published><updated>2009-10-03T14:43:55.023-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iTunes'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='usabilidad'/><title type='text'>La intuitividad de la Mac: Sincronizando el iPhone</title><content type='html'>He tenido este problema desde que compre mi iPhone, cada que lo sincronizo despues de haber agregado o modificado alguna nota, iTunes me da este mensajito&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cofcJplmJ2Q/Ssez9hY9AgI/AAAAAAAABPQ/Q4GzBT_I-SM/s1600-h/syncing_notes.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 172px;" src="http://1.bp.blogspot.com/_cofcJplmJ2Q/Ssez9hY9AgI/AAAAAAAABPQ/Q4GzBT_I-SM/s400/syncing_notes.png" alt="" id="BLOGGER_PHOTO_ID_5388473348688511490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Normalmente mantengo unas 10 notas en mi iPhone, asi que &lt;span style="font-weight: bold;"&gt;siempre&lt;/span&gt; va a ser mas del maldito &lt;span style="font-weight: bold;"&gt;5 por ciento&lt;/span&gt;, nunca he entendido porque se les ocurrio este limite, yo deberia poder cambiar todas mis notas si quisiera sin tener que ser molestado, si la cuestion es poder recuperar notas en caso de algun accidente, podrian mantener la historia de estas, las notas las escribe uno en el mismo iPhone, que tan grandes pueden ser?; otro problema que se genera con esto es que si conectas tu iPhone para sincronizarlo y lo dejas ahi para regresar mas tarde por el, resulta que regresas y la sincronizacion esta atorada en este estupido dialogo. Me parece muy mala usabilidad en este caso, y las cosas no han cambiado aun con el sinnumero de actualizaciones que ha sufrido iTunes.&lt;br /&gt;&lt;br /&gt;Recuerden el &lt;span style="font-weight: bold;"&gt;Principio de menos sorpresa.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-2638219132323733132?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/2638219132323733132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=2638219132323733132' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2638219132323733132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2638219132323733132'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/10/la-intuitividad-de-la-mac-sincronizando.html' title='La intuitividad de la Mac: Sincronizando el iPhone'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cofcJplmJ2Q/Ssez9hY9AgI/AAAAAAAABPQ/Q4GzBT_I-SM/s72-c/syncing_notes.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-4823563060258008368</id><published>2009-09-25T15:41:00.003-06:00</published><updated>2009-09-25T15:56:27.605-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>La intuitividad de Apple: El boton OK perdido</title><content type='html'>Cada que conectas un iPhone/iPod a una Mac, iTunes hace sus cosas, toma muchisimo tiempo para sincronizar y sabra Dios que mas (una de esas cosas es que &lt;span style="font-weight: bold;"&gt;se roba el foco de la aplicacion&lt;/span&gt; en la que estas); cuando finalmente termina, nos presenta este pequeño mensajito:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cofcJplmJ2Q/Sr01RL_FONI/AAAAAAAABOw/tSge2gmYTs0/s1600-h/Where_is_the_ok_button.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 237px; height: 60px;" src="http://1.bp.blogspot.com/_cofcJplmJ2Q/Sr01RL_FONI/AAAAAAAABOw/tSge2gmYTs0/s400/Where_is_the_ok_button.png" alt="" id="BLOGGER_PHOTO_ID_5385519298796402898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Talvez solo me ha pasado a mi, pero me tomo mucho tiempo (y me refiero a meses) para darme cuenta que no se referia a un &lt;span style="font-weight: bold;"&gt;boton "OK"&lt;/span&gt;, sino que simplemente ya se podia desconectar el aparato; supongo que sera muy intuitivo.&lt;br /&gt;&lt;br /&gt;Aunque, no soy el unico que piensa que &lt;a href="http://www.google.com.mx/search?q=itunes+mierda"&gt;iTunes es pesimo&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-4823563060258008368?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/4823563060258008368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=4823563060258008368' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/4823563060258008368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/4823563060258008368'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/09/la-intuitividad-de-apple-el-boton-ok.html' title='La intuitividad de Apple: El boton OK perdido'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cofcJplmJ2Q/Sr01RL_FONI/AAAAAAAABOw/tSge2gmYTs0/s72-c/Where_is_the_ok_button.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-843337876195998114</id><published>2009-09-23T10:07:00.005-06:00</published><updated>2009-09-23T15:31:38.828-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><title type='text'>Ping no debe ser usado para probar si hay conexion</title><content type='html'>&lt;div&gt;&lt;b&gt;Si un "ping" falla, lo unico que quiere decir es que fallo el ping, no te dice nada sobre si hay o no conectividad/visibilidad entre dos puntos.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Durante una platica hoy en Twitter, me hicieron recordar la frecuencia con la que muchas personas usan &lt;b&gt;ping&lt;/b&gt; para probar conectividad/visibilidad entre dos computadoras, lo que muchos no saben es que ping es simplemente un servicio mas y puede ser deshabilitado o bloqueado - algo cada vez mas frecuente en estos dias -, lo cual hace que este metodo de usar ping sea inservible, otro detalle es que cuando quieres probar visibilidad/conectividad, generalmente lo que quieres es usar un servicio especifico, como conexion a DB, web, etc; por lo tanto una opcion que es muchisimo mejor, es usar el comando &lt;b&gt;telnet&lt;/b&gt;, al usar telnet no solo probaras conectividad, sino que sabras especificamente si puedes accesar el servicio que requieres.&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Algunos de los puertos mas frecuentes:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;20, 21 Standard FTP&lt;/div&gt;&lt;div&gt;23  Telnet default&lt;/div&gt;&lt;div&gt;25  SMTP&lt;/div&gt;&lt;div&gt;80  Standard web&lt;/div&gt;&lt;div&gt;115 SFTP&lt;/div&gt;&lt;div&gt;443 Standard secure web&lt;/div&gt;&lt;div&gt;139 NETBIOS (file and printer sharing in Windows)&lt;/div&gt;&lt;div&gt;143 IMAP&lt;/div&gt;&lt;div&gt;445 SMB (para conectarse a Windows desde otros SOs)&lt;/div&gt;&lt;div&gt;1433 SQL&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.comptechdoc.org/independent/networking/guide/netports.html"&gt;Puedes encontrar una lista mas grande aca&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Por ejemplo si quisieramos probar si se puede acceder a una base de datos SQL:&lt;/div&gt;&lt;div&gt;telnet 192.168.1.2 1433&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cuando se logra una conexion exitosamente, normalmente se ve una pantalla negra, si la conexion falla, telnet te dara un mensaje de error&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Finalmente, como nota adicional, en caso de que la conexion falle, podrias usar &lt;b&gt;tracert -d [direccion ip]&lt;/b&gt; para obtener mas detalles de donde es que falla la conexion&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/26067392-843337876195998114?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/843337876195998114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=843337876195998114' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/843337876195998114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/843337876195998114'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/09/ping-no-debe-ser-usado-para-probar-si.html' title='Ping no debe ser usado para probar si hay conexion'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-1335662929562799691</id><published>2009-07-28T15:03:00.003-06:00</published><updated>2009-07-28T15:13:53.705-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='files'/><category scheme='http://www.blogger.com/atom/ns#' term='download'/><title type='text'>Traduccion de +14,000 terminos tecnicos</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cofcJplmJ2Q/Sm9p5APQ-zI/AAAAAAAABLw/PLcmQbd58bI/s1600-h/Traduccion.gif"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 400px; height: 294px;" src="http://2.bp.blogspot.com/_cofcJplmJ2Q/Sm9p5APQ-zI/AAAAAAAABLw/PLcmQbd58bI/s400/Traduccion.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5363622109259037490" /&gt;&lt;/a&gt;&lt;br /&gt;Hoy salio en twitter el tema de la traduccion de terminos tecnicos, de hecho hasta decidimos crear una pagina con terminos tecnicos comunes, la cual pueden encontrar aca: &lt;a href="http://altnet-hispano.pbworks.com/Traducci%C3%B3n-de-terminos"&gt;Traduccion de terminos&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Despues recorde que por algun lado habia yo visto un archivo excel publicado por Microsoft que contenia traducciones de muchos terminos en ingles, la traduccion no solo es al Español, sino a unos 45 idiomas&lt;br /&gt;&lt;br /&gt;bastante util el archivito, lo pueden encontrar aqui: &lt;a href="http://download.microsoft.com/download/5/9/3/59354f90-9bb1-4374-b6c8-f68d73fd3f3b/microsoft_terminology.xls"&gt;Microsoft Terminology&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Este post es traido a ustedes por: Un-post-mas-para-servir-de-futuro-recordatorio&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-1335662929562799691?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/1335662929562799691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=1335662929562799691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1335662929562799691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1335662929562799691'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/07/traduccion-de-14000-terminos-tecnicos.html' title='Traduccion de +14,000 terminos tecnicos'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cofcJplmJ2Q/Sm9p5APQ-zI/AAAAAAAABLw/PLcmQbd58bI/s72-c/Traduccion.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-7900342159666404782</id><published>2009-07-17T11:53:00.002-06:00</published><updated>2009-07-17T12:45:34.027-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MS Outlook'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='trucos'/><title type='text'>Como guardar archivos .GIF desde MS Outlook</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cofcJplmJ2Q/SmC4MVE9BLI/AAAAAAAABJc/lGlNPH_lFd4/s1600-h/msoutlook.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 255px;" src="http://1.bp.blogspot.com/_cofcJplmJ2Q/SmC4MVE9BLI/AAAAAAAABJc/lGlNPH_lFd4/s320/msoutlook.jpg" alt="" id="BLOGGER_PHOTO_ID_5359486078526751922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Por alguna razon MS Outlook no tiene una &lt;strike&gt;opcion&lt;/strike&gt; forma facil para guardar archibos GIF directamente desde un mensaje; la unica opcion es que te permite guardarlos como BMP, pero eso haria que perdieras la animacion en si, de hecho tampoco te deja guardar archivos .JPG, .PNG etc, el unico formato que te da como opcion es BMP, pero hay muchas ocasiones en las que queremos guardar el archivo original, de vez en cuando yo mismo necesito esto y se me olvida como es que lo he hecho antes, asi que decidi utilizar mi blog una vez mas para poder recurrir a el en un futuro que lo necesite de nuevo, esto de escribir algo en tu blog para recordarlo luego funciona muy bien, se los recomiendo. Pues bien, aqui esta la solucion.&lt;br /&gt;&lt;br /&gt;Les menti en el titulo, si hay forma de guardar archivos .GIF desde MS Outlook, pero por los pasos requeridos mejor no me meto ahi, pero les dire que hay una forma mucho mas facil de hacerlo, solo tienes que &lt;span style="font-weight: bold;"&gt;envia&lt;/span&gt;rte &lt;span style="font-weight: bold;"&gt;el mensaje a&lt;/span&gt; una cuenta de web email, como &lt;span style="font-weight: bold;"&gt;GMail&lt;/span&gt;, Yahoo o Hotmail (que conste que no he probado en Yahoo ni Hotmail, pero creo que funciona ahi tambien)&lt;br /&gt;&lt;br /&gt;Una vez que lo abras en tu correo web lo podras guardar normalmente como uno esperaria que se puede hacer, dando click derecho en la imagen, guardar como... y ya esta&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-7900342159666404782?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/7900342159666404782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=7900342159666404782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/7900342159666404782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/7900342159666404782'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/07/como-guardar-archivos-gif-desde-ms.html' title='Como guardar archivos .GIF desde MS Outlook'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cofcJplmJ2Q/SmC4MVE9BLI/AAAAAAAABJc/lGlNPH_lFd4/s72-c/msoutlook.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-3987972479455323404</id><published>2009-07-15T11:40:00.003-06:00</published><updated>2009-07-15T16:11:47.426-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><title type='text'>Estas cansado de XML? yo tambien. proyecto JINI.</title><content type='html'>Nunca me ha gustado XML, lo he odiado desde "el primer dia", pienso que el formato es demasiado ineficiente, demasiado inflado; He tenido algunas ideas sobre que se puede hacer para reducir el tamaño de archivos xml, tal como tener una cabecera con la definicion de la estructura y otras dias, pero el punto de este post no es hablar sobre esas ideas, sino de mi propuesta para comenzar a dejar de usar XML.&lt;br /&gt;&lt;br /&gt;Un area en que XML me parece particularmente molesto es en los archivos de configuracion, y mi propuesta para atacar este problema consiste en formalizar un &lt;span style="font-style: italic;"&gt;nuevo&lt;/span&gt; formato que por ahora llamo JINI. JINI es un subconjunto de JSON similar a los viejos archivos .ini en simplicidad y es usado especificamente para configuracion para reemplazar todos esos archivos app.config&lt;br /&gt;&lt;br /&gt;Beneficios&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Simple&lt;/span&gt;&lt;br /&gt;- No mas &lt;&gt;&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Simple&lt;/span&gt;&lt;br /&gt;- mas corto&lt;br /&gt;- mas facil de leer&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Mas Simple&lt;/span&gt;&lt;br /&gt;- Todo lo que se puede expresar en XML, se puede expresar en JINI, pero es mas &lt;span style="font-weight: bold;"&gt;simple&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lo malo es que "jini" ya esta tomado (segun los 2 millones de resultados en Google y 714K Bing)&lt;br /&gt;&lt;br /&gt;Pense que la idea ya se le habia ocurrido a alguien pero una busqueda rapida me dio cero resultados, asi que pense que seria bueno sacar la idea y ver que opinan al respecto&lt;br /&gt;&lt;br /&gt;nota: me comentaron sobre &lt;a href="http://www.yaml.org/"&gt;YAML&lt;/a&gt;, pero no me convence mucho&lt;br /&gt;&lt;br /&gt;que piensan de la idea? son felices con XML?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-3987972479455323404?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/3987972479455323404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=3987972479455323404' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/3987972479455323404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/3987972479455323404'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/07/estas-cansado-de-xml-yo-tambien.html' title='Estas cansado de XML? yo tambien. proyecto JINI.'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-2133547541986233079</id><published>2009-07-14T12:31:00.003-06:00</published><updated>2009-07-14T13:02:17.124-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='literatura de software'/><category scheme='http://www.blogger.com/atom/ns#' term='analogias'/><title type='text'>La programacion es como un juego de ajedrez</title><content type='html'>Por mucho tiempo he pensado que el desarrollo de software es como un juego de ajedrez, pero aparentemente nadie ha hecho esta analogia antes, solo basta &lt;a href="http://www.bing.com/search?q=%22programacion+es+como+un+juego+de+ajedrez%22"&gt;*bingearlo*&lt;/a&gt; para ver que hay exactamente (al tiempo de escribir este post) &lt;span style="font-weight: bold;"&gt;cero &lt;/span&gt;resultados (los mismos resultados en Google), afortunadamente esta situacion esta a punto de revertirse al tiempo que escribo este post y todo mundo vee la luz... o talvez no&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cofcJplmJ2Q/SlzO8ha0jwI/AAAAAAAABJU/Xfu8EB7GfqY/s1600-h/chess_programming.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 278px; height: 400px;" src="http://1.bp.blogspot.com/_cofcJplmJ2Q/SlzO8ha0jwI/AAAAAAAABJU/Xfu8EB7GfqY/s400/chess_programming.jpg" alt="" id="BLOGGER_PHOTO_ID_5358385195822386946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Y bien, permitanme explicarles un poco sobre mi analogia&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;El programador mediocre&lt;/span&gt;&lt;br /&gt;Uno podria argumentar que este es el programador promedio, pero eso es otra historia, este &lt;span style="font-style: italic;"&gt;hace un movimiento&lt;/span&gt; sin pensar en los &lt;span style="font-weight: bold;"&gt;efectos secundarios&lt;/span&gt;, su capacidad de analisis es muy poca, hay tantos efectos secundarios (introducir nuevos bugs, seguridad, etc) pero este jugador ni siquiera esta enterado de ello, basicamente se basa en el debugueador y si corre en su maquina entonces esta listo; cuando las cosas inevitablemente no funcionan en produccion el simplemente hace otro movimiento que parece corregir el problema, este ciclo es frecuentemente repetido, si le das un proyecto grande a este tipo muy seguramente hara un movimiento estupido que resultara en &lt;span style="font-weight: bold;"&gt;Jaque Mate&lt;/span&gt; en el proyecto&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;El buen programador&lt;/span&gt;&lt;br /&gt;Este analiza diferentes rutas y escoge la que cree adecuada, este jugador puede hacer un buen juego, de vez en cuando su analisis falla y comete algunos errores, pero el puede aprender de estos, este tipo normalmente entrega buen software con pocos errores que puede corregir rapidamente sin muchos problemas&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;El mejor&lt;/span&gt;&lt;br /&gt;Genio, Guru o como quieras llamarle, este tipo puede hacer una gran cantidad de movimientos rapidamente, y todo en su cabeza, esta informado siempre de las mas recientes tecnicas para vencer a su oponente, pero no cae en el error de simplemente usarlas en su juego, sino que las prueba primero en sus proyectos privados y una vez que el mismo comprobo que son utiles entonces las usa en proyectos reales, conoce las tecnicas mas rapidas, cortas y que le dan el mayor beneficio, sabe las tecnicas para usar en los proyectos pequeños y las que debe usar en proyectos grandes, y sabe tambien que &lt;span style="font-weight: bold;"&gt;son muy diferentes&lt;/span&gt;, este jugador sabe lo que el oponente esta pensando, sabe como respondera el oponente a cada uno de sus movimientos asi que escoge cuidadosamente el mejor movimiento, este jugador conoce los &lt;span style="font-weight: bold;"&gt;efectos secundarios&lt;/span&gt;; las palabras "funciona en mi maquina" no estan dentro de su vocabulario.&lt;br /&gt;&lt;br /&gt;Como podran ver las diferencias principales en mi analogia son la capacidad de analisis (seleccionar el movimiento) y los efectos secundarios (que pasa despues de hacer el movimiento). El oponente es tu proyecto de software, el movimiento es escribir el codigo, los efectos secundarios son todo lo demas que es afectado por este.&lt;br /&gt;&lt;br /&gt;Cuando fue la ultima vez que creaste un nuevo bug cuando arreglabas aquel otro o agregabas funcionalidad a tu applicacion? o cuando *ellos* encontraron errores en la aplicacion justo despues de lanzarla a produccion? o cuando funciono en tu maquina pero no en el servidor?&lt;br /&gt;&lt;br /&gt;Cada vez que vas a hacer un movimiento, detente un momento y piensa en los efectos secundarios, &lt;span style="font-weight: bold;"&gt;siempre hay efectos secundarios&lt;/span&gt;, si no puedes identificarlos, hay herramientas que te pueden ayudar a pensar, como las &lt;span style="font-weight: bold;"&gt;pruebas unitarias&lt;/span&gt;, y entre mas lo practiques, mejor &lt;span style="font-style: italic;"&gt;jugador&lt;/span&gt; seras, y eso es una promesa&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-2133547541986233079?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/2133547541986233079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=2133547541986233079' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2133547541986233079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2133547541986233079'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/07/la-programacion-es-como-un-juego-de.html' title='La programacion es como un juego de ajedrez'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cofcJplmJ2Q/SlzO8ha0jwI/AAAAAAAABJU/Xfu8EB7GfqY/s72-c/chess_programming.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-660465227845486155</id><published>2009-06-30T10:09:00.002-06:00</published><updated>2009-06-30T10:17:42.599-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><title type='text'>Firefox tarda mucho para correr despues de actualizar a 3.5</title><content type='html'>Firefox 3.5 (nombre clave &lt;span style="font-weight: bold;"&gt;Shirekoto&lt;/span&gt;) esta listo, &lt;a href="http://www.spreadfirefox.com/shiretokoshock"&gt;todos a bajarlo&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Despues de actualizar y correrlo la primera vez, me salio esta pequeña ventana&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cofcJplmJ2Q/Sko2Z5_KPoI/AAAAAAAABGI/RsBqDc93ZQw/s1600-h/firefox3_5update.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 123px; height: 33px;" src="http://2.bp.blogspot.com/_cofcJplmJ2Q/Sko2Z5_KPoI/AAAAAAAABGI/RsBqDc93ZQw/s400/firefox3_5update.PNG" alt="" id="BLOGGER_PHOTO_ID_5353150925773618818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Me tomo un rato para darme cuenta que esta ventanita estaba siquiera en mi pantalla, pense que simplemente estaba &lt;span style="font-weight: bold;"&gt;tardando mucho para correr la primera vez&lt;/span&gt;, pero luego ya me parecio demasiado tiempo, entonces di click en la barra de tareas, en el icono de firefox y fue cuando vi la ventanita esta, trate de redimensionarla para ver los contenidos, pero no me dejo, lo unico que pude hacer fue cerrarla y ya Firefox corrio normal&lt;br /&gt;&lt;br /&gt;Asi que solo lo agregue aqui por si a alguien le pasa lo mismo, espero que sea de ayuda&lt;br /&gt;&lt;br /&gt;sintomas: Firefox tarda mucho en correr la primera vez despues de actualizar a 3.5&lt;br /&gt;solucion: click en la barra de tareas, en el icono de firefox y encuentra la ventanita esta, cierrala y Firefox correra normal&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-660465227845486155?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/660465227845486155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=660465227845486155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/660465227845486155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/660465227845486155'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/06/firefox-tarda-mucho-para-correr-despues.html' title='Firefox tarda mucho para correr despues de actualizar a 3.5'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cofcJplmJ2Q/Sko2Z5_KPoI/AAAAAAAABGI/RsBqDc93ZQw/s72-c/firefox3_5update.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-6353458973419366010</id><published>2009-06-23T13:15:00.004-06:00</published><updated>2009-06-23T13:45:38.395-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net DIB Bitmap TIFF C#'/><title type='text'>Como convertir DIB a Bitmap</title><content type='html'>&lt;p&gt;El fin de semana pasado un amigo me pidio ayuda con un codigo para convertir DIB a Bitmap en .NET, habia encontrado un codigo que casi hacia todo lo que necesitaba, pero la imagen se cortaba en los lados, supusimos que el problema era con el codigo que obtenia un puntero al bitmap, asi que investigamos mas y encontramos un codigo que supuestamente arreglaba ese problema, solo tuvimos que hacer unos cambios y un par de arreglos para que funcionara correctamente. Como no encontramos una solucion completa por ningun lado decidi escribir este post ya que vi muchisima gente con este problema preguntando en muchos foros en Internet, asi que espero que pueda ser util, sin mas, aqui va la solucion:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Primero tienes que agregar una referencia a System.Drawing.dll en tu proyecto, luego agrega esto al &lt;span style="font-weight: bold;"&gt;uses&lt;/span&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:green;"&gt;//Name spaces needed&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span style="color:blue;"&gt;using &lt;/span&gt;System.Drawing;&lt;br /&gt;&lt;span style="color:blue;"&gt;using &lt;/span&gt;System.Drawing.Imaging;&lt;br /&gt;&lt;span style="color:blue;"&gt;using &lt;/span&gt;System.IO;&lt;br /&gt;&lt;span style="color:blue;"&gt;using &lt;/span&gt;System.Reflection;&lt;br /&gt;&lt;span style="color:blue;"&gt;using &lt;/span&gt;System.Runtime.InteropServices;&lt;/pre&gt;El siguiente paso es declarar la estructura BITMAPINFOHEADER, esta puede estar declarada &lt;span style="font-weight: bold;"&gt;fuera de tu clase&lt;/span&gt;:&lt;br /&gt;&lt;pre class="code"&gt;[&lt;span style="color: rgb(43, 145, 175);"&gt;StructLayout&lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;LayoutKind&lt;/span&gt;.Sequential, Pack = 1)]&lt;br /&gt;&lt;span style="color:blue;"&gt;public struct &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;BITMAPINFOHEADER&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;  &lt;span style="color:blue;"&gt;public uint &lt;/span&gt;biSize;&lt;br /&gt;  &lt;span style="color:blue;"&gt;public int &lt;/span&gt;biWidth;&lt;br /&gt;  &lt;span style="color:blue;"&gt;public int &lt;/span&gt;biHeight;&lt;br /&gt;  &lt;span style="color:blue;"&gt;public ushort &lt;/span&gt;biPlanes;&lt;br /&gt;  &lt;span style="color:blue;"&gt;public ushort &lt;/span&gt;biBitCount;&lt;br /&gt;  &lt;span style="color:blue;"&gt;public uint &lt;/span&gt;biCompression;&lt;br /&gt;  &lt;span style="color:blue;"&gt;public uint &lt;/span&gt;biSizeImage;&lt;br /&gt;  &lt;span style="color:blue;"&gt;public int &lt;/span&gt;biXPelsPerMeter;&lt;br /&gt;  &lt;span style="color:blue;"&gt;public int &lt;/span&gt;biYPelsPerMeter;&lt;br /&gt;  &lt;span style="color:blue;"&gt;public uint &lt;/span&gt;biClrUsed;&lt;br /&gt;  &lt;span style="color:blue;"&gt;public uint &lt;/span&gt;biClrImportant;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:blue;"&gt;public void &lt;/span&gt;Init()&lt;br /&gt;  {&lt;br /&gt;      biSize = (&lt;span style="color:blue;"&gt;uint&lt;/span&gt;)&lt;span style="color: rgb(43, 145, 175);"&gt;Marshal&lt;/span&gt;.SizeOf(&lt;span style="color:blue;"&gt;this&lt;/span&gt;);&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Luego necesitas agregar esto para importar una funcion de GdiPlus.dll&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color:green;"&gt;//GDI External method needed Place it within your class&lt;br /&gt;&lt;/span&gt;[&lt;span style="color: rgb(43, 145, 175);"&gt;DllImport&lt;/span&gt;(&lt;span style="color: rgb(163, 21, 21);"&gt;"GdiPlus.dll"&lt;/span&gt;, CharSet = &lt;span style="color: rgb(43, 145, 175);"&gt;CharSet&lt;/span&gt;.Unicode, ExactSpelling = &lt;span style="color:blue;"&gt;true&lt;/span&gt;)]&lt;br /&gt;&lt;span style="color:blue;"&gt;private static extern int &lt;/span&gt;GdipCreateBitmapFromGdiDib(&lt;span style="color: rgb(43, 145, 175);"&gt;IntPtr &lt;/span&gt;pBIH,&lt;br /&gt;  &lt;span style="color: rgb(43, 145, 175);"&gt;IntPtr &lt;/span&gt;pPix, &lt;span style="color:blue;"&gt;out &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;IntPtr &lt;/span&gt;pBitmap);&lt;/pre&gt;Y bien, ahora podemos irnos al codigo en si que nos servira para convertir el DIB a Bitmap, notese el uso de la funcion &lt;span style="font-weight: bold;"&gt;GetPixelInfo&lt;/span&gt;, aqui precisamente estaba la raiz de nuestros problemas; la funcion &lt;span style="font-weight: bold;"&gt;BitmapFromDIB&lt;/span&gt; que encuentras por todo internet no tiene este codigo asi que eso hace que no funcione en muchos casos. De hecho la funcion esta que anda rondando por internet, toma un &lt;span style="font-weight: bold;"&gt;parametro pPix&lt;/span&gt; pero nunca menciona como obtener este valor. Este codigo necesita estar declarado&lt;span style="font-weight: bold;"&gt; dentro de tu clase&lt;/span&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color:green;"&gt;//THIS METHOD SAVES THE CONTENTS OF THE DIB POINTER INTO A BITMAP OBJECT&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;private static &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Bitmap &lt;/span&gt;BitmapFromDIB(&lt;span style="color: rgb(43, 145, 175);"&gt;IntPtr &lt;/span&gt;pDIB)&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color:green;"&gt;//get pointer to bitmap header info      &lt;br /&gt;  &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;IntPtr &lt;/span&gt;pPix = GetPixelInfo(pDIB);&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:green;"&gt;//Call external GDI method&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;MethodInfo &lt;/span&gt;mi = &lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;Bitmap&lt;/span&gt;).GetMethod(&lt;span style="color: rgb(163, 21, 21);"&gt;"FromGDIplus"&lt;/span&gt;, &lt;span style="color: rgb(43, 145, 175);"&gt;BindingFlags&lt;/span&gt;.Static | &lt;span style="color: rgb(43, 145, 175);"&gt;BindingFlags&lt;/span&gt;.NonPublic);&lt;br /&gt;  &lt;span style="color:blue;"&gt;if &lt;/span&gt;(mi == &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;br /&gt;      &lt;span style="color:blue;"&gt;return null&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:green;"&gt;// Initialize memory pointer where Bitmap will be saved&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;IntPtr &lt;/span&gt;pBmp = &lt;span style="color: rgb(43, 145, 175);"&gt;IntPtr&lt;/span&gt;.Zero;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:green;"&gt;//Call external methosd that saves bitmap into pointer&lt;br /&gt;  &lt;/span&gt;&lt;span style="color:blue;"&gt;int &lt;/span&gt;status = GdipCreateBitmapFromGdiDib(pDIB, pPix, &lt;span style="color:blue;"&gt;out &lt;/span&gt;pBmp);&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:green;"&gt;//If success return bitmap, if failed return null&lt;br /&gt;  &lt;/span&gt;&lt;span style="color:blue;"&gt;if &lt;/span&gt;((status == 0) &amp;amp;&amp;amp; (pBmp != &lt;span style="color: rgb(43, 145, 175);"&gt;IntPtr&lt;/span&gt;.Zero))&lt;br /&gt;      &lt;span style="color:blue;"&gt;return &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;Bitmap&lt;/span&gt;)mi.Invoke(&lt;span style="color:blue;"&gt;null&lt;/span&gt;, &lt;span style="color:blue;"&gt;new object&lt;/span&gt;[] { pBmp });&lt;br /&gt;  &lt;span style="color:blue;"&gt;else&lt;br /&gt;      return null&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:green;"&gt;//THIS METHOD GETS THE POINTER TO THE BITMAP HEADER INFO&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;private static &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;IntPtr &lt;/span&gt;GetPixelInfo(&lt;span style="color: rgb(43, 145, 175);"&gt;IntPtr &lt;/span&gt;bmpPtr)&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color: rgb(43, 145, 175);"&gt;BITMAPINFOHEADER &lt;/span&gt;bmi = (&lt;span style="color: rgb(43, 145, 175);"&gt;BITMAPINFOHEADER&lt;/span&gt;)&lt;span style="color: rgb(43, 145, 175);"&gt;Marshal&lt;/span&gt;.PtrToStructure(bmpPtr, &lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;BITMAPINFOHEADER&lt;/span&gt;));&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:blue;"&gt;if &lt;/span&gt;(bmi.biSizeImage == 0)&lt;br /&gt;      bmi.biSizeImage = (&lt;span style="color:blue;"&gt;uint&lt;/span&gt;)(((((bmi.biWidth * bmi.biBitCount) + 31) &amp;amp; ~31) &amp;gt;&amp;gt; 3) * bmi.biHeight);&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:blue;"&gt;int &lt;/span&gt;p = (&lt;span style="color:blue;"&gt;int&lt;/span&gt;)bmi.biClrUsed;&lt;br /&gt;  &lt;span style="color:blue;"&gt;if &lt;/span&gt;((p == 0) &amp;amp;&amp;amp; (bmi.biBitCount &amp;lt;= 8))&lt;br /&gt;      p = 1 &amp;lt;&amp;lt; bmi.biBitCount;&lt;br /&gt;  p = (p * 4) + (&lt;span style="color:blue;"&gt;int&lt;/span&gt;)bmi.biSize + (&lt;span style="color:blue;"&gt;int&lt;/span&gt;)bmpPtr;&lt;br /&gt;  &lt;span style="color:blue;"&gt;return &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;IntPtr&lt;/span&gt;)p;&lt;br /&gt;}&lt;/pre&gt;Finalmente, como algo agregado, lo que mi amigo realmente necesitaba era convertir de DIB a TIFF (grupo 4), asi que escribio una funcion mas que usa la funcion previa de &lt;span style="font-weight: bold;"&gt;BitmapFromDIB&lt;/span&gt; function and allows you to set the image resolution&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;private void &lt;/span&gt;SavehDibToTiff(&lt;span style="color:blue;"&gt;int &lt;/span&gt;hDIB, &lt;span style="color:blue;"&gt;string &lt;/span&gt;fileName, &lt;span style="color:blue;"&gt;int &lt;/span&gt;xRes, &lt;span style="color:blue;"&gt;int &lt;/span&gt;yRes)&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color:green;"&gt;//Identify the memory pointer to the DIB Handler (hDIB)&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;IntPtr &lt;/span&gt;dibPtr = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;IntPtr&lt;/span&gt;(hDIB);&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:green;"&gt;//Save the contents of DIB pointer into bitmap object&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Bitmap &lt;/span&gt;myBitmap = BitmapFromDIB(dibPtr);&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:green;"&gt;//Set resolution if needed&lt;br /&gt;  &lt;/span&gt;&lt;span style="color:blue;"&gt;if &lt;/span&gt;(xRes &amp;gt;0 &amp;amp;&amp;amp; yRes&amp;gt;0)&lt;br /&gt;      myBitmap.SetResolution(xRes, yRes);&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:green;"&gt;//Create an instance of the windows TIFF encoder&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;ImageCodecInfo &lt;/span&gt;ici = GetEncoderInfo(&lt;span style="color: rgb(163, 21, 21);"&gt;"image/tiff"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:green;"&gt;//Define encoder parameters&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;EncoderParameters &lt;/span&gt;eps = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;EncoderParameters&lt;/span&gt;(1); &lt;span style="color:green;"&gt;// only one parameter in this case (compression)&lt;br /&gt;&lt;br /&gt;  //Create an Encoder Value for TIFF compression Group 4&lt;br /&gt;  &lt;/span&gt;&lt;span style="color:blue;"&gt;long &lt;/span&gt;ev = (&lt;span style="color:blue;"&gt;long&lt;/span&gt;)&lt;span style="color: rgb(43, 145, 175);"&gt;EncoderValue&lt;/span&gt;.CompressionCCITT4;&lt;br /&gt;  eps.Param[0] = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;EncoderParameter&lt;/span&gt;(System.Drawing.Imaging.&lt;span style="color: rgb(43, 145, 175);"&gt;Encoder&lt;/span&gt;.Compression, ev);&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:green;"&gt;//Save file                      &lt;br /&gt;  &lt;/span&gt;myBitmap.Save(fileName, ici, eps);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color:green;"&gt;//Helper to get Encoder from Windows for file type.&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;private static &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;ImageCodecInfo &lt;/span&gt;GetEncoderInfo(&lt;span style="color: rgb(43, 145, 175);"&gt;String &lt;/span&gt;mimeType)&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color: rgb(43, 145, 175);"&gt;ImageCodecInfo&lt;/span&gt;[] encoders = &lt;span style="color: rgb(43, 145, 175);"&gt;ImageCodecInfo&lt;/span&gt;.GetImageEncoders();&lt;br /&gt;  &lt;span style="color:blue;"&gt;for &lt;/span&gt;(&lt;span style="color:blue;"&gt;int &lt;/span&gt;j = 0; j &amp;lt; encoders.Length; ++j)&lt;br /&gt;  {&lt;br /&gt;      &lt;span style="color:blue;"&gt;if &lt;/span&gt;(encoders[j].MimeType == mimeType)&lt;br /&gt;          &lt;span style="color:blue;"&gt;return &lt;/span&gt;encoders[j];&lt;br /&gt;  }&lt;br /&gt;  &lt;span style="color:blue;"&gt;return null&lt;/span&gt;;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Y eso es todo, espero les sea de utilidad, gracias a &lt;a href="http://twitter.com/DannyAg"&gt;Danny&lt;/a&gt; por darme el codigo final y agregarle comentarios&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-6353458973419366010?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/6353458973419366010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=6353458973419366010' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6353458973419366010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6353458973419366010'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/06/como-convertir-dib-bitmap.html' title='Como convertir DIB a Bitmap'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-7718249962523729516</id><published>2009-06-13T15:25:00.002-06:00</published><updated>2009-06-13T15:32:53.603-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IE8'/><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='usabilidad'/><title type='text'>Porque las pestañas de IE tienen colores?</title><content type='html'>&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_cofcJplmJ2Q/SjQZIrhVYjI/AAAAAAAABDY/39bHa-pi-Aw/s1600-h/colored%20tabs%5B3%5D.png"&gt;&lt;img style="border: 0px none ; display: block; float: none; margin-left: auto; margin-right: auto;" title="colored tabs" alt="colored tabs" src="http://lh3.ggpht.com/_cofcJplmJ2Q/SjQZJGfy17I/AAAAAAAABDc/jytb1sI9vP0/colored%20tabs_thumb%5B1%5D.png?imgmax=800" width="244" border="0" height="44" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Esto es algo de lo que me gusto mucho en Internet Explorer 8, pero no todo mundo capta inmediatamente el significado de los colores. Los colores son &lt;span style="font-weight: bold;"&gt;para agrupar pestañas relacionadas entre si&lt;/span&gt;, osea que si tu sigues un link de una pagina y IE abre una pestaña, &lt;span style="font-weight: bold;"&gt;asignara el mismo color que la pestaña previa&lt;/span&gt; de donde se abrio esta nueva y de esta manera podras ver facilmente que una fue derivada de la otra, esto es muy util en estos dias que uno normalmente mantiene muchisimas pestañas abiertas al mismo tiempo, unas para cuestiones personales, otras para trabajo, busquedas, etc, el tenerlas agrupadas por colores nos permite ver cuales estan relacionadas entre si.&lt;/p&gt;&lt;p&gt;  La motivacion a escribir este post fue precisamente porque alguien me pregunto que significaban los colores, asi que pense que seguramente habria mas gente que tendria la misma pregunta.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-7718249962523729516?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/7718249962523729516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=7718249962523729516' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/7718249962523729516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/7718249962523729516'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/06/porque-las-pestanas-de-ie-tienen.html' title='Porque las pestañas de IE tienen colores?'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_cofcJplmJ2Q/SjQZJGfy17I/AAAAAAAABDc/jytb1sI9vP0/s72-c/colored%20tabs_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-5217725685066884950</id><published>2009-05-02T00:09:00.013-06:00</published><updated>2009-09-22T11:38:10.081-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><title type='text'>Twitter para desarrolladores</title><content type='html'>Durante el #followfriday de hoy en &lt;a href="http://www.twitter.com/"&gt;Twitter&lt;/a&gt; &lt;a href="http://twitter.com/ebersys/statuses/1675751752"&gt;se me ocurrio crear una lista de los desarrolladores de &lt;span style="font-weight: bold;"&gt;habla hispana&lt;/span&gt;&lt;/a&gt; que &lt;span style="font-weight: bold;"&gt;regularmente escriban&lt;/span&gt; cosas relacionadas con el &lt;span style="font-weight: bold;"&gt;desarrollo de software&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Es practicamente imposible (y creo que seria un desperdicio total) que alguien escriba 100% cosas relacionadas al desarrollo en twitter, pero esta gente son los que yo he notado que son mas regulares en mantenerse apegados al tema.&lt;br /&gt;&lt;br /&gt;Espero sea de utilidad para los programadores que quieran entrar en contacto con otros programadores en Twitter, aun para los que no han entrado a twitter y les interese poder dialogar con gente de su mismo medio, este seria un buen medio para hacerlo.&lt;br /&gt;&lt;br /&gt;Sin mas, aqui esta la lista, la cual estare actualizando constantemente:&lt;br /&gt;&lt;!-- &lt;a href="http://twitter.com/ajlopez"&gt;@ajlopez&lt;/a&gt; --&gt;&lt;br /&gt;&lt;a href="http://twitter.com/pelosbriseno"&gt;@pelosbriseno&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twitter.com/alexserver"&gt;@alexserver&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twitter.com/apanitsch"&gt;@apanitsch&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twitter.com/ddaz"&gt;@ddaz&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twitter.com/devsoftx"&gt;@devsoftx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twitter.com/fcastellanos"&gt;@fcastellanos&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twitter.com/ferglo"&gt;@ferglo&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twitter.com/gabo"&gt;@gabo&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twitter.com/javier_castanon"&gt;@javier_castanon&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twitter.com/Jersson"&gt;@Jersson&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twitter.com/jfroma"&gt;@jfroma&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twitter.com/jorgegamba"&gt;@jorgegamba&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twitter.com/HardBit"&gt;@HardBit&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twitter.com/mario_chavez"&gt;@mario_chavez&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twitter.com/mhcornejo"&gt;@mhcornejo&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twitter.com/mmonterroca"&gt;@mmonterroca&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twitter.com/scasware"&gt;@scasware&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twitter.com/sergiotarrillo"&gt;@sergiotarrillo&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twitter.com/SrBichi"&gt;@SrBichi&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Y por supuesto &lt;a href="http://twitter.com/ebersys"&gt;@ebersys&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Esta es mi lista inicial, la ire actualizando como vaya identificando mas usuarios, si tienen algunos candidatos para mi lista por favor haganmelo saber aqui o en twitter, mis unicos requisitos son que escriban en español y que regularmente escriban algo relacionado con el desarrollo de software&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-5217725685066884950?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/5217725685066884950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=5217725685066884950' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5217725685066884950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5217725685066884950'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/05/twitter-para-desarrolladores.html' title='Twitter para desarrolladores'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-1857352352826189705</id><published>2009-04-16T16:13:00.004-06:00</published><updated>2009-04-17T14:21:44.934-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='refactorizacion'/><category scheme='http://www.blogger.com/atom/ns#' term='quiz'/><category scheme='http://www.blogger.com/atom/ns#' term='codigo'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Unir cadenas con comas</title><content type='html'>Hace unos dias &lt;a href="http://blogs.msdn.com/ericlippert/archive/2009/04/15/comma-quibbling.aspx"&gt;Eric publico un problema&lt;/a&gt;, al principio me dio flojera responderlo, pero al ver el numero de respuestas decidi hacerlo agregando el reto personal de ser la respuesta mas corta (con mi equipo anterior competiamos en ver quien podia refactorizar mas), asi que aqui esta:&lt;br /&gt;El problema:&lt;br /&gt;Escribir una funcion que tome un IEnumerable&lt;string&gt; no nulo y regrese una cadena con las siguentes caracteristicas: &lt;p&gt;(1) Si la secuencia esta vacia, regresar "{}".&lt;br /&gt;(2) Si la secuencia contiene un solo elemento "ABC" el resultado sera "{ABC}".&lt;br /&gt;(3) Si la secuencia contiene 2 elementos "ABC", "DEF" El resultado sera "{ABC and DEF}".&lt;br /&gt;(4) Si la secuencia contiene mas de 2 elementos "ABC", "DEF", "G", "H" el resultado sera "{ABC, DEF, G and H}". (Noten que los ultimos 2 elementos no estan unidos por coma)&lt;/p&gt;Mi solucion:&lt;br /&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; JoinStrings(&lt;span style="color: #2b91af;"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; strings) {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;int&lt;/span&gt; len = strings.Count();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: #a31515;"&gt;"{"&lt;/span&gt;+(&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; (len &amp;gt; 1) ?&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; strings.Take(len - 1)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; .Aggregate((&lt;span style="color: blue;"&gt;string&lt;/span&gt; head, &lt;span style="color: blue;"&gt;string&lt;/span&gt; tail) =&amp;gt; head+&lt;span style="color: #a31515;"&gt;", "&lt;/span&gt;+tail)+&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;" and "&lt;/span&gt; +strings.Last()&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; : (len == 1) ?&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; strings.First()&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;span style="color: #a31515;"&gt;""&lt;/span&gt;)+&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"}"&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;/div&gt;Por cierto, si solo quisieramos unir las cadenas con comas (y regresar una cadena vacia cuando no hay elementos), pudieramos utilizar esto:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; JoinStrings2(&lt;span style="color: #2b91af;"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; strings) {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; strings.Count() &amp;gt; 0 ? &lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; strings.Aggregate((&lt;span style="color: blue;"&gt;string&lt;/span&gt; h, &lt;span style="color: blue;"&gt;string&lt;/span&gt; t) =&amp;gt; h+&lt;span style="color: #a31515;"&gt;", "&lt;/span&gt;+t) &lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;""&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-1857352352826189705?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/1857352352826189705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=1857352352826189705' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1857352352826189705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1857352352826189705'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/04/unir-cadenas-con-comas.html' title='Unir cadenas con comas'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-6155915697913905311</id><published>2009-04-10T23:04:00.004-06:00</published><updated>2009-04-11T02:43:44.730-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='alt.net hispano'/><title type='text'>El reto de crear un StackOverflow hispano</title><content type='html'>&lt;strike&gt;Ayer&lt;/strike&gt; el dia de antier &lt;a href="http://twitter.com/fabianober/status/1486129695"&gt;salio a la platica en twitter&lt;/a&gt; el tema de crear un sitio como &lt;a href="http://stackoverflow.com/"&gt;StackOverflow&lt;/a&gt; para la comunidad hispana, Fabian inicio el tema y dio el &lt;a href="http://oberdata.com.ar/blog/post/2009/04/09/StackOverflow-Hispano-e28093-c2bfUn-sueno.aspx"&gt;seguimiento propio&lt;/a&gt; en su blog, &lt;a href="http://mario-chavez.blogspot.com/2009/04/stackoverflow-hispano.html"&gt;Mario dio su punto de vista&lt;/a&gt; en su blog tambien.&lt;br /&gt;&lt;br /&gt;Para los que no hallan escuchado de StackOverflow, la descripcion rapida que dan los mismos autores del sitio es "es como experts-exchange, pero sin la basura" (is like experts-exchange, but without the evil), el caso es que StackOverflow se ha convertido rapidamente en un referencial muy importante para encontrar soluciones rapidas a problemas de programacion, practicamente en cualquier lenguaje.&lt;br /&gt;&lt;br /&gt;Pues bien, esta idea de crear un clon de este sitio en español ya me habia rondado por la cabeza pero tenia (tengo) muchas dudas sobre si podria llegar a funcionar, me encantaria poder hacer funcionar algo asi, este blog en particular es un intento por llevar recursos tecnicos al publico de habla hispana, pero desafortunadamente al mismo tiempo es muy facil ver la falta de interes en estos temas. A mi parecer hay algunas cuestiones que deberiamos responder para ver la viabilidad del proyecto. (si no quieres leer todos los puntos, saltate al #7)&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Identificar si el proyecto es realmente una nececidad, habria que averiguar el interes de la comunidad en este proyecto y los sitios de este tipo en la actualidad (talvez ya hay algo asi pero necesita apoyo?).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Muchos de los desarrolladores hispanos con buen nivel participan en comunidades en ingles unicamente (sera que tambien nos ayudarian?).&lt;/li&gt;&lt;li&gt;La mayoria (creo) de los desarrolladores recurren a sitios en ingles para encontrar soluciones a sus problemas (se debe esto a la falta de recursos en español? usarian recursos en español si existieran?).&lt;/li&gt;&lt;li&gt;Que cantidad de desarrolladores no saben suficiente ingles de tal manera que su unica opcion es buscar contenido en español.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Los problemas que encontramos y los terminos tecnicos generalmente estan expresados en ingles (errores del compilador, frameworks&lt;==, etc), alguien comento que los motores de busqueda inclinarian los resultados a paginas en español, lo cual es cierto siempre y cuando hagan las busquedas desde la version localizada de Google o tengan configurado el idioma español en sus preferencias.&lt;/li&gt;&lt;li&gt;El #5 me lleva a otro punto importante, al hacer la descripcion/solucion de un problema deberiamos hacerlo en ingles y español? dado que si hacemos la descripcion en español, &lt;span style="font-weight: bold;"&gt;no servira para muchos que buscan los terminos en ingles&lt;/span&gt; (y que se beneficiarian de encontrar una respuesta en español) y si solo la hacemos en ingles... pues entonces ya no es version en español, este punto en particular creo que es un problema complicado.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;La idea por supuesto ya se le ha ocurrido a muchos otros antes, y hay quienes han pedido &lt;a href="http://stackoverflow.uservoice.com/pages/general/suggestions/134044-translate-stackoverflow-to-spanish"&gt;incorporar el idioma español al sitio&lt;/a&gt; de alguna manera, la respuesta de los autores es positiva, aunque no a corto plazo (tambien en el podcast lo han mencionado), pero esa podria ser otra opcion, hay varias formas para lograrla, siendo la mas simple de ellas el traducir los articulos, la implementacion no debe ser muy dificil, podria haber una opcion para pedir traduccion (para dar prioridad a la traduccion), y si juntaramos suficiente gente podria ser mas factible que algo asi avanzara mas rapido. Cabe destacar que esta opcion no tendria el problema del punto #6 y de hecho yo me inclino por esta opcion y si lo que realmente importa es contar con esta herramienta, creo que es la primera opcion que deberiamos perseguir una vez que podamos manifestar suficiente interes por parte de la comunidad (se me ocurre que podria ser una entrada (pregunta) en stackoverflow y las respuestas serian el apoyo).&lt;/li&gt;&lt;/ol&gt;Creo que esos son los puntos mas importantes que habria que contemplar para poder hacer algo, este ejercicio me ha servido a mi para identificar lo que yo considero la mejor opcion, hasta ganas me dan de borrar los otros puntos, pero pase mucho tiempo escribiendolos, asi que los dejo.&lt;br /&gt;&lt;br /&gt;Que piensan?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-6155915697913905311?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/6155915697913905311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=6155915697913905311' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6155915697913905311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6155915697913905311'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/04/el-reto-de-crear-un-stackoverflow.html' title='El reto de crear un StackOverflow hispano'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-1300944799094607143</id><published>2009-04-07T09:17:00.011-06:00</published><updated>2009-04-07T09:45:48.921-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='dialogos'/><title type='text'>Como eliminar el dialogo sobre contenidos mixtos en Internet Explorer</title><content type='html'>keywords: IE8, mixto, contenido, dialogo, advertencia, seguridad.&lt;br /&gt;&lt;br /&gt;La version en ingles de este articulo la encuentran aqui: &lt;a href="http://ebersys.blogspot.com/2009/03/how-to-prevent-security-dialog-about.html"&gt;How to: prevent the security dialog about unsecure items in IE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;En el post previo sobre el nuevo dialogo en &lt;a href="http://ebersysesp.blogspot.com/2009/03/desea-ver-el-contenido-de-la-pagina-web_26.html"&gt;IE8 acerca de contenidos mixtos&lt;/a&gt;, alguien pregunto "Hay alguna manera de desactivar esa advertencia de seguridad? Lo pregunta 100 veces!!", ya habia planeado yo escribir un post separado para contestar esa pregunta, pero simplemente se me olvido, lo bueno es que me lo recordaron y aqui esta lo que necesitas hacer si ya no quieres que se muestre ese dialogo:&lt;br /&gt;&lt;br /&gt;En la version en español:&lt;br /&gt;&lt;blockquote&gt;Herramientas&gt;Opciones de internet&gt;seguridad&gt;Nivel Personalizado&gt;Mostrar contenido mixto: Habilitar&lt;/blockquote&gt;En la version en ingles:&lt;blockquote&gt;tools&gt;internet options&gt;security&gt;custom level&gt;display mixed content: enable&lt;/blockquote&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cofcJplmJ2Q/SdtwWC4WcBI/AAAAAAAAA9o/gd1AxeJEw0Y/s1600-h/IE_Configuracion_de_seguridad.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 354px; height: 400px;" src="http://4.bp.blogspot.com/_cofcJplmJ2Q/SdtwWC4WcBI/AAAAAAAAA9o/gd1AxeJEw0Y/s400/IE_Configuracion_de_seguridad.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5321970908701028370" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Es importante resaltar que si el sitio que estas visitando no esta en la zona de internet, tendrias que hacer los cambios a la zona apropiada:&lt;br /&gt;&lt;br /&gt;Para identificar la "zona" en la que estas solo tienes que mirar la parte inferior derecha del browser, donde veras algo asi:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cofcJplmJ2Q/Scu-9BYHQRI/AAAAAAAAA8g/U9tuSi4X3_M/s1600-h/IE8_Internet_Zone.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 111px;" src="http://1.bp.blogspot.com/_cofcJplmJ2Q/Scu-9BYHQRI/AAAAAAAAA8g/U9tuSi4X3_M/s400/IE8_Internet_Zone.PNG" alt="" id="BLOGGER_PHOTO_ID_5317553740591874322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Si le das doble click ahi, entonces podras hacer cambios a las otras zonas (Intranet Local, Sitios de confianza, Sitios restringidos)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cofcJplmJ2Q/Sdty0xIV31I/AAAAAAAAA9w/j4E_bAY1pP8/s1600-h/IE_opciones_de_internet.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 370px; height: 379px;" src="http://2.bp.blogspot.com/_cofcJplmJ2Q/Sdty0xIV31I/AAAAAAAAA9w/j4E_bAY1pP8/s400/IE_opciones_de_internet.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5321973635535462226" /&gt;&lt;/a&gt;&lt;br /&gt;Solo haz click en la zona deseada, luego click en el boton "Nivel Personalizado" y eso abrira el primer dialgo en este post donde podras hacer el cambio.&lt;br /&gt;&lt;br /&gt;Este articulo aplica a IE8, IE7, IE6 (Y la verdad no se si aplica a versiones anteriores, aunque espero realmente que nadie este usando algo mas viejo que IE6)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-1300944799094607143?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/1300944799094607143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=1300944799094607143' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1300944799094607143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1300944799094607143'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/04/como-eliminar-el-dialogo-sobre.html' title='Como eliminar el dialogo sobre contenidos mixtos en Internet Explorer'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cofcJplmJ2Q/SdtwWC4WcBI/AAAAAAAAA9o/gd1AxeJEw0Y/s72-c/IE_Configuracion_de_seguridad.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-7057042740279410542</id><published>2009-04-02T10:18:00.004-06:00</published><updated>2009-04-02T10:36:14.340-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='codigo'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='trucos'/><title type='text'>Los miembros de una interface SI pueden ser privados</title><content type='html'>Este dato sorprende a la mayoria, cualquiera que ha aprendido a usar interfaces sabe que la primera regla es que todos los miembros son publicos y por ende su implementacion tambien lo es, &lt;span style="font-weight: bold;"&gt;siempre&lt;/span&gt;, no es opcional. Al menos hasta que llegaste a este articulo a &lt;span style="font-weight: bold;"&gt;desaprender&lt;/span&gt; que eso no es totalmente cierto. Veamos un pequeño ejemplo, con el puro proposito de demostrarlo.&lt;br /&gt;&lt;br /&gt;&lt;div    style="background: white none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-family:Courier New;font-size:10pt;color:black;"&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;interface&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;ITest&lt;/span&gt; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;    &lt;span style="color:blue;"&gt;void&lt;/span&gt; Test();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;p style="margin: 0px;"&gt; &lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;Test&lt;/span&gt; : &lt;span style="color: rgb(43, 145, 175);"&gt;ITest&lt;/span&gt; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;    &lt;span style="color:blue;"&gt;void&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;ITest&lt;/span&gt;.Test() { //&lt;&lt;== implementacion privada&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: rgb(163, 21, 21);"&gt;"test"&lt;/span&gt;);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;    }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;    &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Test2() {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: rgb(163, 21, 21);"&gt;"test2"&lt;/span&gt;);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;    }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;p style="margin: 0px;"&gt; &lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;Program&lt;/span&gt; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;    &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color:blue;"&gt;string&lt;/span&gt;[] args) {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;ITest&lt;/span&gt; t = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;Test&lt;/span&gt;();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;        t.Test();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;Test&lt;/span&gt; t2 = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;Test&lt;/span&gt;();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;        &lt;span style="color:green;"&gt;//t2.Test(); //&amp;lt;&amp;lt;=== no compila&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;Si no lo crees puedes intentarlo tu mismo.&lt;br /&gt;&lt;br /&gt;Pero de que me sirve o para que puedo usar esto?&lt;br /&gt;&lt;br /&gt;La tecnica te permite asegurarte que el metodo solo es visible a aquellos que usen una variable del tipo de la interface (ITest en este caso). Lo unico que hace es forzar a que el uso de ese metodo sea a travez de una instancia de la interface, osea que, para este ejemplo, si quieres acceder al metodo .Test, solo lo puedes hacer a travez de una variable del tipo ITest.&lt;br /&gt;&lt;br /&gt;El unico "truco" para lograr esto es que en la declaracion tienes que agregar el tipo de la interface, antes del miembro:&lt;br /&gt;&lt;br /&gt;void ITest.Test();&lt;br /&gt;&lt;br /&gt;Seguramente no es el truco mas util, pero es algo para tenerlo guardado ahi en el cofre de los trucos y que en algun momento te sera de utilidad, o talvez algo que te pueda hacer ganar una apuesta ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-7057042740279410542?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/7057042740279410542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=7057042740279410542' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/7057042740279410542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/7057042740279410542'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/04/los-miembros-de-una-interface-si-pueden.html' title='Los miembros de una interface SI pueden ser privados'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-2350428538828901434</id><published>2009-04-01T20:33:00.003-06:00</published><updated>2009-04-01T20:41:09.241-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mvc'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><title type='text'>ASP.NET MVC 1.0 esta disponible en codigo abierto</title><content type='html'>Hace unos minutos &lt;a href="http://www.hanselman.com/blog/MicrosoftASPNETMVC10IsNowOpenSourceMSPL.aspx"&gt;Scott anuncio&lt;/a&gt; el cambio a la licencia del codigo de ASP.NET MVC 1.0 como &lt;a href="http://es.wikipedia.org/wiki/C%C3%B3digo_abierto"&gt;codigo abierto&lt;/a&gt; bajo la &lt;a href="http://www.opensource.org/licenses/ms-pl.html"&gt;licencia MS-PL&lt;/a&gt; lo que quiere decir que lo puedes cambiar y redistribuir si asi lo deseas, tampoco hay restricciones a la plataforma (Linux, Mac). El codigo siempre ha estado disponible, pero ahora esta disponible completamente gratis.&lt;br /&gt;&lt;br /&gt;El codigo lo puedes bajar e instalar usando el &lt;a href="http://www.microsoft.com/web/gallery/install.aspx?appsxml=www.microsoft.com%2Fweb%2Fwebpi%2F2.0%2FWebProductList.xml%3Bwww.microsoft.com%2Fweb%2Fwebpi%2F2.0%2FWebProductList.xml%3Bwww.microsoft.com%2Fweb%2Fwebpi%2F2.0%2FWebProductList.xml&amp;amp;appid=83%3B47%3B83"&gt;Web Platform Installer 2.0&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-2350428538828901434?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/2350428538828901434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=2350428538828901434' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2350428538828901434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2350428538828901434'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/04/aspnet-mvc-10-esta-disponible-en-codigo.html' title='ASP.NET MVC 1.0 esta disponible en codigo abierto'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-6851253447001798274</id><published>2009-03-28T00:15:00.003-06:00</published><updated>2009-03-28T00:18:53.703-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chistoso'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Cualquiera pensaria que encontre la receta magica para atraer lectores</title><content type='html'>Checando mis estadisticas en Google Analytics, me encontre con esta grata sorpresa en el cambio del numero de visitas a mi blog, un incremento nada despreciable de 13,336.36%&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cofcJplmJ2Q/Sc3AoQL_xkI/AAAAAAAAA8w/PgoxbR10Wg4/s1600-h/Visits_Increase.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 38px;" src="http://4.bp.blogspot.com/_cofcJplmJ2Q/Sc3AoQL_xkI/AAAAAAAAA8w/PgoxbR10Wg4/s400/Visits_Increase.jpg" alt="" id="BLOGGER_PHOTO_ID_5318118532767008322" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-6851253447001798274?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/6851253447001798274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=6851253447001798274' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6851253447001798274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6851253447001798274'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/03/cualquiera-pensaria-que-encontre-la.html' title='Cualquiera pensaria que encontre la receta magica para atraer lectores'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cofcJplmJ2Q/Sc3AoQL_xkI/AAAAAAAAA8w/PgoxbR10Wg4/s72-c/Visits_Increase.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-7744993982037496309</id><published>2009-03-26T14:25:00.003-06:00</published><updated>2009-04-07T09:52:01.066-06:00</updated><title type='text'>Desea ver el contenido de la pagina web que se entrego de forma segura?</title><content type='html'>keywords: IE8, usabilidad, advertencia, error, dialogo&lt;br /&gt;&lt;br /&gt;actualizacion: Si lo unico que quieres es que este dialogo deje de aparecer, &lt;a href="http://ebersysesp.blogspot.com/2009/04/como-eliminar-el-dialogo-sobre.html"&gt;visita este articulo sobre como prevenir este dialogo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://windowsteamblog.com/blogs/windowsexperience/archive/2009/03/19/final-release-of-internet-explorer-8-now-available.aspx"&gt;IE8 acaba de salir&lt;/a&gt; y trae algunas cosas muy buenas y tambien unos mecanismos de proteccion muy buenos, en general, una version decente (aunque no suficiente para convertir gente de Firefox).&lt;br /&gt;&lt;br /&gt;Mientras hacia pruebas con este, me encontre con este dialogo al navegar por una pagina segura (Gmail)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cofcJplmJ2Q/ScgReXJ089I/AAAAAAAAA8I/6mF_8BfaYRs/s1600-h/Picture+3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 150px;" src="http://4.bp.blogspot.com/_cofcJplmJ2Q/ScgReXJ089I/AAAAAAAAA8I/6mF_8BfaYRs/s400/Picture+3.png" alt="" id="BLOGGER_PHOTO_ID_5316518573419852754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Que dijooooo???&lt;/strong&gt;???&lt;br /&gt;&lt;br /&gt;La primera vez que vi el dialogo realmente me quede pasmado y tuve que leer un par de veces cuidadosamente el dialogo completo.&lt;br /&gt;&lt;br /&gt;Para efectos de SEO incluyo el texto aqui:&lt;br /&gt;&lt;blockquote&gt;Esta pagina web contiene contenido que no sera proporcionado usando una conexion HTTPS segura, que puede comprometer la seguridad de toda la pagina web&lt;/blockquote&gt;&lt;br /&gt;Para ser sinceros no estoy muy seguro que opcion debo elegir si quiero ver todo el contenido de la pagina. No entiendo porque cambiaron el dialogo anterior:&lt;br /&gt;&lt;blockquote&gt;La pagina que esta abriendo contiene tanto elementos seguros como no seguros. Desea mostrar los elementos no seguros?&lt;/blockquote&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cofcJplmJ2Q/ScgRpXjoNTI/AAAAAAAAA8Q/o83W5pWRiFg/s1600-h/Picture+5.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 336px; height: 153px;" src="http://4.bp.blogspot.com/_cofcJplmJ2Q/ScgRpXjoNTI/AAAAAAAAA8Q/o83W5pWRiFg/s400/Picture+5.png" alt="" id="BLOGGER_PHOTO_ID_5316518762506630450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;El nuevo dialogo me parece bastante confuso, y el texto extra despues de la pregunta solo lo hace aun mas confuso, desde que me acuerdo habia existido el dialogo anterior y me parecia bastante claro.&lt;br /&gt;&lt;br /&gt;Si vemos &lt;a href="http://ebersys.blogspot.com/2009/03/do-you-want-to-view-only-webpage.html"&gt;la version en ingles&lt;/a&gt; es mas claro ver que el nuevo dialogo &lt;span style="font-weight: bold;"&gt;requiere la respuesta opuesta&lt;/span&gt; al dialogo anterior, si es que queremos ver todo el contenido de la pagina, talvez es esta la razon por la cual se siente como si estuviera &lt;a href="http://ebersysesp.blogspot.com/2009/03/no-deseas-cerrar-el-programa-si-no.html"&gt;haciendo una pregunta negativa&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Talvez lo que quieren es que mas usuarios seleccionen SI (la misma opcion que debias seleccionar antes)? dado que el 99.99% de los usuarios no leen los dialogos y solo se van por la seleccion por default.&lt;br /&gt;&lt;br /&gt;Quiero agradecer a &lt;a href="http://geeks.ms/blogs/ddaz"&gt;David Daniel Arroyo&lt;/a&gt; por haberme conseguido el dialogo en español para IE8.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-7744993982037496309?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/7744993982037496309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=7744993982037496309' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/7744993982037496309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/7744993982037496309'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/03/desea-ver-el-contenido-de-la-pagina-web_26.html' title='Desea ver el contenido de la pagina web que se entrego de forma segura?'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cofcJplmJ2Q/ScgReXJ089I/AAAAAAAAA8I/6mF_8BfaYRs/s72-c/Picture+3.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-2245732594825604391</id><published>2009-03-23T17:01:00.006-06:00</published><updated>2009-03-23T17:21:39.762-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interface de usuario'/><category scheme='http://www.blogger.com/atom/ns#' term='UI'/><title type='text'>No deseas cerrar el programa? si, no, cancelar</title><content type='html'>Este articulo se refiere a &lt;span style="font-weight: bold;"&gt;buenas practicas de interface de usuario&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_cofcJplmJ2Q/SBIzNnxGR7I/AAAAAAAAAiA/SKRMJuoUjEw/s1600-h/clickoktocancel.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_cofcJplmJ2Q/SBIzNnxGR7I/AAAAAAAAAiA/SKRMJuoUjEw/s400/clickoktocancel.PNG" alt="" id="BLOGGER_PHOTO_ID_5193269629417834418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strike&gt;El titulo de este post es por supuesto una exageracion de hacer preguntas negativas pero sirve como un ejemplo perfecto para ilustrar el punto&lt;/strike&gt;&lt;br /&gt;Pense que el titulo del post era una exageracion, pero despues de ver este dialogo...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;No hagas preguntas negativas&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lo mas seguro es que confundiras al pobre usuario; &lt;span style="font-weight: bold;"&gt;los usuarios tienen miedo de responder preguntas&lt;/span&gt; para hacerlo aun mas confuso preguntando lo opuesto de lo que ellos estan tratando de hacer, es una regla basica y simple, pero aun veo bastante software (y desarrolladores) que usan preguntas negativas para entrada de datos.&lt;br /&gt;&lt;br /&gt;El uso mas comun de opciones negativas es probablemente &lt;span style="font-weight: bold;"&gt;deshabilitado&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;solo compara:&lt;br /&gt;Etiqueta X visible?&lt;br /&gt;Campo X activo/habilitado?&lt;br /&gt;&lt;br /&gt;a:&lt;br /&gt;Etiqueta X Invisible?&lt;br /&gt;Campo X Inactivo/deshabilitado?&lt;br /&gt;&lt;br /&gt;Ese pequeño cambio hace mucho mas dificil poder contestar la pregunta correctamente; entonces hay que dar preferencia a &lt;span style="font-weight: bold;"&gt;Habilitado &lt;/span&gt; sobre  &lt;span style="font-weight: bold;"&gt;Deshabilitado&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;Visible &lt;/span&gt; sobre  &lt;span style="font-weight: bold;"&gt;Invisible&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;Activo &lt;/span&gt; sobre &lt;span style="font-weight: bold;"&gt;Inactivo&lt;/span&gt;, etc&lt;br /&gt;&lt;br /&gt;El mismo concepto aplica cuando creas nombres para tus variables o metodos, en muy pocos casos el negativo es mejor opcion, asi que elige la opcion mas segura, es mas facil de procesar, estamos acostumbrados a contestar "preguntas positivas" y lo contrario nos hace pensar para poder contestar, lo cual lo hace no intuitivo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-2245732594825604391?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/2245732594825604391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=2245732594825604391' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2245732594825604391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2245732594825604391'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/03/no-deseas-cerrar-el-programa-si-no.html' title='No deseas cerrar el programa? si, no, cancelar'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_cofcJplmJ2Q/SBIzNnxGR7I/AAAAAAAAAiA/SKRMJuoUjEw/s72-c/clickoktocancel.PNG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-2054353324205987810</id><published>2009-03-11T16:58:00.005-06:00</published><updated>2009-03-13T09:18:51.082-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WTF'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>La intuitividad de Apple: Los nuevos iPod shuffle (con control en codigo morse no integrado)</title><content type='html'>Ni siquiera tuve que hacer nada para esta (queja), estas son las instrucciones para operar el nuevo iPod shuffle, este no tiene ningun boton, sino que ahora los botones estan en los auriculares&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cofcJplmJ2Q/SbhAb9w6CWI/AAAAAAAAA7U/eKXYhp_hNF4/s1600-h/Picture+2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 397px; height: 400px;" src="http://4.bp.blogspot.com/_cofcJplmJ2Q/SbhAb9w6CWI/AAAAAAAAA7U/eKXYhp_hNF4/s400/Picture+2.png" alt="" id="BLOGGER_PHOTO_ID_5312066609663838562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Y estos son los botones del auricular&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cofcJplmJ2Q/SbhBQGmOBII/AAAAAAAAA7c/w-6Nwme43FQ/s1600-h/Picture+3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 85px;" src="http://1.bp.blogspot.com/_cofcJplmJ2Q/SbhBQGmOBII/AAAAAAAAA7c/w-6Nwme43FQ/s400/Picture+3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5312067505388127362" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;De nada sirve tener un solo boton si este hace 10 diferentes cosas, imagina si eso mismo lo hicieramos en una aplicacion&lt;br /&gt;&lt;br /&gt;Actualizaciin: &lt;a href="http://i.gizmodo.com/5168478/apples-control-scheme-for-the-ipod-shuffle-looks-like-friggin-morse-code"&gt;Gizmodo llama el control Codigo Morse&lt;/a&gt;, jaja, me gusta&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-2054353324205987810?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/2054353324205987810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=2054353324205987810' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2054353324205987810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2054353324205987810'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/03/la-intuitividad-de-apple-los-nuevos.html' title='La intuitividad de Apple: Los nuevos iPod shuffle (con control en codigo morse no integrado)'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cofcJplmJ2Q/SbhAb9w6CWI/AAAAAAAAA7U/eKXYhp_hNF4/s72-c/Picture+2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-5609286703497047395</id><published>2009-03-04T18:25:00.003-07:00</published><updated>2009-03-04T18:29:24.354-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='usabilidad'/><title type='text'>La intuitividad de la Mac: El teclado</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cofcJplmJ2Q/Sa8oWkJHQPI/AAAAAAAAA7M/AH2C5lRgHPw/s1600-h/Keyboard.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 236px; height: 149px;" src="http://3.bp.blogspot.com/_cofcJplmJ2Q/Sa8oWkJHQPI/AAAAAAAAA7M/AH2C5lRgHPw/s400/Keyboard.png" alt="" id="BLOGGER_PHOTO_ID_5309506853817237746" border="0" /&gt;&lt;/a&gt;Las nuevas Macs traen un teclado que tiene 2 teclas "&lt;span style="font-weight: bold;"&gt;delete&lt;/span&gt;", pero eso no es el motivo de este post (aunque...).&lt;br /&gt;Tengo algunos archivos en mi escritorio (asi se le llama tambien en la Mac?) que quiero borrar, asi que los selecciono y presiono una de las teclas &lt;span style="font-weight: bold;"&gt;delete&lt;/span&gt;... nada, intento la otra... nada... WTF!!&lt;br /&gt;&lt;br /&gt;Despues de intentar con combinaciones de Ctrl, Option, Command, Shift finalmente encontre una que funciono... aunque ya olvide cual era.&lt;br /&gt;&lt;br /&gt;Y eso es intuitivo?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-5609286703497047395?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/5609286703497047395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=5609286703497047395' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5609286703497047395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5609286703497047395'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/03/la-intuitividad-de-la-mac-el-teclado.html' title='La intuitividad de la Mac: El teclado'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cofcJplmJ2Q/Sa8oWkJHQPI/AAAAAAAAA7M/AH2C5lRgHPw/s72-c/Keyboard.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-1027012867501617631</id><published>2009-03-02T14:59:00.002-07:00</published><updated>2009-03-02T15:06:05.294-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><title type='text'>La intuitividad de la Mac</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cofcJplmJ2Q/SaxVDLabvXI/AAAAAAAAA7E/rw1PHXjF2Sk/s1600-h/Picture+4.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 166px; height: 119px;" src="http://2.bp.blogspot.com/_cofcJplmJ2Q/SaxVDLabvXI/AAAAAAAAA7E/rw1PHXjF2Sk/s400/Picture+4.png" alt="" id="BLOGGER_PHOTO_ID_5308711573854600562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Creo que yo he tenido la peor de las suertes que cualquier usuario halla tenido usando una Mac. Lo que ven en esta foto es Firefox en mi iMac. Cada vez que abro Firefox, eso es lo que abre, tengo que agarrar la pequeña ventanita por ahi entre los iconitos rojo y verde, arrastrarla hacia la izquiera en mi monitor, luego hacerla grande. Creo que esto comenzo a pasar desde que le quite un monitor alterno que tenia conectado.&lt;br /&gt;&lt;br /&gt;Talvez solo soy yo, pero este comportamiento no me parece muy intuitivo.&lt;br /&gt;&lt;br /&gt;Por cierto, queria editar la imagen para agregarle algo de contexto, pero no encontre ninguna manera obvia de editar la imagen, ni del menu de click derecho para abrir la imagen, ni tampoco una vez abierta la imagen; seguro que debe haber una forma de editar imagenes, pero aparentemente no es tan intuitivo como en Windows que solo puede hacer uno click derecho, editar y listo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-1027012867501617631?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/1027012867501617631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=1027012867501617631' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1027012867501617631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1027012867501617631'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/03/la-intuitividad-de-la-mac.html' title='La intuitividad de la Mac'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cofcJplmJ2Q/SaxVDLabvXI/AAAAAAAAA7E/rw1PHXjF2Sk/s72-c/Picture+4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-6466211755944268859</id><published>2009-03-01T14:27:00.003-07:00</published><updated>2009-03-01T15:17:58.106-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='literatura de software'/><title type='text'>Como acumular deuda tecnica rapidamente</title><content type='html'>Leyendo el post de Mario Chavez: &lt;a href="http://mario-chavez.blogspot.com/2009/03/lo-importante-es-que-funcione.html"&gt;Lo importante es que funcione&lt;/a&gt;, inmediatamente me recordo la metafora inventada por Ward Cunningham &lt;a href="http://en.wikipedia.org/wiki/Technical_debt"&gt;"Deuda tecnica",&lt;/a&gt;  la cual es descrita en su primer parrafo por &lt;a href="http://martinfowler.com/bliki/TechnicalDebt.html"&gt;Martin Fowler&lt;/a&gt; como:&lt;br /&gt;&lt;blockquote&gt;Necesitas agregar una pieza de funcionalidad al sistema. Identificas 2 maneras de hacerlo, una es rapida, pero sucia, y sabes que te hara la vida mas dificil en el futuro. La otra resulta en un diseño limpio, pero te tomaria mas implementarla.&lt;br /&gt;&lt;/blockquote&gt;Hay muchos factores por los cuales creo que la mayoria de los desarrolladores escogen la primera ruta de sacarlo rapido, y "&lt;span style="font-weight: bold;"&gt;despues&lt;/span&gt; lo arreglo"; por supuesto que ya sabemos que el luego &lt;span style="font-weight: bold;"&gt;nunca llega&lt;/span&gt;, y a eso es precisamente a lo que se le denomina la &lt;span style="font-weight: bold;"&gt;deuda tecnica&lt;/span&gt;; vamos dejando las cosas para despues, y los sistemas se van enredando mas, el codigo se vuelve mas complejo, y al hacer cambios muchas veces se introducen nuevos errores, por la naturaleza misma de un codigo mal estructurado.&lt;br /&gt;&lt;br /&gt;Esta deuda, como tal, se tiene que pagar de alguna manera, y mientras no se pague en su totalidad &lt;span style="font-weight: bold;"&gt;tendremos que pagar intereses&lt;/span&gt;; Mario describe algunos puntos como el costo de usar la metodologia de "solo haz que funcione"&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Es muy difícil entender el código, posiblemente únicamente la persona que lo desarrolló, es el "puede" tener un entendimiento aceptable.&lt;/li&gt;&lt;li&gt;Existe una mayor posibilidad de tener "bugs" extraños y difíciles de duplicar y corregir.&lt;/li&gt;&lt;li&gt;El realizarle cambios al programa se vuelve cada vez mas complejo, porque no entendemos hasta que punto esos cambios van a afectar otras áreas de nuestro programa.&lt;/li&gt;&lt;li&gt;No hay forma de reproducir situaciones muy particulares que ocurren con nuestro software y si este inter-actua con otro mas, lo mas común es culpar al otro software.&lt;/li&gt;&lt;li&gt;Inicialmente quedamos "bien" con el cliente por entregar el software a tiempo, a la larga los errores y fallas de nuestro software nos ponen en una situación no muy buena, y si a esto le agregamos que le cobramos al cliente por arreglar nuestros "errores", pues todavía peor.&lt;/li&gt;&lt;/ul&gt;Este puntos, entre otros, son referidos en la metafora de la deuda tecnica como el &lt;span style="font-weight: bold;"&gt;interes&lt;/span&gt; que tenemos que pagar haber escogido la ruta facil y hacer que algo funcione sin preocuparnos por tener un codigo limpio.&lt;br /&gt;&lt;br /&gt;La metafora se adapta muy apropiadamente al desarrollo de software, estoy completamente seguro que cualquiera que lea esto podra identificar su propia deuda tecnica, yo diria que &lt;span style="font-weight: bold;"&gt;no es opcional&lt;/span&gt;, de una u otra manera todos incurrimos en esta, la diferencia seria simplemente quien se endeuda mas y quien se endeuda menos.&lt;br /&gt;&lt;br /&gt;Te resulta dificil hacer cambios al software? Solo hay una persona que puede hacer cambios a "ese" sistema? No entiendes el codigo? Tienes problemas al pasar el codigo a produccion?&lt;br /&gt;Todos esos son sintomas de que estas pagando la deuda tecnica. Pagar los intereses es doloroso porque es trabajo extra que en muchos casos te lleva a endeudarte aun mas.&lt;br /&gt;&lt;br /&gt;Una vez que estas en deuda, no hay de otra, hay que pagar, y hay formas de ir pagando, pero mejor aun, hay forma de minimizar la deuda en un principio; ya hablaremos de eso.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-6466211755944268859?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/6466211755944268859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=6466211755944268859' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6466211755944268859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6466211755944268859'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/03/como-acumular-deuda-tecnica-rapidamente.html' title='Como acumular deuda tecnica rapidamente'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-8736718678093183729</id><published>2009-02-20T13:08:00.002-07:00</published><updated>2009-02-20T13:12:51.950-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='Instalacion'/><title type='text'>Instalacion de Windows 7: The product key does not match current Windows SKU</title><content type='html'>Acabo de instalar Windows 7 en la iMac, no tuve ningun problema durante la instalacion hasta que llegue a la parte donde pide el product key, fui al sitio de MS y pedi un nuevo key, y no me funciono, luego pedi otro, y tampoco, total que intente con al menos 5 keys, incluso con la que ya habia usado para instalar en la laptop, ninguna me funciono.&lt;br /&gt;&lt;br /&gt;En Google encontre muy pocos links sobre este problema, y la unica respuesta al parecer es que si bajaste la "checked build", entonces necesitas escoger la version Ultimate al instalar; y yo habia escogido la version Business.&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://blogs.msdn.com/user/Profile.aspx?UserID=134865"&gt;Chris&lt;/a&gt; responds: You are probably installing from the "checked" ISO image.  Please choose "Ultimate" and your key should work.&lt;br /&gt;&lt;/blockquote&gt;El problema es que cuando estas en esa pantalla no puedes regresar a indicar la version que quieres, asi que no se como se podria cambiar la seleccion de la version.&lt;br /&gt;&lt;br /&gt;Total que la solucion que me funciono fue simplemente &lt;span style="font-weight: bold;"&gt;dejar el campo del product key vacio&lt;/span&gt;; asi de sencillo.&lt;br /&gt;&lt;br /&gt;Asi que ya saben, si se bajaron la "checked build" seleccionen Ultimate al instalar, si ya estan atorados, pues intenten dejando el campo vacio.&lt;br /&gt;&lt;br /&gt;suerte&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-8736718678093183729?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/8736718678093183729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=8736718678093183729' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/8736718678093183729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/8736718678093183729'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/02/instalacion-de-windows-7-product-key.html' title='Instalacion de Windows 7: The product key does not match current Windows SKU'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-9155784296781408368</id><published>2009-01-23T22:42:00.003-07:00</published><updated>2009-01-23T22:51:13.357-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>Disponibilidad de Windows 7 beta extendida hasta Febrero 10</title><content type='html'>Debido al alto interes y buena acceptacion del publico hacia Windows 7, Microsoft ha &lt;a href="http://windowsteamblog.com/blogs/windows7/archive/2009/01/23/general-availability-for-the-windows-7-beta-to-end.aspx"&gt;extendido el periodo para bajarlo, una ves mas&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;El entusiasmo continua siendo muy alto para el Beta de Windows 7 y no queremos que nadie se quede sin probarlo, mantendremos abierto el sitio para bajarlo hasta Febrero 10. Para quienes lo hallan empezado a bajar pero no hallan terminado, tendran hasta Febrero 12 para completarlo.&lt;/blockquote&gt;&lt;br /&gt;Esto te dara mas que tiempo suficiente si quieres probarlo. Todo mundo (me incluyo) esta hablando maravillas de este, asi que si no te has decidido te estas perdiendo de un excelente producto, especialmente si usas Windows Vista. Es importante resaltar que los &lt;span style="font-style: italic;"&gt;product keys&lt;/span&gt; estaran disponibles aun despues del 12 de Febrero.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Los &lt;span style="font-style: italic;"&gt;product keys&lt;/span&gt; para el Beta de Windows 7 seguiran disponibles. Asi que si bajaste Windows 7 pero no obtuviste un product key, podras hacerlo aun despues del 12 de Febrero.&lt;/blockquote&gt;&lt;br /&gt;Los subscriptores de MSDN y Technet no necesitan preocuparse de ninguna fecha, estos podran bajarlo durante toda la fase Beta&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/windows/windows-7/beta-download.aspx"&gt;La pagina para bajarlo esta aqui&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-9155784296781408368?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/9155784296781408368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=9155784296781408368' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/9155784296781408368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/9155784296781408368'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/01/disponibilidad-de-windows-7-beta_23.html' title='Disponibilidad de Windows 7 beta extendida hasta Febrero 10'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-4219422361746982389</id><published>2009-01-19T13:31:00.003-07:00</published><updated>2009-01-19T13:38:00.161-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ideas'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><title type='text'>Multiples perfiles por usuario en Twitter</title><content type='html'>No te emociones mucho, es solo mi propuesta para twitter;&lt;br /&gt;&lt;br /&gt;Quisiera que existiera algo asi&lt;br /&gt;&lt;br /&gt;http://twitter.com/BlackTigerX/technical&lt;br /&gt;http://twitter.com/BlackTigerX/personal&lt;br /&gt;http://twitter.com/BlackTigerX/family&lt;br /&gt;&lt;br /&gt;Creo que hay muchos beneficios&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Algunos de nosotros tenemos cuentas multiples, una para cada lenguaje.&lt;/li&gt;&lt;li&gt;Alguna gente incluso usa diferentes redes sociales similares a Twitter, una para cada motivo (personal, profesional, etc).&lt;/li&gt;&lt;li&gt;Cuando me subscribo a alguien en twitter, generalmente quisiera ver contenido sobre X (tecnico, personal), pero no Y.&lt;/li&gt;&lt;li&gt;Reduccion de ruido.&lt;/li&gt;&lt;li&gt;Permitiria hacer busquedas en twitter en "etiquetas" especificas y poder encontrar contenido mas relevante (gracias @alexbriseno).&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Cada perfil podria estar protegido para permitir solo la gente que tu quieres, incluso podrian ser invisible de tal manera que solo la gente que tu quieres siquiera sabe que existen.&lt;br /&gt;&lt;br /&gt;Se podrian subscribir a todos tus perfiles publicos si asi lo desean.&lt;br /&gt;&lt;br /&gt;Las herramientas de twitter tendrian que cambiar un poco, para especificar cual "etiqueta" o perfiles especificos a donde mandar los tweets.&lt;br /&gt;&lt;br /&gt;Creo que reduciria bastante el ruido, ya que podrias usar la misma cuenta para escribir sobre diferentes cosas, cada una en su rama separada.&lt;br /&gt;&lt;br /&gt;Entre mas lo pienso, mas me gusta esta idea.&lt;br /&gt;&lt;br /&gt;Y si, este&lt;span style="text-decoration: underline;"&gt; &lt;/span&gt;&lt;a href="http://twitter.com/BlackTigerX"&gt;es mi perfil en twitter&lt;/a&gt;...(Al menos para el contenido tecnico en ingles)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-4219422361746982389?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/4219422361746982389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=4219422361746982389' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/4219422361746982389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/4219422361746982389'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/01/multiples-perfiles-por-usuario-en.html' title='Multiples perfiles por usuario en Twitter'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-5436146705278610332</id><published>2009-01-11T10:46:00.003-07:00</published><updated>2009-01-11T10:54:58.539-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>Disponibilidad de Windows 7 beta extendida hasta Enero 24</title><content type='html'>Si aun no has podido bajarte Windows 7 beta todavia puedes hacerlo; debido a la gran demanda MS ha estendido la disponibilidad 2 semanas mas y ya no tendran un limite en el numero de usuarios que lo bajen en ese periodo.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Debido a una enorme demanda, la experiencia al bajarlo no ha sido ideal asi que hemos escuchado y tomado las medidas necesarias para que sea una buena experiencia. Hemos escuchado claramente que muchos de ustedes quieren checar la beta de Windows 7 y como resultado, hemos decidido remover el limite inicial de 2.5 millones por las siguientes 2 semanas (hasta Enero 24). Durante este tiempo tendras acceso al beta aun si el numero de usuarios excede 2.5 millones&lt;/blockquote&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/windows/windows-7/beta-download.aspx"&gt;Lo puedes bajar aqui&lt;/a&gt;&lt;br /&gt;&lt;a href="http://windowsteamblog.com/blogs/windows7/archive/2009/01/10/here-s-where-we-stand.aspx"&gt;fuente: Windows Team Blog&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-5436146705278610332?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/5436146705278610332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=5436146705278610332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5436146705278610332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5436146705278610332'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/01/disponibilidad-de-windows-7-beta.html' title='Disponibilidad de Windows 7 beta extendida hasta Enero 24'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-344972806173091796</id><published>2009-01-10T10:16:00.002-07:00</published><updated>2009-01-10T10:36:06.504-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Sobre el nuevo favicon de Google</title><content type='html'>Google acaba de sacar un nuevo favicon (el icono que ves en la pestaña de firefox cuando entras  a la pagina de Google); en esta foto podemos ver los 3 favicons que han usado&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZaGO7GjCqAI/SWei9nM9neI/AAAAAAAAOiY/du01C7ipVnQ/s640/google-favicon-jan-2009.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 572px; height: 292px;" src="http://1.bp.blogspot.com/_ZaGO7GjCqAI/SWei9nM9neI/AAAAAAAAOiY/du01C7ipVnQ/s640/google-favicon-jan-2009.png" alt="" border="0" /&gt;&lt;/a&gt;Las ideas para los favicons las obtienen de un concurso donde todo mundo puede mandar ideas, el favicon que fue originalmente mandado fue este:&lt;br /&gt;&lt;blockquote&gt;André Resende, un estudiante de licenciatura en computer science de la Universidad de Campinas en Brazil, mando el diseño que inspiro nuestro nuevo favicon&lt;/blockquote&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7ZYqYi4xigk/SWfAtLjid1I/AAAAAAAACOU/4-mq3SGshy0/s320/Favicon_Andre.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 30px; height: 25px;" src="http://4.bp.blogspot.com/_7ZYqYi4xigk/SWfAtLjid1I/AAAAAAAACOU/4-mq3SGshy0/s320/Favicon_Andre.png" alt="" border="0" /&gt;&lt;/a&gt;Me parece que la version original es mucho mejor que la que ellos sacaron, la que ellos hicieron me parece muy... brillante, aunque mi esposa dice que si le gusta mas, a ustedes que les parece?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://googlesystem.blogspot.com/2009/01/new-google-favicon.html"&gt;fuente&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-344972806173091796?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/344972806173091796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=344972806173091796' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/344972806173091796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/344972806173091796'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/01/sobre-el-nuevo-favicon-de-google.html' title='Sobre el nuevo favicon de Google'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_ZaGO7GjCqAI/SWei9nM9neI/AAAAAAAAOiY/du01C7ipVnQ/s72-c/google-favicon-jan-2009.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-1532280502482827189</id><published>2009-01-09T10:54:00.001-07:00</published><updated>2009-01-09T10:56:05.101-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>Windows 7 beta disponible al publico (a los primeros 2.5 millones que logren bajarlo)</title><content type='html'>Se van a acabar rapido, asi que si quieres probarlo, &lt;a href="http://technet.microsoft.com/en-us/evalcenter/dd353205.aspx"&gt;ve a bajartelo ahora mismo&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-1532280502482827189?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/1532280502482827189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=1532280502482827189' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1532280502482827189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1532280502482827189'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/01/windows-7-beta-disponible-al-publico.html' title='Windows 7 beta disponible al publico (a los primeros 2.5 millones que logren bajarlo)'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-8191288483873695371</id><published>2009-01-08T22:19:00.003-07:00</published><updated>2009-01-08T22:26:38.236-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>Primer post desde Windows 7 beta</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cofcJplmJ2Q/SWbcXHa89WI/AAAAAAAAA1s/CU2fY0SrUQk/s1600-h/CMD.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 202px;" src="http://1.bp.blogspot.com/_cofcJplmJ2Q/SWbcXHa89WI/AAAAAAAAA1s/CU2fY0SrUQk/s400/CMD.PNG" alt="" id="BLOGGER_PHOTO_ID_5289157102080423266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Estoy corriendo Windows 7 beta 64bit en mi Mac usandoVMWare Fusion, aun en esta configuracion todo se ve muy bien, definitivamente mejoras importantes sobre Vista, quitaron muchas de las ventanitas molestas de confirmacion de UAC en areas donde simplemente tiene sentido como usuario no tenerlas. La nueva barra de tareas es muy intuitiva, talvez me tome un poco de tiempo adaptarme a esta, pero es que yo la uso diferente que la mayoria de la gente que he visto. Mi barra de acceso rapido (quick launch) no esta!!, definitivamente voy a necesitarla de regreso (creo, veremos si hay algo con que suplirla).&lt;br /&gt;&lt;br /&gt;La nueva herramienta de captura de pantallas es buenisima, parecida a la que se encuentra en la Mac, para los usuarios que siempre han usado Windows creo que sera muy util y facil de usar, es como el "print screen" en asteroides; puedes capturar pantallas en modo libre, area rectangular, ventanas y pantalla completa, muy intuitiva y muuuy rapida, de hecho es instantanea.&lt;br /&gt;&lt;br /&gt;Talvez esto es lo que Vista debio haber sido, todo lo que he leido de la gente que ha probado Windows 7 ha sido muy positivo en todas las areas, este post es solo un "yo tambien!"&lt;br /&gt;&lt;br /&gt;Asi que animense a bajar el beta, realmente vale la pena. Como ya les habia mencionado, estara disponible al publico a partir de este viernes 9 de Enero.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-8191288483873695371?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/8191288483873695371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=8191288483873695371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/8191288483873695371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/8191288483873695371'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/01/primer-post-desde-windows-7-beta.html' title='Primer post desde Windows 7 beta'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cofcJplmJ2Q/SWbcXHa89WI/AAAAAAAAA1s/CU2fY0SrUQk/s72-c/CMD.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-322342148019190512</id><published>2009-01-08T12:07:00.002-07:00</published><updated>2009-01-08T12:10:27.441-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='noticias'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Windows 7 beta disponible para subscriptores MSDN y Technet</title><content type='html'>Todos los que lo han visto aseguran que es muy bueno, mejor que XP y Vista, &lt;a href="http://msdn.microsoft.com/"&gt;asi que, que esperas para bajarlo?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ah! claro, no tienes una subscripcion a MSDN subscription, no te preocupes, estara disponible al publico este viernes&lt;br /&gt;&lt;br /&gt;por supuesto tambien lo puedes encontrar en algun &lt;a href="http://www.google.com/search?hl=en&amp;amp;client=firefox-a&amp;amp;rls=org.mozilla:en-US:official&amp;amp;hs=Enf&amp;amp;ei=sE5mSa2dBNTKmQfio5jVBw&amp;amp;sa=X&amp;amp;oi=spell&amp;amp;resnum=0&amp;amp;ct=result&amp;amp;cd=1&amp;amp;q=windows+7+bittorrent&amp;amp;spell=1"&gt;Bittorrent&lt;/a&gt; (mucho cuidado con lo que bajas e instalas)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-322342148019190512?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/322342148019190512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=322342148019190512' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/322342148019190512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/322342148019190512'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2009/01/windows-7-beta-disponible-para.html' title='Windows 7 beta disponible para subscriptores MSDN y Technet'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-498389818708712884</id><published>2008-09-27T22:38:00.002-06:00</published><updated>2008-09-27T22:53:11.164-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><category scheme='http://www.blogger.com/atom/ns#' term='gratis'/><title type='text'>Como montar imagenes en WinXP sin gastar un centavo</title><content type='html'>Para aquellos que no sepan, se puede montar una imagen (.ISO, .UDF, .CDFS, .JO, ROCK) en Windows XP y no tienes que quemarlo en un CD o DVD, simplemente lo puedes cargar como un drive virtual y puedes hacer todo lo que necesites hacer como si estuviera en un lector de CD/DVD&lt;br /&gt;&lt;br /&gt;Para aquellos que si saben sobre estas herramientas pero no confian instalar cualquier herramienta que se encuentren en Internet, hay una pequeña herramienta de Microsoft que hace el trabajo de manera sencilla y eficiente&lt;br /&gt;&lt;br /&gt;Solo baja el  &lt;a href="http://download.microsoft.com/download/7/b/6/7b6abd84-7841-4978-96f5-bd58df02efa2/winxpvirtualcdcontrolpanel_21.exe"&gt;Virtual CDRom Control Panel tool&lt;/a&gt; del sitio de Microsoft y sigue las instrucciones que vienen en el archivo readme:&lt;br /&gt;&lt;br /&gt;1. Copia VCdRom.sys a tu directorio %systemroot%\system32\drivers folder.&lt;br /&gt;2. Ejecuta VCdControlTool.exe&lt;br /&gt;3. Click "Driver control"&lt;br /&gt;4. Si el boton "Install Driver" esta disponible, dale click. Navega al folder %systemroot%\system32\drivers, seleciona VCdRom.sys, y da click en Open.&lt;br /&gt;5. Click "Start"&lt;br /&gt;6. Click OK&lt;br /&gt;7. Click "Add Drive" para agregar un drive a la lista. Asegurate que el drive agregado no es un drive local, si lo es, continua dando click en "Add Drive" hasta que la letra del drive corresponda a una que este disponible en tu sistema.&lt;br /&gt;8. Selecciona un drive que no este en uso de la lista de drives y da click en "Mount".&lt;br /&gt;9. Navega a donde tienes guardada la imagen que quieres montar, seleccionala y da click&lt;br /&gt;OK". UNC (los que son como \\servidor\folder...) no deben ser usados, aunque drives mapeados deberian funcionar bien.&lt;br /&gt;&lt;br /&gt;Ahora puedes usar el drive que configuraste como si fuera un drive local de CD-ROM. Cuando termines puedes desmontar, detener y remover el driver de memoria usando la herramientita.&lt;br /&gt;&lt;br /&gt;Eso es todo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-498389818708712884?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/498389818708712884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=498389818708712884' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/498389818708712884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/498389818708712884'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2008/09/como-montar-imagenes-en-winxp-sin.html' title='Como montar imagenes en WinXP sin gastar un centavo'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-5967620107994624292</id><published>2008-08-05T15:11:00.006-06:00</published><updated>2008-11-15T03:52:49.941-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><title type='text'>CAPTCHA invisible</title><content type='html'>Checando la orden de mi iPhone =o))) en ATT me tope con este CAPTCHA&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cofcJplmJ2Q/SJjCvi2p_8I/AAAAAAAAAlw/QwCaBEmm2ro/s1600-h/invisibleCaptcha.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_cofcJplmJ2Q/SJjCvi2p_8I/AAAAAAAAAlw/QwCaBEmm2ro/s400/invisibleCaptcha.JPG" alt="" id="BLOGGER_PHOTO_ID_5231145089256521666" border="0" /&gt;&lt;/a&gt;pense que solo tenia que dar enter, ya que no veia ningun caracter, pero...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cofcJplmJ2Q/SJjCa98W3sI/AAAAAAAAAlo/QGXpHRfJ9Ew/s1600-h/invisibleCaptcha2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_cofcJplmJ2Q/SJjCa98W3sI/AAAAAAAAAlo/QGXpHRfJ9Ew/s400/invisibleCaptcha2.JPG" alt="" id="BLOGGER_PHOTO_ID_5231144735750938306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;=o(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-5967620107994624292?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/5967620107994624292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=5967620107994624292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5967620107994624292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5967620107994624292'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2008/08/captcha-invisible.html' title='CAPTCHA invisible'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cofcJplmJ2Q/SJjCvi2p_8I/AAAAAAAAAlw/QwCaBEmm2ro/s72-c/invisibleCaptcha.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-8694075509636347286</id><published>2008-07-29T12:43:00.000-06:00</published><updated>2008-07-29T12:44:00.373-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linea de comando'/><category scheme='http://www.blogger.com/atom/ns#' term='SVN'/><title type='text'>Como borrar directorios .svn recursivamente de manera facil</title><content type='html'>De hecho puedes usar esto para borrar cualquier directorio que necesites borrar recursivamente, pero hoy lo necesitaba especificamente para los folders .svn y google solo me daba la respuesta para linux y unas soluciones muy extrañas para Windows.&lt;br /&gt;&lt;br /&gt;Aqui esta una solucion muy simple que funciona desde la linea de comando (la forma facil =oP):&lt;br /&gt;&lt;br /&gt;for /f "usebackq" %d in (`"dir *.svn /ad/b/s"`) do rd /s/q "%d"&lt;br /&gt;&lt;br /&gt;mas que nada dejo esto aqui para mi porque se que lo necesitare en el futuro, pero espero que pueda ayudar a alguien mas por ahi J&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-8694075509636347286?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/8694075509636347286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=8694075509636347286' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/8694075509636347286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/8694075509636347286'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2008/07/como-borrar-directorios-svn.html' title='Como borrar directorios .svn recursivamente de manera facil'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-1656232901417234086</id><published>2008-07-29T11:18:00.004-06:00</published><updated>2008-11-15T03:52:50.131-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Delta corre Linux en sus aviones</title><content type='html'>Tomada este fin de semana pasado en un viajecito que nos aventamos a las Vegas, son las pantallas que estan detras de los asientos&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cofcJplmJ2Q/SI9QcGCla4I/AAAAAAAAAlY/t8ARPy2PHdI/s1600-h/delta.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_cofcJplmJ2Q/SI9QcGCla4I/AAAAAAAAAlY/t8ARPy2PHdI/s400/delta.JPG" alt="" id="BLOGGER_PHOTO_ID_5228486135988448130" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-1656232901417234086?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/1656232901417234086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=1656232901417234086' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1656232901417234086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1656232901417234086'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2008/07/delta-corre-en-linux.html' title='Delta corre Linux en sus aviones'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cofcJplmJ2Q/SI9QcGCla4I/AAAAAAAAAlY/t8ARPy2PHdI/s72-c/delta.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-6798493560303931738</id><published>2008-07-20T21:44:00.003-06:00</published><updated>2008-07-20T22:05:13.367-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>No se puede actualizar funcion de SQL mientras la estas debugueando</title><content type='html'>El articulo aplica a: SQL debugging&lt;br /&gt;keywords: SQL, debugging, VS2005, functions, stored procedures&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;Esto lo aprendi en dias pasados mientras que estaba conectado usando RD (Remote Desktop) a mi computadora del trabajo y estaba debuggeando una funcion SQL desde VS2005; luego encontre un bug en esta y procedi a actualizar la funcion externamente usando Microsoft SQL Server Management Express (uff, que cansado decir todo eso), pero al ejecutar el &lt;span style="font-weight: bold;"&gt;alter function&lt;/span&gt; tomaba muchisimo tiempo y nunca regresaba, pense que era algo que tenia que ver con mi sesion RD, asi que me conecte directamente al servidor e intente de nuevo con el mismo resultado, despues de algunos minutos de esperar a SQL a que actualizara mi funcion me di cuenta que estaba &lt;span style="font-weight: bold;"&gt;debugueando&lt;/span&gt; y estaba detenido en un &lt;span style="font-weight: bold;"&gt;breakpoint&lt;/span&gt; en esa funcion, cerre VS, intente de nuevo y listo, funciono instantaneamente.&lt;br /&gt;&lt;br /&gt;Pues si, fue mi culpa, pero nunca me dio un timeout ni tampoco un mensaje indicando cual era el problema, que pasaria si dos desarrolladores estuvieran trabajando en la misma cosa?&lt;br /&gt;Talvez podrian hacer algo en esa area para arreglar ese problema, no creo que sea demasiado dificil, despues de todo &lt;span style="font-style: italic; font-weight: bold;"&gt;sabe&lt;/span&gt; que esta bloqueada, porque no dar un mensaje al usuario?&lt;br /&gt;&lt;br /&gt;Creo que esto mismo aplica a stored procedures pero no lo he probado&lt;br /&gt;&lt;br /&gt;Pero bueno, queria compartir mi experiencia con ustedes, y espero que esto le sirva a alguien.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-6798493560303931738?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/6798493560303931738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=6798493560303931738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6798493560303931738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6798493560303931738'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2008/07/no-se-puede-actualizar-funcion-de-sql.html' title='No se puede actualizar funcion de SQL mientras la estas debugueando'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-1253985007289474118</id><published>2008-06-27T17:40:00.002-06:00</published><updated>2008-11-15T03:52:50.756-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='UI'/><category scheme='http://www.blogger.com/atom/ns#' term='usabilidad'/><title type='text'>Bienvenido a la familia</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cofcJplmJ2Q/SF70idYmBYI/AAAAAAAAAkI/QqY5TYL1YdY/s1600-h/storage_bigimac20080429.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_cofcJplmJ2Q/SF70idYmBYI/AAAAAAAAAkI/QqY5TYL1YdY/s400/storage_bigimac20080429.jpg" alt="" id="BLOGGER_PHOTO_ID_5214874291382125954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pues al fin sucumbi y me uni al club, compre la iMac 24" 3.06 GHz =o), la pantalla de 24 pulgadas es buenisima, hace que mi "viejo" monitor de 21" se vea chiquito&lt;br /&gt;&lt;br /&gt;Hasta ahora he encontrado varias cosas que me han decepcionado sobre la "usabilidad" de la Mac, supongo que tenia expectativas demasiado altas por los comentarios de la mayoria de la gente que tiene Macs; simplemente el hecho de que la primera aplicacion en el sistema es el "Finder" ya me hace sospechar que algo no estas en su lugar, hasta ahorita los problemas mas grandes que tengo:&lt;br /&gt;&lt;br /&gt;- los short cut keys son muy diferentes (estoy batallando bastante para escribir esto)&lt;br /&gt;- Instalas una aplicacion y &lt;span style="font-weight: bold;"&gt;desaparece&lt;/span&gt;, tienes que encontrarla usando el Finder (por supuesto&lt;br /&gt;- click derecho, donde esta el #$%&amp;amp;** click derecho!!! - &lt;span style="color: rgb(255, 0, 0);"&gt;lo encontre&lt;/span&gt;, tienes que dar "ctrl+click" lo cual no me gusta nada, despues encontre que lo puedes configurar pero no funciona muy bien, tienes que retirar bastante tu dedo izq&lt;br /&gt;- los botones del mouse (o la falta de estos)&lt;br /&gt;- window resizing, porque es que solo puedo hacer resize desde la esquina inferior derecha???&lt;br /&gt;- cuando estas escribiendo el HOME no se va al inicio, y el END no se va al final, aaarggh, esto me esta matando ahora mismo&lt;br /&gt;&lt;br /&gt;Ya le instale el Fusion y Windows Vista dentro de este, hasta ahorita todo ha funcionado bien, veamos si esto mejora ya que me familiarice mas&lt;br /&gt;&lt;br /&gt;El "Bienvenido a la familia" es lo que nos dijeron en la tienda cuando compramos la Mac, aqui les seguire actualizando sobre mis &lt;strike&gt;quejas&lt;/strike&gt; experiencias&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-1253985007289474118?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/1253985007289474118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=1253985007289474118' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1253985007289474118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1253985007289474118'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2008/06/bienvenido-la-familia.html' title='Bienvenido a la familia'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cofcJplmJ2Q/SF70idYmBYI/AAAAAAAAAkI/QqY5TYL1YdY/s72-c/storage_bigimac20080429.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-5930497847057094576</id><published>2008-05-14T19:40:00.003-06:00</published><updated>2008-05-14T19:46:10.951-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chistoso'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='redes sociales'/><title type='text'>Twitter esta caido, yo culpo a tweetwheel.com</title><content type='html'>Twitter esta caido de nuevo, a este paso va a ser muy dificil que alguna otra de las redes sociales populares de estos tiempos le quite la posicion #1 como la peor red social en cuando a "up time" se refiere; pueden checar la lista aqui:&lt;br /&gt;&lt;h3 class="storytitle" id="post-288"&gt;&lt;a href="http://royal.pingdom.com/?p=288" rel="bookmark"&gt;Social network downtime Jan-Apr 2008&lt;/a&gt;&lt;/h3&gt;Yo culpo a &lt;a href="http://www.tweetwheel.com/"&gt;tweetwheel.com&lt;/a&gt; jeje, &lt;a href="http://mashable.com/2008/05/14/twitter-is-down-i-blame-the-democrats/"&gt;y ustedes a quien culpan?&lt;/a&gt;?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-5930497847057094576?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://mashable.com/2008/05/14/twitter-is-down-i-blame-the-democrats/' title='Twitter esta caido, yo culpo a tweetwheel.com'/><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/5930497847057094576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=5930497847057094576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5930497847057094576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5930497847057094576'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2008/05/twitter-esta-caido-yo-culpo.html' title='Twitter esta caido, yo culpo a tweetwheel.com'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-9091092172517973082</id><published>2008-03-31T20:57:00.005-06:00</published><updated>2008-11-15T03:52:50.956-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='practicas'/><category scheme='http://www.blogger.com/atom/ns#' term='seguridad'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Asi es como NO se manejan los errores</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cofcJplmJ2Q/R_Gk-VoXtBI/AAAAAAAAAgY/AlgxHhrKod4/s1600-h/baderror.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_cofcJplmJ2Q/R_Gk-VoXtBI/AAAAAAAAAgY/AlgxHhrKod4/s400/baderror.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5184106036945466386" /&gt;&lt;/a&gt;Visto en cierto sitio popular de futbol, se me ocurrio ver el resto del mensaje y obtuve version del OS, servidor web, PHP, algunos directorios y la direccion ip interna del servidor.&lt;br /&gt;&lt;br /&gt;por favor jovenes atrapen errores y guardenlos en algun log y solo muestren errores amigables al usuario, por ejemplo "los datos no estan disponibles en este momento, por favor intentelo mas tarde", o algo asi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-9091092172517973082?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/9091092172517973082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=9091092172517973082' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/9091092172517973082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/9091092172517973082'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2008/03/asi-es-como-no-se-manejan-los-errores.html' title='Asi es como NO se manejan los errores'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cofcJplmJ2Q/R_Gk-VoXtBI/AAAAAAAAAgY/AlgxHhrKod4/s72-c/baderror.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-2705094935372136254</id><published>2008-03-13T23:00:00.003-06:00</published><updated>2008-03-13T23:18:50.040-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Lo que quisiera ver en la siguiente version de C#</title><content type='html'>&lt;a href="http://notgartner.wordpress.com/2008/01/10/shortcut-formatting-a-feature-request-for-c-vnext/"&gt;Mitch Denny escribio&lt;/a&gt;  sobre lo que el quisiera para la siguiente version de C# (mucha otra gente ha escrito sobre este tema ultimamente)&lt;br /&gt;&lt;br /&gt;Lo que Mitch propone es tener un &lt;span style="font-weight: bold;"&gt;atajo para formatear strings&lt;/span&gt;, lo cual nos permitiria ir de algo asi&lt;br /&gt;string s=string.Format(”{0}{1}{2}”, a, b, c);&lt;br /&gt;a esto:&lt;br /&gt;string s=@(”{0}{1}{2}”|a|b|c);&lt;br /&gt;&lt;br /&gt;En este caso particular no me gusta la alternativa que propone, lo unico que esta haciendo es reemplazar la "," con el caracter "|" y haciendo el nombre mas corto.&lt;br /&gt;Uno podria escribir su propia funcion "de envoltura":&lt;br /&gt;//*** podrias llamarla "f" si quisieras&lt;br /&gt;static string fmt(string format, params object[] parameters) {&lt;br /&gt;  return string.Format(format, parameters);&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;y la usarias asi:&lt;br /&gt;string s=fmt("{0}{1}{2}",a,b,c);&lt;br /&gt;&lt;br /&gt;Lo cual nos da practicamente el mismo resultado que lo propuesto por Mitch&lt;br /&gt;&lt;br /&gt;Otro problema es que esta propuesta resuelve un problema &lt;span style="font-weight: bold;"&gt;muy especifico&lt;/span&gt; el cual es formatear strings y podemos obtener casi el mismo resultado escribiendo una funcioncita&lt;br /&gt;&lt;br /&gt;El caso es que con tanta gente dando su opinion sobre lo que les gustaria ver en la siguiente version de C#, pues yo tambien tengo mi idea&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;lista de argumentos sin coma&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;algo asi:&lt;br /&gt;string s=fmt("{0}{1}{2}" a b c);&lt;br /&gt;&lt;br /&gt;El alcance de este cambio seria muchisimo mayor y de hecho le quitaria algo de "azucar de sintaxis" (syntactic sugar) al lenguaje&lt;br /&gt;&lt;br /&gt;Ahora bien, este cambio seguramente no ocurrira, debido a que esta es la familia de los lenguajes C y ademas me parese que el cambio seria bastante significativo, pero como este es mi blog pues yo pongo mi idea =o)&lt;br /&gt;&lt;br /&gt;Por cierto una de las ideas que me ha parecido buena es la de tener &lt;span style="font-weight: bold;"&gt;argumentos nombrados&lt;/span&gt;, con lo cual se podrian mandar llamar funciones de la manera&lt;br /&gt;&lt;br /&gt;AlgunaFuncion(Parametro1 = "Algun valor", Parametro2=10);&lt;br /&gt;&lt;br /&gt;Esta idea me parece excelente, una de las cosas que eliminaria seria la confusion que generan los parametros booleanos, y ya no tendriamos que usar Enum para esos casos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-2705094935372136254?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/2705094935372136254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=2705094935372136254' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2705094935372136254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2705094935372136254'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2008/03/lo-que-quisiera-ver-en-la-siguiente.html' title='Lo que quisiera ver en la siguiente version de C#'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-5148990466792061981</id><published>2007-11-19T12:39:00.000-07:00</published><updated>2007-11-19T12:50:26.259-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2008'/><title type='text'>Instalando VS2008</title><content type='html'>Se bajo bastante rapido, ya lo queme usando &lt;a href="http://ebersys.blogspot.com/2007/04/burning-iso-images-to-cd-dvd-in-windows.html"&gt;las herramientas del Resource Kit Tools&lt;/a&gt;, y ya se esta instalando... hay muchisimas cosas nuevas en VS2008, he aqui un sumario:&lt;br /&gt;&lt;br /&gt;- multi targetting support&lt;br /&gt;  - podras crear aplicaciones para .NET 2.0 (VS2005) o el nuevo .NET 3.5&lt;br /&gt;&lt;br /&gt;- ASP.NET AJAX y soporte para Javascript&lt;br /&gt; - para los que han usado el framework de ASP.NET AJAX, ahora ya viene instalado por default, a los que no lo hallan usado, se estan perdiendo de algo buenisimo, ya blogueare al respecto&lt;br /&gt;&lt;br /&gt;-VS2008 Web Designer y soporte para CSS&lt;br /&gt; - un diseñador muy mejorado para HTML, el mismo que salio en los productos de Expression Web, entre otras cosas ofrece muy buena integracion con CSS&lt;br /&gt;&lt;br /&gt;- Mejoras en el lenguaje&lt;br /&gt; - LINQ&lt;br /&gt; - hay muchisimo material que bloguear sobre esto&lt;br /&gt;&lt;br /&gt;tambien habra algunos add-ins muuuuuuuy interesantes, entre otras cosas&lt;br /&gt;- F#&lt;br /&gt;- MVC&lt;br /&gt;- Herramientas para SilverLight&lt;br /&gt;- Web Deployment project&lt;br /&gt;&lt;br /&gt;fuente: &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/11/19/visual-studio-2008-and-net-3-5-released.aspx"&gt;ScottGu's blog&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-5148990466792061981?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/5148990466792061981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=5148990466792061981' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5148990466792061981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5148990466792061981'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/11/instalando-vs2008.html' title='Instalando VS2008'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-1699250800638301990</id><published>2007-11-19T10:37:00.000-07:00</published><updated>2007-11-19T10:40:02.016-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2008'/><title type='text'>Bajando VS2008</title><content type='html'>aun no esta listado en la seccion de msdn subscriber downloads, nosotros lo encontramos dando click en "sign out", de ahi nos mando a &lt;a href="http://msdn2.microsoft.com/en-us/subscriptions/default.aspx"&gt;esta pagina&lt;/a&gt;, (tienes que estar usando IE para ver las ligas) y en la parte de abajo hay una lista de &lt;span style="font-style: italic;"&gt;subscriber downloads&lt;/span&gt;, das click ahi en "Visual Studio 2008 * Edition...", te pregunta por tu password, y te lleva directo a bajar el software&lt;br /&gt;&lt;br /&gt;13% hasta ahorita, la velocidad es bastante buena... tengo que ir por unos DVDs =o)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-1699250800638301990?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/1699250800638301990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=1699250800638301990' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1699250800638301990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1699250800638301990'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/11/bajando-vs2008.html' title='Bajando VS2008'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-5358678715553312639</id><published>2007-10-21T12:53:00.000-06:00</published><updated>2007-10-21T13:03:21.005-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><category scheme='http://www.blogger.com/atom/ns#' term='errores'/><title type='text'>This application has failed to start because js3250.dll was not found.</title><content type='html'>Este problema &lt;a href="http://www.google.com/search?source=ig&amp;amp;hl=en&amp;amp;rlz=&amp;amp;q=js3250.dll+was+not+found&amp;amp;btnG=Google+Search"&gt;ha sido reportado por mucho tiempo en Firefox&lt;/a&gt;, y hasta ahora parece que no hay una respuesta, los mensajes de error son:&lt;br /&gt;&lt;br /&gt;"This application has failed to start because js3250.dll was not found. Re-installing the application may fix the problem."&lt;br /&gt;"The Procedure entry point in JS_HasInstance could not be located in the dynamic link library js3250.dll"&lt;br /&gt;&lt;br /&gt;Algunos sugieren desinstalar/reinstalar Firefox, crear un nuevo profile, remover FF completamente antes de reinstalar, bajar un archivo nuevo js3250.dll, borrar un trojan ipv6monl.dll, etc; algunas soluciones funcionan para algunas personas, pero parece que no hay una respuesta definitiva, esto es lo que me funciono a mi&lt;br /&gt;&lt;br /&gt;En mi caso el problema solo se manifestaba bajo un usuario con acceso restringido (no administrador); mire en el folderC:\Program Files\Mozilla Firefox y el archivo js3250.dll estaba ahi, asi que ejecute firefox.exe directamente y corrio bien, entonces cambie el shortcut para que apuntara a este lugar (realmente no se a donde apuntaba el shortcut original, solo decia "firefox.exe" en el Target) y hasta ahorita esta funcionando bien&lt;br /&gt;&lt;br /&gt;Ojala que esto sea de ayuda para alguien&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-5358678715553312639?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/5358678715553312639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=5358678715553312639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5358678715553312639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5358678715553312639'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/10/this-application-has-failed-to-start.html' title='This application has failed to start because js3250.dll was not found.'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-8306661662267499604</id><published>2007-10-17T19:18:00.001-06:00</published><updated>2008-11-15T03:52:51.429-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><title type='text'>mis predicciones (sobre Leopard) para la proxima semana</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.apple.com/mac/"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_cofcJplmJ2Q/Rxa0bLSRz0I/AAAAAAAAAKo/2Or2k2Ci294/s320/leopard-product.jpg" alt="" id="BLOGGER_PHOTO_ID_5122480005159440194" border="0" /&gt;&lt;/a&gt;- Apple tendra la venta de hardware y software (MacPro, MacBookPro y Leopard) mas grande en su historia.&lt;br /&gt;- Habra gente acampando para ser los primeros en comprar Leopard.&lt;br /&gt;- Se agotaran existencias en varias tiendas.&lt;br /&gt;- Con eso la adopcion de Macs crece al menos en un 25%.&lt;br /&gt;- Empezaremos a ver fallos y actualizaciones muy pronto en varias aplicaciones.&lt;br /&gt;- Tambien veremos varios (muchos?) fallos graves de seguridad en su sistema operativo en lo que resta del año y de ahi para adelante&lt;br /&gt;&lt;br /&gt;...Y yo espero poder contribuir a la causa! =0)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-8306661662267499604?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/8306661662267499604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=8306661662267499604' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/8306661662267499604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/8306661662267499604'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/10/mis-predicciones-sobre-leopard-para-la.html' title='mis predicciones (sobre Leopard) para la proxima semana'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cofcJplmJ2Q/Rxa0bLSRz0I/AAAAAAAAAKo/2Or2k2Ci294/s72-c/leopard-product.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-2941076566364690606</id><published>2007-10-16T00:30:00.000-06:00</published><updated>2007-10-16T00:40:11.240-06:00</updated><title type='text'>Pequeña refactorizacion para trabajar con tipos nullables</title><content type='html'>&lt;small&gt;&lt;small&gt;Este articulo aplica a: C# 2.0&lt;/small&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;C# 2.0 nos trajo una nueva caracteristica: tipos nullables, seguramente ya sabes que son y los has usado por algun tiempo, pero, cuantas veces has visto (o escrito) codigo como este:&lt;br /&gt;&lt;br /&gt;//SomeClass.SomeObject.BoolProperty es de tipo bool?&lt;br /&gt;&lt;br /&gt;if  (SomeClass.SomeObject.BoolProperty.HasValue &amp;amp;&amp;amp; SomeClass.SomeObject.BoolProperty.Value)...&lt;br /&gt;//algun codigo&lt;br /&gt;&lt;br /&gt;porque &lt;span style="font-weight: bold;"&gt;no puedes&lt;/span&gt; escribir:&lt;br /&gt;if (SomeClass.SomeObject.BoolProperty)...&lt;br /&gt;&lt;br /&gt;Ya que &lt;span style="font-weight: bold;"&gt;no compilaria&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El problema que tengo con ese codigo es que es &lt;span style="font-weight: bold;"&gt;repetitivo&lt;/span&gt; y es muy largo, entonces que podemos hacer?&lt;br /&gt;Puedes escribirlo asi:&lt;br /&gt;&lt;br /&gt;if (SomeClass.SomeObject.BoolProperty??false)&lt;br /&gt;&lt;br /&gt;mucho mejor no? si BoolProperty &lt;span style="font-weight: bold;"&gt;tiene un valor y el valor es true&lt;/span&gt;, nos regresara &lt;span style="font-weight: bold;"&gt;true&lt;/span&gt;, de lo contrario regresara &lt;span style="font-weight: bold;"&gt;false&lt;/span&gt;; ahora, por supuesto que puedes usar la misma tecnica con otros tipos de datos que sean nullable, veamos algunos ejemplos:&lt;br /&gt;&lt;br /&gt;string firstName;&lt;br /&gt;public string FirstName { get{ return firstName??""; }}&lt;br /&gt;&lt;br /&gt;Este codigo nos aseguraria que FirstName nunca regrese null (Estoy seguro que has visto muchisimos "object reference not set blablabla" debido a que te falta este codigo)&lt;br /&gt;&lt;br /&gt;Otros ejemplos:&lt;br /&gt;int? result;&lt;br /&gt;...&lt;br /&gt;return result??-1; //si no obtuvimos algun resultado, devolver -1&lt;br /&gt;---------------------------------------------------&lt;br /&gt;bool? result;&lt;br /&gt;...&lt;br /&gt;return result??false;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Eso es todo, espero que les sirva&lt;br /&gt;Recuerda que &lt;a href="http://www.codinghorror.com/blog/archives/000878.html"&gt;el mejor codigo, es... no codigo!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-2941076566364690606?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/2941076566364690606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=2941076566364690606' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2941076566364690606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2941076566364690606'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/10/pequea-refactorizacion-para-trabajar.html' title='Pequeña refactorizacion para trabajar con tipos nullables'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-970164448785578549</id><published>2007-09-27T20:07:00.001-06:00</published><updated>2007-09-27T20:08:25.382-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='codigo'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Obtener el ultimo dia del mes</title><content type='html'>Aplica a: C#, .NET&lt;br /&gt;Entrando en la onda de compartir codigo, y creo que es la segunda vez en esta semana que necesito esta funcion&lt;br /&gt;&lt;br /&gt;DateTime GetLastDayOf(DateTime date) {&lt;br /&gt;        return new DateTime(date.Year, date.Month, &lt;span style="font-weight: bold;"&gt;DateTime.DaysInMonth&lt;/span&gt;(date.Year, date.Month));&lt;br /&gt;    }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-970164448785578549?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/970164448785578549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=970164448785578549' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/970164448785578549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/970164448785578549'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/09/obtener-el-ultimo-dia-del-mes.html' title='Obtener el ultimo dia del mes'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-5301816843366634948</id><published>2007-09-06T01:22:00.000-06:00</published><updated>2007-09-06T01:35:01.155-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='noticias'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>busquedas en google (reader), finalmente</title><content type='html'>woohoo! finalmente ya puedes hacer &lt;a style="font-weight: bold;" href="http://googlesystem.blogspot.com/2007/09/google-reader-adds-search.html"&gt;busquedas en tus feeds de google reader&lt;/a&gt; (desde google reader, ya que si se podia hacer de otra manera), ademas se han agregado 2 nuevas cositas&lt;br /&gt;&lt;ul&gt;&lt;li&gt;puedes ver 1000 posts (en vez de 100)&lt;/li&gt;&lt;li&gt;puedes esconder la barra lateral izquierda usando el raton&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: left;"&gt;&lt;blockquote&gt;Puedes buscar en todos tus feeds, los feeds de una carpeta o de un feed solo. De hecho puedes hacer dos busquedas: una para una carpeta o feed, y otra busqueda para el post que contenga ciertos keywords que pertenezca a la carpeta o feed que seleccionaste previamente. Los resultados se ordenan por fecha y toma un par de segundos para que aparezcan.&lt;/blockquote&gt;&lt;br /&gt;&lt;/div&gt;Talvez estas nuevas opciones no esten disponibles para todos los usuarios en este momento, en mi cuenta se actualizo en tiempo real (sin que la pagina estuviera abajo o tuviera que recargar), vi el anuncio de que venian actualizaciones al google reader, pero el mio aun tenia la version anterior, luego me puse a trabajar en un programita y regrese a checar mis feeds y ya tenia la nueva version =o)&lt;br /&gt;&lt;br /&gt;Entonces cuando me van a dejar &lt;a href="http://ebersysesp.blogspot.com/2007/01/sugerencia-para-el-google-reader.html"&gt;resaltar texto&lt;/a&gt;?&lt;br /&gt;jeje, eso seria realmente increible&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-5301816843366634948?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://googlesystem.blogspot.com/2007/09/google-reader-adds-search.html' title='busquedas en google (reader), finalmente'/><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/5301816843366634948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=5301816843366634948' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5301816843366634948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5301816843366634948'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/09/busquedas-en-google-reader-finalmente.html' title='busquedas en google (reader), finalmente'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-959571435722712004</id><published>2007-08-10T20:31:00.000-06:00</published><updated>2008-11-15T03:52:51.723-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chistoso'/><title type='text'>No necesito ayuda!</title><content type='html'>Pero si necesito mi tecla F2 para renombrar cosas J&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cofcJplmJ2Q/Rr0e2LOP4oI/AAAAAAAAAEU/Rf7dWPTgvxA/s1600-h/nohelp.JPG"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_cofcJplmJ2Q/Rr0e2LOP4oI/AAAAAAAAAEU/Rf7dWPTgvxA/s400/nohelp.JPG" alt="" id="BLOGGER_PHOTO_ID_5097264269327590018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Tuve que usar este teclado porque mi PC se descompuso y... entre otras cosas, me di cuenta cuanto (mucho) uso el teclado&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-959571435722712004?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/959571435722712004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=959571435722712004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/959571435722712004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/959571435722712004'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/08/no-necesito-ayuda.html' title='No necesito ayuda!'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cofcJplmJ2Q/Rr0e2LOP4oI/AAAAAAAAAEU/Rf7dWPTgvxA/s72-c/nohelp.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-8381079545213349602</id><published>2007-06-15T22:04:00.001-06:00</published><updated>2007-06-15T22:04:43.016-06:00</updated><title type='text'>Practicas de programacion: Nunca digas nunca</title><content type='html'>&lt;p&gt;Recientemente Jan Bannister escribio este post &lt;a href="http://londoncoder.wordpress.com/2007/06/09/bool-considered-harmful/"&gt;Bool considerado dañino&lt;/a&gt;, donde escribe (traducido):&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;Nunca uses Bool&lt;/strong&gt;, o mas especificamente nunca uses bool como parametro. Es el tipo de dato mas tonto y que provee la menos informacion posible.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Pues bien, podria debatir el post de varias maneras, pero lo que me llego fue eso de "nunca uses bool como parametro"; los problemas mas grandes con eso que veo son:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&amp;nbsp;Tus proyectos terminarian con cientos de &lt;strong&gt;enums&lt;/strong&gt; para reemplazar los parametros buleanos (asi se escribe booleans?).&lt;/li&gt; &lt;li&gt;Donde pones todos esos enums?&lt;/li&gt; &lt;li&gt;En algun punto del proyecto, tendrias tantos enums que tal vez algunos de ellos estarian duplicados, y se te haria un desorden para saber si debes aumentarle a un enum, o crear uno nuevo.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Entonces que hacemos? de alguna manera el tipo bool si es dañino, pero &lt;strong&gt;no siempre&lt;/strong&gt;, yo creo que esa es la clave, puedo pensar rapidamente en al menos 3 escenarios donde no necesariamente necesitas reemplazar tus bools con enums:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;metodos privados: &lt;a href="http://ebersysesp.blogspot.com/2006/10/como-ejecutar-metodos-privados.html"&gt;se supone que son usados solamente por clase&lt;/a&gt; misma... y que el metodo no es tan grande, y que la clase no es tan grande, y que tienes comentarios verdad?&lt;/li&gt; &lt;li&gt;metodos con un solo parametro que solo es algo que prendes o apagas, por ejemplo PonerVisibilidad(true);&lt;/li&gt; &lt;li&gt;Aun en metodos con varios parametros tambien se puede usar con variables con nombres claros que indiquen su proposito y no se presten a confusion, hay muchos ejemplos de esos, pero si eviten llamar sus variables, x, i, j, k, etc... porque entonces no importa si el parametro es bool o no, el codigo sera mas dificil de entender&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;y bien, ya no suena tan mal, a final de cuentas, nunca digas nunca, no abuses de ninguna tecnica.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-8381079545213349602?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/8381079545213349602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=8381079545213349602' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/8381079545213349602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/8381079545213349602'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/06/practicas-de-programacion-nunca-digas.html' title='Practicas de programacion: Nunca digas nunca'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-2692426243456393292</id><published>2007-06-12T23:37:00.000-06:00</published><updated>2007-06-13T09:22:56.608-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='codigo'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='trivia'/><title type='text'>C# trivia #1: overloads, strings, nullable types</title><content type='html'>&lt;p&gt;&lt;span style="font-size:78%;"&gt;esta entrada sirve a la vez para probar el mas reciente&lt;span style="text-decoration: underline;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://windowslivewriter.spaces.live.com/"&gt;&lt;span style="font-size:78%;"&gt;Windows Live Writer&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Tenemos estas clase:&lt;/p&gt; &lt;p&gt;public class Foo {&lt;br /&gt;   public void Bar(string x) {&lt;br /&gt;       Console.WriteLine("string x was called");&lt;br /&gt;   }&lt;br /&gt;   public void Bar(int? x) {&lt;br /&gt;       Console.WriteLine("int? x was called");&lt;br /&gt;   }&lt;br /&gt;} &lt;/p&gt;&lt;p&gt;cual sera la salida a la consola con el siguiente codigo: &lt;/p&gt;&lt;p&gt;Foo f = new Foo();&lt;br /&gt;try {&lt;br /&gt;   f.Bar(null);&lt;br /&gt;}&lt;br /&gt;catch {&lt;br /&gt;   Console.WriteLine("no method was called");&lt;br /&gt;}&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-2692426243456393292?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/2692426243456393292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=2692426243456393292' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2692426243456393292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2692426243456393292'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/06/c-trivia-1-overloads-strings-nullable.html' title='C# trivia #1: overloads, strings, nullable types'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-644655585943268413</id><published>2007-06-06T14:35:00.000-06:00</published><updated>2007-06-06T14:49:48.538-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='herramientas'/><category scheme='http://www.blogger.com/atom/ns#' term='IE7'/><category scheme='http://www.blogger.com/atom/ns#' term='activex'/><title type='text'>Filemon salva el dia una vez mas</title><content type='html'>&lt;small&gt;Estoy de regreso, me lastime la cabeza en un juego de futbol, me la pase muy mareado por mas de una semana, pero ya estoy bien&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;Esta vez fue un control ActiveX (todavia &lt;a href="http://ebersysesp.blogspot.com/2007/05/control-activex-en-net-no-funciona-bajo.html"&gt;estamos peleando&lt;/a&gt; con controles ActiveX), pense que ya habia hecho todo para que funcionara, pero aun asi el #@$^ control simplemente no funcionaba, asi que corri &lt;a href="http://www.microsoft.com/technet/sysinternals/FileAndDisk/Filemon.mspx"&gt;Filemon &lt;/a&gt;para ver si el archivo era siquiera accesado, y encontre 2 referencias al archivo, una en el folder del GAC, y otra en program files\internet explorer, pero ninguna referencia a donde yo habia copiado el dll.&lt;br /&gt;&lt;br /&gt;Asi que decidi copiar el archivo dll a donde IE lo estaba buscando, lo puse en&lt;br /&gt;c:\program files\Internet Explorer\&lt;br /&gt;y todo empezo a funcionar perfectamente&lt;br /&gt;&lt;br /&gt;Talez pude haber registrado el control en el GAC, pero ya estaba muy frustrado (tenia varios dias con este problema) y creo que ya habia tratado antes eso mismo y no me habia funcionado.&lt;br /&gt;&lt;br /&gt;pero bueno... pues ahi tienen otro truco mas que pueden intentar cuando ya hallan intentado todo lo demas, &lt;span style="font-weight: bold;"&gt;usa filemon para ver de que directorio esta tratando IE de cargar tu control, y copialo ahi&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;y si aun no sabes que es filemon, &lt;a href="http://ebersysesp.blogspot.com/search?q=filemon"&gt;deberias bajarlo y jugar con el&lt;/a&gt;, es una herramienta mas que excelente, y te ahorrara muchos dolores de cabeza (y no precisamente de los causados en juegos de futbol J)&lt;br /&gt;&lt;br /&gt;salu2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-644655585943268413?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/644655585943268413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=644655585943268413' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/644655585943268413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/644655585943268413'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/06/filemon-salva-el-dia-una-vez-mas.html' title='Filemon salva el dia una vez mas'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-215803211548875166</id><published>2007-05-22T22:41:00.000-06:00</published><updated>2008-11-15T03:52:51.924-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>como arreglar cuando google reader reporta items nuevos inexistentes</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cofcJplmJ2Q/RlPGVEQq6OI/AAAAAAAAADI/mJoLRhc3ayo/s1600-h/googlereaderbug.JPG"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_cofcJplmJ2Q/RlPGVEQq6OI/AAAAAAAAADI/mJoLRhc3ayo/s400/googlereaderbug.JPG" alt="" id="BLOGGER_PHOTO_ID_5067612070945155298" border="0"&gt;&lt;/a&gt;&lt;br /&gt;de vez en cuando google reader (por diferentes razones) nos reporta que tenemos items nuevos, pero no los podemos ver (ya que realmente no existen), para arreglar este problema simplemente&lt;br /&gt;- click en "all items"&lt;br /&gt;- click en "mark all as read"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-215803211548875166?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/215803211548875166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=215803211548875166' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/215803211548875166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/215803211548875166'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/05/como-arreglar-cuando-google-reader.html' title='como arreglar cuando google reader reporta items nuevos inexistentes'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cofcJplmJ2Q/RlPGVEQq6OI/AAAAAAAAADI/mJoLRhc3ayo/s72-c/googlereaderbug.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-8937714772695270523</id><published>2007-05-22T22:32:00.000-06:00</published><updated>2007-05-22T22:35:43.682-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tecnologia'/><title type='text'>tecnologia para rastrear ubicacion de telefonos celulares</title><content type='html'>wow... &lt;a href="http://www.sat-gps-locate.com/spanish/index.html"&gt;me encontre esto&lt;/a&gt; via &lt;a href="http://aldoara.blogspot.com/2007/05/mobile-phone-gps-tracking-technology.html"&gt;Aldoara&lt;/a&gt;, pensabas que eso de rastrear la ubicacion geografica de los telefonos celulares solo pasaba en las peliculas?... &lt;a href="http://www.sat-gps-locate.com/spanish/index.html"&gt;echale un vistazo&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-8937714772695270523?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/8937714772695270523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=8937714772695270523' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/8937714772695270523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/8937714772695270523'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/05/tecnologia-para-rastrear-ubicacion-de.html' title='tecnologia para rastrear ubicacion de telefonos celulares'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-4088656704760966049</id><published>2007-05-18T17:00:00.000-06:00</published><updated>2007-05-18T17:11:21.589-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='seguridad .net'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='activex'/><title type='text'>control activeX en .NET no funciona bajo https</title><content type='html'>keywords: .net user control, activex, ocx, IE7, IE, https, http, seguro&lt;br /&gt;&lt;br /&gt;&lt;a href="http://juztinwilzon.blogspot.com/"&gt;Justin&lt;/a&gt; y yo tuvimos una semana muy pesada peleandonos con unos controles ActiveX desarrollados en C# y .NET 2.0, asi que vamos a postear algunas de nuestras experiencias con los problemas y soluciones que encontramos (para que podamos recordarlas despues), la prima es sobre &lt;span style="font-weight: bold;"&gt;controles ActiveX corriendo bajo https&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Desarrollamos el control, todo funcionaba muy bien, uno de nuestros clientes queria ese control en un sitio https, asi que dijimos no hay problema... hasta que tratamos, y tratamos, y tratamos y nada funcionaba, el control simplemente no cargaba &lt;span style="font-style: italic;"&gt;correctamente&lt;/span&gt; (si cargaba, pero no hacia lo que necesitabamos, esto era aun peor).&lt;br /&gt;&lt;br /&gt;La solucion resulto ser algo muy simple (como normalmente es el caso); cuando incluyes un control, normalmente se hace asi:&lt;br /&gt;&lt;br /&gt;&amp;lt;object id="someId" classid="SomeDll#Namespace.ClassName"&amp;gt;&amp;lt;/object&amp;gt;&lt;br /&gt;&lt;br /&gt;Esa es la forma en la que lo encuentras en los ejemplos en internet, y &lt;span style="font-weight: bold;"&gt;funciona muy bien&lt;/span&gt; (una vez que pasas todas las demas barreras para hacerlo funcionar) &lt;span style="font-weight: bold;"&gt;bajo http, pero cuando corres ese mismo sitio bajo https, el control simplemente no funciona.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;la solucion?&lt;br /&gt;&lt;br /&gt;Cuando creas tu control, le asignas un identificador unico (guid)&lt;br /&gt;&lt;br /&gt;[Guid("CAE67AEA-F489-4e52-956B-CCC774F40A3A")]&lt;br /&gt;[ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(IControlEvents))] // --Expose events&lt;br /&gt;[ComVisible(true)]&lt;br /&gt;public partial class MyControl : UserControl...&lt;br /&gt;&lt;br /&gt;mas o menos asi...&lt;br /&gt;bien, para hacer que el control funcione en https, simplemente tendras que &lt;span style="font-weight: bold;"&gt;usar ese GUID, no el nombre de la clase&lt;/span&gt;, asi que escribiriamos el codigo html de la siguiente manera&lt;br /&gt;&lt;br /&gt;&amp;lt;object id="someId" classid="clsid:CAE67AEA-F489-4e52-956B-CCC774F40A3A"&amp;gt;&amp;lt;/object&amp;gt;&lt;br /&gt;&lt;br /&gt;listo, es todo lo que hay que hacer, espero que les hallamos evitado algunas horas de dolores de cabeza&lt;br /&gt;&lt;br /&gt;salu2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-4088656704760966049?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/4088656704760966049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=4088656704760966049' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/4088656704760966049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/4088656704760966049'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/05/control-activex-en-net-no-funciona-bajo.html' title='control activeX en .NET no funciona bajo https'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-6352919277307945457</id><published>2007-05-17T10:17:00.001-06:00</published><updated>2008-11-15T03:52:52.103-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chistoso'/><title type='text'>(humor) soy programador...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cofcJplmJ2Q/Rkx_z0Qq6MI/AAAAAAAAAC8/sYsFCAmUzcI/s1600-h/programmer.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_cofcJplmJ2Q/Rkx_z0Qq6MI/AAAAAAAAAC8/sYsFCAmUzcI/s400/programmer.JPG" alt="" id="BLOGGER_PHOTO_ID_5065564209063585986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;un poco de humor para que se despejen...&lt;br /&gt;&lt;br /&gt;salu2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-6352919277307945457?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/6352919277307945457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=6352919277307945457' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6352919277307945457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6352919277307945457'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/05/humor-soy-programador.html' title='(humor) soy programador...'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cofcJplmJ2Q/Rkx_z0Qq6MI/AAAAAAAAAC8/sYsFCAmUzcI/s72-c/programmer.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-1702920294161817269</id><published>2007-05-15T23:03:00.000-06:00</published><updated>2007-05-15T23:08:48.968-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>una hora de diferencia de zona horaria no siempre es igual a una hora de diferencia</title><content type='html'>esta es una de esas cosas que no se porque no lo sabia...&lt;br /&gt;&lt;br /&gt;Esto me paso por sorpresa en un viaje reciente, fui a una ciudad que yo sabia que estaba bajo la siguiente zona horaria, asi que ajuste la zona horaria en mi celular, pero la hora no cambio... me quede un poco confundido y empece a cambiar a otras zonas horarias hasta que entendi lo que estaba pasando&lt;br /&gt;&lt;br /&gt;Despues de eso verifique el mismo comportamiento en mi PC, si aun no me crees puedes intentarlo ahora mismo, cambia tu pc a diferentes zonas horarias y veras que la hora cambia no necesariamente cuando tu esperas que cambie&lt;br /&gt;&lt;br /&gt;por ejemplo: la hora es la misma en&lt;br /&gt;(GMT-07:00) Mountain Time (US &amp;amp; Canada) y&lt;br /&gt;(GMT-06:00) Central America&lt;br /&gt;&lt;br /&gt;...y yo se al menos de una aplicacion donde este detallito causa un problema...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-1702920294161817269?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/1702920294161817269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=1702920294161817269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1702920294161817269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1702920294161817269'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/05/una-hora-de-diferencia-de-zona-horaria.html' title='una hora de diferencia de zona horaria no siempre es igual a una hora de diferencia'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-7916828541484114924</id><published>2007-05-15T10:46:00.000-06:00</published><updated>2007-05-15T10:47:52.059-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>forma facil de ver los metodos y propiedades expuestos en un archivo TLB</title><content type='html'>...simplemente arrastra  (drag and drop) el archivo TLB a una ventana de Visual Studio (funciona al menos en VS2005), al hacer esto abrira el "object browser" y de ahi podras expander el objeto y ver la definicion completa de sus metodos y propiedades&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-7916828541484114924?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/7916828541484114924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=7916828541484114924' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/7916828541484114924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/7916828541484114924'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/05/forma-facil-de-ver-los-metodos-y.html' title='forma facil de ver los metodos y propiedades expuestos en un archivo TLB'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-7722429118641308107</id><published>2007-04-30T16:29:00.000-06:00</published><updated>2008-11-15T03:52:52.309-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IE7'/><title type='text'>control ActiveX para ver archivos PNG en IE7?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cofcJplmJ2Q/RjZtI0MXUFI/AAAAAAAAACs/FnHoD8JV6uE/s1600-h/pnginIE7.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_cofcJplmJ2Q/RjZtI0MXUFI/AAAAAAAAACs/FnHoD8JV6uE/s400/pnginIE7.PNG" alt="" id="BLOGGER_PHOTO_ID_5059351229614215250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Acabo de bajar &lt;a href="http://download.microsoft.com/download/f/2/e/f2ecc2ad-c498-4538-8a2c-15eb157c00a7/SL_Map_FinalNET.png"&gt;este poster de SilverLight&lt;/a&gt; a mi maquina, luego trate de abrirlo con IE7; y me dio este mensage. Me sorprendio un poco, pero le di click para activarlo, solo para recibir este mensaje de error:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cofcJplmJ2Q/RjZtbUMXUGI/AAAAAAAAAC0/3r1NZCd1QkA/s1600-h/pnginIE7_2.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_cofcJplmJ2Q/RjZtbUMXUGI/AAAAAAAAAC0/3r1NZCd1QkA/s400/pnginIE7_2.PNG" alt="" id="BLOGGER_PHOTO_ID_5059351547441795170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;COMO DICE!?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-7722429118641308107?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/7722429118641308107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=7722429118641308107' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/7722429118641308107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/7722429118641308107'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/04/control-activex-para-ver-archivos-png.html' title='control ActiveX para ver archivos PNG en IE7?'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cofcJplmJ2Q/RjZtI0MXUFI/AAAAAAAAACs/FnHoD8JV6uE/s72-c/pnginIE7.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-4470412963845520955</id><published>2007-04-26T20:04:00.000-06:00</published><updated>2007-04-26T20:05:42.375-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>problemas en Oracle, parte 2 de 1000: establecer valor a variables</title><content type='html'>en Oracle no se usa el SET para establecer el valor de una variable&lt;br /&gt;SET variable_name = value;&lt;br /&gt;&lt;br /&gt;eso te dara un descriptivo "ORA-00922: missing or invalid option"&lt;br /&gt;&lt;br /&gt;para hacerlo, se hace al estilo de Delphi =o)&lt;br /&gt;&lt;br /&gt;variable_name := value;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-4470412963845520955?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/4470412963845520955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=4470412963845520955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/4470412963845520955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/4470412963845520955'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/04/problemas-en-oracle-parte-2-de-1000.html' title='problemas en Oracle, parte 2 de 1000: establecer valor a variables'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-939601179147530595</id><published>2007-04-26T19:58:00.000-06:00</published><updated>2007-04-26T20:02:21.414-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>problemas en Oracle, parte 1 de 1000: queries contra scripts</title><content type='html'>por lo que veo en google, la comunidad latina aprecia bastante a Oracle, haber que tal me va con esta serie de articulos...&lt;br /&gt;Esto lo tengo que poner aqui para recordar en el futuro, tambien espero bloguear acerca de muchisimos otros problemas que he tenido usando Oracle&lt;br /&gt;&lt;br /&gt;Este problema en particular aplica cuando ejecutas multiples operaciones para crear vistas, funciones, etc&lt;br /&gt;&lt;br /&gt;Cuando estes ejecutando en modo query:&lt;br /&gt;al crear o reemplazar funciones, incluir ";" al final&lt;br /&gt;al crear o reemplazr vistas, no incluyas ";", sino "go" al final&lt;br /&gt;&lt;br /&gt;de lo contrario recibiras bellos errores como&lt;br /&gt;" Warnings: ---&gt;&lt;br /&gt;W (1): Warning: execution completed with warning&lt;br /&gt;       &lt;--- "&lt;br /&gt;&lt;br /&gt;"[Error] Script lines: 639-664 ----------------------&lt;br /&gt;ORA-06575: Package or function FUNCTION_NAME is in an invalid state"&lt;br /&gt;&lt;br /&gt;y tus vistas/funciones no seran modificados&lt;br /&gt;&lt;br /&gt;cuando estas ejecutando como script, todo necesita llevar ";" al final&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-939601179147530595?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/939601179147530595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=939601179147530595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/939601179147530595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/939601179147530595'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/04/problemas-en-oracle-parte-1-de-1000.html' title='problemas en Oracle, parte 1 de 1000: queries contra scripts'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-714947470519217248</id><published>2007-04-26T19:22:00.000-06:00</published><updated>2008-11-15T03:52:52.490-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chistoso'/><title type='text'>yahoo mail haciendose el gracioso...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cofcJplmJ2Q/RjFO60MXUEI/AAAAAAAAACk/Hkh8Mqbi1_E/s1600-h/yahoomailfunny.GIF"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_cofcJplmJ2Q/RjFO60MXUEI/AAAAAAAAACk/Hkh8Mqbi1_E/s400/yahoomailfunny.GIF" alt="" id="BLOGGER_PHOTO_ID_5057910628863660098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;aaarggh...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-714947470519217248?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/714947470519217248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=714947470519217248' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/714947470519217248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/714947470519217248'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/04/yahoo-mail-haciendose-el-gracioso.html' title='yahoo mail haciendose el gracioso...'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cofcJplmJ2Q/RjFO60MXUEI/AAAAAAAAACk/Hkh8Mqbi1_E/s72-c/yahoomailfunny.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-245043042537032283</id><published>2007-04-22T10:46:00.001-06:00</published><updated>2009-04-20T15:43:44.574-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='seguridad .net'/><title type='text'>Distribuir configuracion de seguridad de .NET 2.0 sin usar SDK o caspol</title><content type='html'>Este articulo aplica a: Seguridad en Microsoft .NET Framework 2.0&lt;br /&gt;keywords: CAS, full, trust, assembly, security, policy, mscorcfg.msc caspol.exe&lt;br /&gt;&lt;br /&gt;Cuando quieres ajustar la configuracion de seguridad en .NET 2.0 usas la herramienta mscorcfg.msc (Control Panel/Administrative Tools/Microsoft .NET Framework 2.0 Configuration)&lt;br /&gt;&lt;br /&gt;Peeeeero, algunas veces uno necesita distribuir esa misma configuracion a (muchas o algunas) otras maquinas en produccion, y el problema es que la herramienta mscorcfg.msc solo esta incluida como parte del SDK el cual mide como 354MB, otra opcion es usar la linea de comando, pero eso como que asusta a la mayoria de la gente, &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=mscorcfg.msc+2.0+sdk+download&amp;amp;btnG=Search"&gt;hay mucha gente que tiene este problema&lt;/a&gt;, asi que decidi poner aqui una solucion facil para este problema.&lt;br /&gt;&lt;br /&gt;Les menti en el titulo del articulo, si necesitas el SDK, pero solo en una maquina, y como eres un desarrollador (cierto?), supongo que tienes Visual Studio instalado en al menos una maquina, y ahi esta incluido el SDK, si no tienes el mentado SDK en ninguna maquina pues vas a tener que &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=fe6f2099-b7b4-4f47-a244-c96d69c35dec&amp;amp;displaylang=en"&gt;bajarlo&lt;/a&gt; e instalarlo al menos en una maquina.&lt;br /&gt;&lt;br /&gt;Una vez que ya tengas la herramienta mscorcfg, &lt;span style="font-weight: bold;"&gt;configura la maquina&lt;/span&gt; con los permisos que quieras distribuir, asigna confianza a los assemblies (trust assemblies), ajusta las zonas de seguridad (adjust zone security settings), etc, cuando hallas terminado de hacer los ajustes necesarios, usa esta opcion&lt;br /&gt;&lt;br /&gt;Configure Code Access Security Policy (configurar politicas de seguridad que definen que tantos permisos le damos al codigo)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cofcJplmJ2Q/RigE0G730OI/AAAAAAAAACM/qipurKnw4BI/s1600-h/dotNetFramework20Config.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_cofcJplmJ2Q/RigE0G730OI/AAAAAAAAACM/qipurKnw4BI/s400/dotNetFramework20Config.PNG" alt="" id="BLOGGER_PHOTO_ID_5055295874984825058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Create Deployment Package (crear paquete de distribucion)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cofcJplmJ2Q/RigFC2730PI/AAAAAAAAACU/vcHRQT-bucg/s1600-h/CreateDeploymentPackage.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_cofcJplmJ2Q/RigFC2730PI/AAAAAAAAACU/vcHRQT-bucg/s400/CreateDeploymentPackage.PNG" alt="" id="BLOGGER_PHOTO_ID_5055296128387895538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Veras un dialogo el cual no tiene muchas opciones&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cofcJplmJ2Q/RigFqm730QI/AAAAAAAAACc/rN-1DsUpSC0/s1600-h/DeploymentPackageWizard.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_cofcJplmJ2Q/RigFqm730QI/AAAAAAAAACc/rN-1DsUpSC0/s400/DeploymentPackageWizard.PNG" alt="" id="BLOGGER_PHOTO_ID_5055296811287695618" border="0" /&gt;&lt;/a&gt;Este dialogo es un poco extraño y  buggy*, pero solo tienes que especificar un nombre de archivo (que sera creado) en un &lt;span style="font-weight: bold;"&gt;folder valido (existente)&lt;/span&gt;, por ejemplo c:\SecuritySettings&lt;br /&gt;&lt;br /&gt;La otra cosa que seguro querras cambiar es "security policy level to deploy" (nivel de la politica de seguridad que deseas distribuir), si vas a distribuir a maquinas en produccion querras usar "machine" (aplica a todos los usuarios de la maquina) o "user" (solo al usuario bajo el que lo instales, click Next, luego finish.&lt;br /&gt;&lt;br /&gt;Lo que este programita hace es que nos &lt;span style="font-weight: bold;"&gt;crea un paquete que contiene toda la configuracion de seguridad de .net en esa maquina&lt;/span&gt;, y lo pone en un simple y pequeño programita de instalacion que puedes correr en cualquier maquina para ajustar la configuracion de seguridad facil y rapido.&lt;br /&gt;&lt;br /&gt;Asi que ahora lo unico que necesitas hacer es llevar ese programita a todas las maquinas a donde quieras distribuir la configuracion de seguridad, correrlo y listo&lt;br /&gt;&lt;br /&gt;Cuando corres ese programita naturalmente estaras esperando un dialogo que te pregunte darle click en next, next, next, finish, pero &lt;span style="font-weight: bold;"&gt;no habra ningun dialogo&lt;/span&gt;, veras una ventanita aparecer por un segundo y luego desaparece y eso es todo lo que hace (es posible que necesites correr el programa con privilegios mas elevados que los que tengas en cada maquina), si pudiste correr el programita, la configuracion de seguridad ha sido cambiada exitosamente.&lt;br /&gt;&lt;br /&gt;asi que ahora si "corre en mi maquina!", puedes hacer que corra en otras maquinas tambien =o)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-245043042537032283?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/245043042537032283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=245043042537032283' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/245043042537032283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/245043042537032283'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/04/distribuir-configuracion-de-seguridad.html' title='Distribuir configuracion de seguridad de .NET 2.0 sin usar SDK o caspol'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cofcJplmJ2Q/RigE0G730OI/AAAAAAAAACM/qipurKnw4BI/s72-c/dotNetFramework20Config.PNG' height='72' width='72'/><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-6107982622917948042</id><published>2007-04-18T18:22:00.000-06:00</published><updated>2007-04-18T18:24:42.785-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Microsoft presenta campaña “Estrella Solidaria"</title><content type='html'>&lt;a href="http://www.diarioti.com/gate/n.php?id=13878"&gt;me encuentro con esto&lt;/a&gt; en el blog de &lt;a href="http://ecuador.latindevelopers.net/blogs/zero4/default.aspx"&gt;Zero4&lt;/a&gt;, lo cual me parece excelente. a echarle ganas jovenes!&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="titulo-head"&gt; La empresa donará cinco dólares a la ONG Aldeas Infantiles SOS por cada desarrollador que obtenga la cuarta estrella en Latinoamérica.&lt;/span&gt; &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-6107982622917948042?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.diarioti.com/gate/n.php?id=13878' title='Microsoft presenta campaña “Estrella Solidaria&quot;'/><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/6107982622917948042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=6107982622917948042' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6107982622917948042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6107982622917948042'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/04/microsoft-presenta-campaa-estrella.html' title='Microsoft presenta campaña “Estrella Solidaria&quot;'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-3690470197030193261</id><published>2007-04-16T22:21:00.000-06:00</published><updated>2007-04-16T22:35:46.385-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogs'/><title type='text'>Todo lo que bloguees podra y sera usando en tu contra</title><content type='html'>En algun momento la mayoria de los blogueros escriben algun articulo &lt;a href="http://www.joelonsoftware.com/items/2006/09/01b.html"&gt;controversial&lt;/a&gt;, &lt;a href="http://scobleizer.com/"&gt;algunos blogueros &lt;/a&gt;lo hacen tan frequentemente que ya ni genera tanta reaccion en la blogosfera.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://radar.oreilly.com/archives/2007/03/call_for_a_blog_1.html"&gt;Algunos tratan de dictar reglas&lt;/a&gt; para la blogosfera, lo cual practicamente le quita el sentido mismo al blog, para mi ese tipo de "llamadas a la comunidad" son solamente gente tratando de crear el &lt;a href="http://www.google.com/search?hl=en&amp;q=%22new+buzzword%22&amp;amp;btnG=Search"&gt;siguiente buzzword&lt;/a&gt; o ganar (en algunos casos mas) popularidad y todo lo que viene ligado a esto; si tu eres un "z list" bloguer como yo, probablemente no haria diferencia alguna si pusieras &lt;a href="http://ebersysesp.blogspot.com/2006/11/dos-chequeos-en-uno-usando.html"&gt;algo incorrecto&lt;/a&gt; en tu blog.&lt;br /&gt;&lt;br /&gt;Leyendo mis blogs hoy me encuentro con &lt;a href="http://codebetter.com/blogs/sam.gentile/archive/2007/04/15/Wanted_3A00_-A-Windows-Edition-for-Non_2D00_Idiots.aspx"&gt;este post&lt;/a&gt; de Sam Gentile: "Se busca: Una edicion de Windows para No-Idiotas"; y el problema que tengo con esto es en llamar &lt;span style="font-weight: bold;"&gt;idiotas&lt;/span&gt; a los usuarios regulares. Si yo uso mucho &lt;a href="http://ebersysesp.blogspot.com/search?q=teclado"&gt;el teclado&lt;/a&gt; y la &lt;a href="http://ebersysesp.blogspot.com/search?q=comando"&gt;linea de comando&lt;/a&gt;, me hace eso un &lt;a href="http://codebetter.com/blogs/scott.bellware/archive/2007/04/08/161451.aspx"&gt;usuario avanzado&lt;/a&gt; y a los que no lo usan los hace &lt;a href="http://codebetter.com/blogs/sam.gentile/archive/2007/04/15/Wanted_3A00_-A-Windows-Edition-for-Non_2D00_Idiots.aspx"&gt;idiotas&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;Se cuidadoso cuando escribas en tu blog, sin importar que tan popular sea tu blog, nunca sabes cuando podria usarse en tu contra (en una entrevista de trabajo por ejemplo), yo no voy a recomendar un codigo de conducta, simplemente digo que hay que usar el sentido comun y respetar a tus lectores y respetar a la gente en general.&lt;br /&gt;&lt;br /&gt;buenas noches&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-3690470197030193261?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/3690470197030193261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=3690470197030193261' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/3690470197030193261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/3690470197030193261'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/04/todo-lo-que-bloguees-podra-y-sera.html' title='Todo lo que bloguees podra y sera usando en tu contra'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-3973908998152420285</id><published>2007-04-14T13:09:00.000-06:00</published><updated>2007-04-14T13:10:04.058-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fsharp'/><title type='text'>hola mundo desde F#</title><content type='html'>&lt;a href="http://juztinwilzon.blogspot.com/"&gt;Justin&lt;/a&gt; y yo estamos empezando a jugar con F# (version &lt;a href="http://blogs.msdn.com/dsyme/archive/2007/04/06/f-1-9-1-released.aspx"&gt;1.9.1 esta disponible&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;open System;&lt;br /&gt;Console.WriteLine("hello world");&lt;br /&gt;let name = Console.ReadLine();;&lt;br /&gt;Console.WriteLine("hello "+ name);&lt;br /&gt;Console.Read();&lt;br /&gt;&lt;br /&gt;ya veremos que tal nos va, esperamos bloguear sobre el tema pronto&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-3973908998152420285?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/3973908998152420285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=3973908998152420285' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/3973908998152420285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/3973908998152420285'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/04/hola-mundo-desde-f.html' title='hola mundo desde F#'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-3885372237249031031</id><published>2007-04-14T12:36:00.001-06:00</published><updated>2008-11-15T03:52:53.113-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chistoso'/><title type='text'>el fin de mi guarda pantallas, gracias McAfee</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cofcJplmJ2Q/RiLMqd96fKI/AAAAAAAAAB4/nox7lPVZglk/s1600-h/screensavergone.GIF"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_cofcJplmJ2Q/RiLMqd96fKI/AAAAAAAAAB4/nox7lPVZglk/s400/screensavergone.GIF" alt="" id="BLOGGER_PHOTO_ID_5053826761834003618" border="0" /&gt;&lt;/a&gt;He usado el screen saver BSD (Blue Screen of Death) por muchisimo tiempo... ahora se ha ido =o(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-3885372237249031031?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/3885372237249031031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=3885372237249031031' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/3885372237249031031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/3885372237249031031'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/04/el-fin-de-mi-guarda-pantallas-gracias.html' title='el fin de mi guarda pantallas, gracias McAfee'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cofcJplmJ2Q/RiLMqd96fKI/AAAAAAAAAB4/nox7lPVZglk/s72-c/screensavergone.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-7024534779142151491</id><published>2007-04-14T12:23:00.000-06:00</published><updated>2007-04-14T12:31:06.489-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='utilidades'/><title type='text'>actualizacion de Notepad lista</title><content type='html'>...al menos de &lt;a href="http://www.flos-freeware.ch/notepad2.html"&gt;Notepad2&lt;/a&gt; =o)&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;p&gt;Los cambios mas importantes en Notepad 2.0.x comparado con version 1.0.12 incluye soporte para guardar la configuracion del programa en archivo .ini, dialogos modeless de "encontrar y reemplazar", operaciones "encontrar y reemplazar" con soporte multilinea (usando expresiones con diagonal invertida), notificacion opcional de cambio de archivos y mucho mas.&lt;/p&gt;Hay tambien algunas regresiones, por ejemplo el soporte de la pagina de codigo ANSI ha sido reducido al default en el sistema, los bookmarks han sido elminados, algunos esquemas de sintaxis han sido eliminados y &lt;span style="font-weight: bold;"&gt;Notepad2 ya no corre en Windows 9X&lt;/span&gt;, si necesitas algunas de esas cosas tendras que quedarte con Notepad 1.0.12.&lt;br /&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;a href="http://www.flos-freeware.ch/np2txt.html"&gt;la lista completa de actualizaciones la encuentras aqui (solo ingles)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;si aun usas Notepad podrias darle un chance al Notepad2, es tan ligero y rapido como Notepad, pero muchisimo mas poderoso&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-7024534779142151491?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.flos-freeware.ch/notepad2.html' title='actualizacion de Notepad lista'/><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/7024534779142151491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=7024534779142151491' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/7024534779142151491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/7024534779142151491'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/04/actualizacion-de-notepad-lista.html' title='actualizacion de Notepad lista'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-6329193977863506414</id><published>2007-03-28T19:23:00.000-06:00</published><updated>2007-03-28T19:33:01.703-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='utilidades'/><title type='text'>hora de actualizar tu lector de archivos PDF</title><content type='html'>Si aun no estas usando &lt;a href="http://www.foxitsoftware.com/"&gt;Foxit reader &lt;/a&gt;deja de hacer lo que estas haciendo y bajatelo de volada, ahora que &lt;span style="font-weight: bold;"&gt;si ya lo habias usado y te habia dado problemas con ciertos archivos pdf&lt;/span&gt;, pues ahora es el momento de darle una segunda oportunidad, acaban de sacar la version 2.0 y al menos en mi experiencia ya he podido abrir los archivos que antes no podia abrir&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Foxit reader es muchisimo mas rapido que el acrobar reader&lt;/span&gt;, y &lt;span style="font-weight: bold;"&gt;no &lt;/span&gt;te &lt;span style="font-weight: bold;"&gt;instala nada de porquerias adicionales&lt;/span&gt;, simplemente lo que uno esperaria de un "lector de archivos pdf"... es lo unico que hace, y (ahora) lo hace bien&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-6329193977863506414?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.foxitsoftware.com/' title='hora de actualizar tu lector de archivos PDF'/><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/6329193977863506414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=6329193977863506414' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6329193977863506414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6329193977863506414'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/03/hora-de-actualizar-tu-lector-de.html' title='hora de actualizar tu lector de archivos PDF'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-8200815968803683394</id><published>2007-03-18T15:25:00.000-06:00</published><updated>2007-03-18T15:29:00.621-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='componentes'/><title type='text'>arreglar el caching de RadWindow</title><content type='html'>Este articulo aplica especificamente al componente &lt;a href="http://www.telerik.com/products/aspnet/controls/window/overview.aspx"&gt;RadWindow de Telerik&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El cual es un wrapper* buenisimo para crear ventanitas dentro de tus aplicaciones asp.net, solo que tiene un problema; cachea* contenido automaticamente; me tomo algunas horas encontrar la solucion, pero es muy sencillo, solo basta una propiedad:&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;radW:RadWindow&lt;br /&gt;               ID="WindowAttachFile"&lt;br /&gt;               runat="Server"&lt;br /&gt;               NavigateUrl="AttachFile.aspx"&lt;br /&gt;               &lt;b&gt;ReloadOnShow="true"&lt;/b&gt;&lt;br /&gt;               Height="230px"&lt;br /&gt;               Width="410px" Modal="true"&lt;/p&gt;Espero que le sea de utilidad a algun alma perdida&lt;br /&gt;salu2&lt;br /&gt;* como se dicen esas palabras en cristiano y que se oiga decente?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-8200815968803683394?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/8200815968803683394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=8200815968803683394' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/8200815968803683394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/8200815968803683394'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/03/arreglar-el-caching-de-radwindow.html' title='arreglar el caching de RadWindow'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-6290821616182922631</id><published>2007-03-15T17:33:00.000-06:00</published><updated>2007-03-15T17:38:12.479-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>google reader esta siendo actualizado... inquietante</title><content type='html'>Han cambiado algunos links a botones y algunas otras cosas mas, pero de pronto me doy cuenta que tengo muchas cosas en google, y "un dia sin google" me afectaria bastante, y a ustedes que tal les iria?&lt;br /&gt;&lt;br /&gt;Por cierto, checando mi google analytics me di cuenta que alguien de Moscu y alguien de Shangai me visitan a este blog en español, va un saludo y gracias por visitar&lt;br /&gt;&lt;br /&gt;salu2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-6290821616182922631?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/6290821616182922631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=6290821616182922631' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6290821616182922631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6290821616182922631'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/03/google-reader-esta-siendo-actualizado.html' title='google reader esta siendo actualizado... inquietante'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-6891141740482576720</id><published>2007-03-10T16:43:00.000-07:00</published><updated>2007-03-10T17:40:43.803-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='practicas'/><category scheme='http://www.blogger.com/atom/ns#' term='excepciones'/><title type='text'>tres simples preguntas para un buen manejo de excepciones</title><content type='html'>Se han dicho muchas cosas sobre el manejo correcto de excepciones, pero yo creo que todo se puede resumir en 3 simples preguntas:&lt;br /&gt;&lt;br /&gt;Que?&lt;br /&gt;Cuando?&lt;br /&gt;Donde?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;que paso y que datos causaron esto?&lt;/span&gt;, Esta es probablemente el area donde los desarrolladores tienen mas problema; frecuentemente lo unico que contestan es "&lt;span style="font-weight: bold;"&gt;que paso?&lt;/span&gt;", pero eso no es suficiente; vamos a ver porque:&lt;br /&gt;&lt;br /&gt;digamos que tenemos codigo de manejo de errores y...&lt;br /&gt;&lt;br /&gt;la aplicacion nos da este mensaje de error (o se guarda en un log): "La informacion del empleado es incorrecta"&lt;br /&gt;&lt;br /&gt;el error &lt;span style="font-weight: bold;"&gt;me dice que paso, pero es demasiado abierto&lt;/span&gt;, la descripcion es demasiada vaga, hay muchisimas cosas que podrian estar mal con la informacion del emploeado&lt;br /&gt;&lt;br /&gt;Ok, entonces vamos a mejorar el mensaje de error, solo para este ejemplo, digamos que validamos la ciudad; cambiamos el codigo y ahora el error es:&lt;br /&gt;&lt;br /&gt;"el valor del campo  Ciudad no es valido"&lt;br /&gt;&lt;br /&gt;Este mensaje es mucho mejor que el anterior, al menos ya se donde especificamente tengo el problema; la cuestion es que este mensaje de error &lt;span style="font-weight: bold;"&gt;solo me sirve en el momento en el que sucede&lt;/span&gt;, y solo le sirve a la persona/proceso al que le sucedio&lt;br /&gt;&lt;br /&gt;Asi que vamos a mejorar aun mas:&lt;br /&gt;&lt;br /&gt;"[ILEGIBLE] no es una ciudad valida"&lt;br /&gt;&lt;br /&gt;AH!!... &lt;span style="font-weight: bold;"&gt;ahora se exactamente que paso&lt;/span&gt;, y &lt;span style="font-weight: bold;"&gt;que es lo que lo esta causando&lt;/span&gt;, aun si yo solo estuviera leyendo el error en un LOG file, sabria exactamente que paso, lo que es mas, &lt;span style="font-weight: bold;"&gt;puedo analizar la lista de errores&lt;/span&gt; y si veo que este error es muy comun, &lt;span style="font-weight: bold;"&gt;podria cambiar/mejorar las reglas&lt;/span&gt; en la aplicacion basado en la informacion que tengo; &lt;span style="font-weight: bold;"&gt;tambien me podria dar cuenta de situaciones&lt;/span&gt; que si no tuviera esta informacion pues simplemente no sabria, y los usuarios de mi aplicacion "aprenderian" como se tiene que usar la aplicacion, en vez de que se mejorara el proceso, los  usuarios tendrian que hacer algo talvez mas lento porque mi aplicacion no da la informacion necesaria&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cuando?&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;siempre&lt;/span&gt; debes incluir fecha y hora con cada error&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Donde?&lt;/span&gt; Esto es casi automatico con esto del stack trace, pero muchas veces el mismo codigo se  usa (por ejemplo) desde una aplicacion web y desde un servicio web (estoy haciendo eso mismo ahora) y seria bueno que el mensaje de error tuviera un campo que me indicara de donde se genero el error, si de la aplicacion web o del servicio web&lt;br /&gt;&lt;br /&gt;Esto ultimo yo lo he solucionado teniendo un campo adicional en mi tabla de errores llamado "Origen", entonces en la capa mas alta, capturo los errores y lo mando grabar a mi tabla pasando el origen de donde se genero el error, web o servicio web&lt;br /&gt;&lt;br /&gt;En resumen, &lt;span style="font-weight: bold;"&gt;pongan especial atencion al&lt;/span&gt; "&lt;span style="font-weight: bold;"&gt;que?&lt;/span&gt;", recuerden que el saber que paso no me dice mucho, los mensajes de error deben contener los datos que causaron el problema, tal como #Empleado, #Producto, propiedad especifica que causo el problema, etc&lt;br /&gt;&lt;br /&gt;He visto innumerables veces programadores que tienen que correr una aplicacion varias veces para reproducir el problema, o lo que es peor, el (tristemente) clasico "&lt;span style="font-weight: bold;"&gt;hableme cuando vea el error otravez!&lt;/span&gt;", simplemente porque el log error no contiene informacion que les diga donde es que y que causo el error y que hacer para arreglarlo.&lt;br /&gt;&lt;br /&gt;las excepciones deberian ser algo como&lt;br /&gt;&lt;br /&gt;el derecho de [Escritura] no se encontro para el empleado [101]&lt;br /&gt;&lt;br /&gt;en vez de&lt;br /&gt;&lt;br /&gt;No se pudo grabar el registro!&lt;br /&gt;&lt;br /&gt;Con la informacion de este ultimo ejemplo que les doy, yo puedo ir a la base de datos inmediatamente y darle derechos de escritura al empleado 101 y se acabo el problema!&lt;br /&gt;&lt;br /&gt;Hay un mar de diferencia de un mensaje de error a otro, y ese mar de diferencia es lo que los va a hacer &lt;span style="font-weight: bold;"&gt;programadores mucho mas productivos&lt;/span&gt; a la hora de mantener su mismo software.&lt;br /&gt;&lt;br /&gt;El software siempre va a tener bugs, la diferencia es cuanto tiempo les cuesta arreglar un bug cuando estos salen a la vista&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-6891141740482576720?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/6891141740482576720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=6891141740482576720' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6891141740482576720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6891141740482576720'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/03/tres-simples-preguntas-para-un-buen.html' title='tres simples preguntas para un buen manejo de excepciones'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-7197658007995913275</id><published>2007-03-01T22:08:00.000-07:00</published><updated>2008-11-15T03:52:53.490-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><title type='text'>Yo quiero una Mac!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_42YYHgpVH8M/ReXXNkKNPZI/AAAAAAAAAA8/YP_uTefDFLM/s1600-h/TheGreatestThingInTheWorld.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 396px; height: 249px;" src="http://3.bp.blogspot.com/_42YYHgpVH8M/ReXXNkKNPZI/AAAAAAAAAA8/YP_uTefDFLM/s200/TheGreatestThingInTheWorld.JPG" alt="" id="BLOGGER_PHOTO_ID_5036668386328526226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Hace buen rato he tenido la curiosidad de comprarme una Mac, me he detenido mas que nada por el precio, pero ahora definitivamente me voy a comprar una =o)&lt;br /&gt;Una de las razones principales es &lt;a href="http://www.parallels.com/en/products/desktop/"&gt;parallels&lt;/a&gt;. Ya hemos visto maquinas virtuales desde hace buen tiempo, en las cuales el sistema operativo "invitado" vive en su propia ventana (hasta ahi todo normalito).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;bueno, pues Parallels lleva esto a otro nivel&lt;/span&gt;, te permite integrar la Mac y el sistema operativo en el &lt;span style="font-weight: bold;"&gt;mismo escritorio de trabajo&lt;/span&gt;! de tal forma que te puedes cambiar de una app mac a una app de windows en el mismo escritorio, eso es increible!&lt;br /&gt;&lt;br /&gt;checate la foto para que veas mas detalle, las aplicaciones Mac y Windows se "mezclan" naturalmente como si fuera un solo OS, aunque las aplicaciones vivan en OSes diferentes,&lt;br /&gt;Las aplicaciones que corren en Windows se muestran dentro de la "barra" de la Mac.&lt;br /&gt;Incluso te permite copiar y pegar entre los dos (y segun me cuenta &lt;a href="http://juztinwilzon.blogspot.com/"&gt;Justin &lt;/a&gt; tambien te permite hacer "drag and drop")&lt;br /&gt;&lt;br /&gt;Esto es buen software.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.macboy.com/cartoons/switch/dude/"&gt;dude!, I'm getting a Mac&lt;/a&gt;... solo me espero a que salga Leopard =o)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-7197658007995913275?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://juztinwilzon.blogspot.com/2007/02/greatest-thing-ever.html' title='Yo quiero una Mac!'/><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/7197658007995913275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=7197658007995913275' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/7197658007995913275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/7197658007995913275'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/03/yo-quiero-una-mac.html' title='Yo quiero una Mac!'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_42YYHgpVH8M/ReXXNkKNPZI/AAAAAAAAAA8/YP_uTefDFLM/s72-c/TheGreatestThingInTheWorld.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-5627865447492799223</id><published>2007-02-26T11:07:00.000-07:00</published><updated>2007-02-26T11:15:27.914-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='third party'/><title type='text'>Esto es lo que pasa cuando olvidas el folder RadControls de Telerik</title><content type='html'>Este articulo aplica especificamente a aplicaciones asp.net desarrolladas usando &lt;a href="http://www.telerik.com/products/aspnet/overview.aspx"&gt;Telerik Rad Controls&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ayer tuve un lapsus tontus, olvide copiar el folder RadControls al servidor y no podia salir de este error:&lt;br /&gt;&lt;br /&gt;Object reference not set to an instance of an object.&lt;br /&gt;  at Telerik.WebControls.RadWindowManager.BuildTemplates()&lt;br /&gt;  at Telerik.WebControls.RadWindowManager.Render(HtmlTextWriter writer)&lt;br /&gt;  at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)&lt;br /&gt;  at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)&lt;br /&gt;  at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)&lt;br /&gt;  at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)&lt;br /&gt;  at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)&lt;br /&gt;  at System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer)&lt;br /&gt;  at System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output)&lt;br /&gt;  at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)&lt;br /&gt;  at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)&lt;br /&gt;  at System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer)&lt;br /&gt;  at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)&lt;br /&gt;  at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)&lt;br /&gt;  at System.Web.UI.Control.Render(HtmlTextWriter writer)&lt;br /&gt;  at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)&lt;br /&gt;  at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)&lt;br /&gt;  at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)&lt;br /&gt;  at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)&lt;br /&gt;  at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)&lt;br /&gt;  at System.Web.UI.Page.Render(HtmlTextWriter writer)&lt;br /&gt;  at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)&lt;br /&gt;  at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)&lt;br /&gt;  at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)&lt;br /&gt;  at Telerik.WebControls.RadAjaxManager.AJAX_Page_Render(HtmlTextWriter output, Control container)&lt;br /&gt;  at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)&lt;br /&gt;  at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)&lt;br /&gt;  at System.Web.UI.Page.Render(HtmlTextWriter writer)&lt;br /&gt;  at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)&lt;br /&gt;  at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)&lt;br /&gt;  at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)&lt;br /&gt;  at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)&lt;br /&gt;&lt;br /&gt;el manejo de excepciones de Telerik podria ser mejor para proporcionar informacion mas detallada, pero bueno... solo necesitaba otro &lt;a href="http://foxsys.blogspot.com/"&gt;par de ojos&lt;/a&gt; para ver el problema&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-5627865447492799223?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/5627865447492799223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=5627865447492799223' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5627865447492799223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5627865447492799223'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/02/esto-es-lo-que-pasa-cuando-olvidas-el.html' title='Esto es lo que pasa cuando olvidas el folder RadControls de Telerik'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-3882304975548345264</id><published>2007-02-23T15:33:00.000-07:00</published><updated>2007-02-23T15:39:07.887-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogs'/><title type='text'>que haces programando?</title><content type='html'>&lt;a href="http://www.picacodigos.com/PermaLink,guid,55dee0a7-f3da-4516-b5d4-808444bba888.aspx"&gt;excelente post&lt;/a&gt; de Carlos Manuel Perez, para todos los que realmente amamos esta profesion y que tenemos una pasion verdadera por lo que hacemos y nos falta tiempo para programar mas&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt; Si eres de los que haces tu ocho horas de curro y al salir no  quieres ni ver un teclado, ¿qué haces programando?&lt;br /&gt;&lt;br /&gt;Si eres de los que sabes las cuatro características básicas de  tu lenguaje para hacer los típicos programas de gestión; es  decir ni más ni menos que lo que te exige el día a día, y no  coges un libro de programación, ni quieres aprender nada nuevo,  ni lees técnicas para mejorar, ¿qué haces programando?&lt;br /&gt;&lt;br /&gt;Si tu estilo de programación es el &lt;i&gt;copiar y pegar código  encontrado en Google&lt;/i&gt;, sin intentar entenderlo, sin saber  cómo modificarlo para tus usos, ¿qué haces programando?&lt;br /&gt;&lt;br /&gt;Si los usuarios finales no te importan (o peor, los desprecias)  y piensas que lo que estás haciendo es un ente abstracto que no  va a usar nadie que te importe y tú te dedicas a tirar código (o  peor, a fingirlo) durante ocho horas exclusivamente para que te  paguen a fin de mes, ¿qué haces programando?&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;salu2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-3882304975548345264?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.picacodigos.com/PermaLink,guid,55dee0a7-f3da-4516-b5d4-808444bba888.aspx' title='que haces programando?'/><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/3882304975548345264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=3882304975548345264' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/3882304975548345264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/3882304975548345264'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/02/que-haces-programando.html' title='que haces programando?'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-2525687263124771397</id><published>2007-02-15T21:47:00.000-07:00</published><updated>2008-11-15T03:52:53.742-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Antes de que preguntes...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cofcJplmJ2Q/RdM6WxOA7fI/AAAAAAAAABU/RWLEu77QgaE/s1600-h/I-will-use-Google-before-asking-dumb-questions.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_cofcJplmJ2Q/RdM6WxOA7fI/AAAAAAAAABU/RWLEu77QgaE/s400/I-will-use-Google-before-asking-dumb-questions.gif" alt="" id="BLOGGER_PHOTO_ID_5031429371546627570" border="0" /&gt;&lt;/a&gt;"Usare google antes de hacer preguntas idiotas"&lt;br /&gt;En estos dias todo mundo piensa que saben como usar google (mas o menos de la misma manera que creen saber usar Windows... uff)&lt;br /&gt;&lt;br /&gt;Para muchas (la mayoria) cosas funciona bien si le ponemos unas cuantas palabras (aunque ayuda bastante saber cuales palabras no poner), pero algunas veces no es tan facil encontrar las cosas, ahi es cuando necesitas tener tus habilidades de busqueda en google, como minimo debes tener estas en tu arsenal:&lt;br /&gt;&lt;br /&gt;- intitle: busca en el titulo de las paginas&lt;br /&gt;- link: Te da una lista de sitios que tienen links al sitio que especifiques (parece que no funciona muy bien)&lt;br /&gt;- site: busca solo en el sitio que especifiques&lt;br /&gt;- intext: busca unicamente en el texto (omite links, titulos, etc)&lt;br /&gt;- inanchor: busca en las palabras incluidas en el link (no en el link en si)&lt;br /&gt;- inurl: busca donde la palabra se encuentre en el url&lt;br /&gt;- filetype: nos regresara links a archivos del tipo que especifiquemos&lt;br /&gt;- define: te da una definicion de la palabra que le pongas, ademas de links a paginas relacionadas&lt;br /&gt;- usar comillas&lt;br /&gt;- usar comodines&lt;br /&gt;- usar OR, AND&lt;br /&gt;- usar -&lt;br /&gt;- usar rangos&lt;br /&gt;&lt;br /&gt;Si no sabes usar todos esos "comandos" te falta aprender bastante para que encuentres las cosas mucho mas rapido.&lt;br /&gt;Ademas de estos comandos hay muchas herramientas incluidas dentro de google.com, por ejemplo::&lt;br /&gt;&lt;br /&gt;- una calculadora (ponle ahi sumas, restas, etc... veras)&lt;br /&gt;- conversiones (metros, litros, grados... lo que se te antoje)&lt;br /&gt;- informacion sobre UPS, Fed Ex, USPS, VIN (Estados Unidos solamente... creo)&lt;br /&gt;- peliculas&lt;br /&gt;- etc, etc, etc (cuando me van a agregar translate:????)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.wolf-howl.com/google/google-search-tricks-tips-and-hints/"&gt;checate esta pagina para una lista muy completa de las cosas que puedes hacer en google&lt;/a&gt;  (ingles), incluyendo todas las que puse en mi lista y muchas mas, aprendetelas y veras como encuentras mucho mas rapido lo que necesites&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-2525687263124771397?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/2525687263124771397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=2525687263124771397' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2525687263124771397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2525687263124771397'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/02/antes-de-que-preguntes.html' title='Antes de que preguntes...'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cofcJplmJ2Q/RdM6WxOA7fI/AAAAAAAAABU/RWLEu77QgaE/s72-c/I-will-use-Google-before-asking-dumb-questions.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-8457523462692611904</id><published>2007-02-13T11:41:00.000-07:00</published><updated>2007-02-10T22:57:28.781-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='practicas'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>adios nombre de usuario y password</title><content type='html'>Cada que uses usuarios y passwords en tus aplicaciones, considera usar System.Net.NetworkCredential para mantener y pasar la informacion en las funciones, esta clase encapsula estos campos y ademas te permite extender tu aplicacion en el futuro si es que quisieras incluir un dominio.&lt;br /&gt;&lt;br /&gt;En mi caso estoy usando esta clase ya que en nuestro sistema implementamos una arquitectura de plugins con el cual me puedo autenticar a cualquier sistema que implemente una interface muy simple, usando esta clase me da la extensibilidad de poder autenticar con Windows, Active Directory o cualquier sistema especifico&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-8457523462692611904?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/8457523462692611904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=8457523462692611904' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/8457523462692611904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/8457523462692611904'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/02/adios-nombre-de-usuario-y-password.html' title='adios nombre de usuario y password'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-8057104367426334768</id><published>2007-02-10T22:46:00.000-07:00</published><updated>2007-02-09T19:48:13.182-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gemas'/><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>variables magicas para ayudarnos a debuguear excepciones</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;Este articulo aplica a&lt;a name="codeExampleToggle"&gt; C#, J#, y Visual Basic.&lt;/a&gt;&lt;br /&gt;Ya habia leido sobre estas variables hace mucho tiempo, pero no podia encontrar nada acerca de estas magicas cosas por ningun lado, el problema mas que nada es que no se llaman magicas ni estan escondidas, estan documentadas y se llaman &lt;a href="http://msdn2.microsoft.com/en-us/library/ms164891%28VS.80%29.aspx"&gt;Pseudovariables&lt;/a&gt;;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Pseudovariables son terminos usados para mostrar cierta informacion en una ventana de variables o el dialogo QuickWatch. Puedes poner una pseudovariable de la misma manera que pondrias una variable normal. Pero las pseudovariables no son variables y no corresponden a variables en tu programa.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Pero bueno, no creo que mucha gente sepa sobre estas, asi que ahi les van:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;tt&gt;&lt;span style="font-weight: bold;"&gt;$exception&lt;/span&gt;: Muestra informacion sobre la ultima excepcion. Si no ha ocurrido una excepcion evaluar $exception nos muestra un mensaje de error. En Visual C# solamente, cuando el asistente de excepciones esta desabilitado, &lt;span style="font-weight: bold;"&gt;$exception se agrega automaticamente a la ventana de locales cuando sucede una excepcion.&lt;/span&gt;&lt;/tt&gt;&lt;/li&gt;&lt;li&gt;&lt;tt&gt;&lt;span style="font-weight: bold;"&gt;$user&lt;/span&gt;: Muestra una estructura con informacion de la cuenta del usuario corriendo la aplicacion. Por cuestiones de seguridad la informacion sobre el password no se muestra.&lt;/tt&gt;&lt;/li&gt;&lt;/ul&gt;Cuando estas debugueando una excepcion podrias tener algun codigo asi:&lt;br /&gt;&lt;br /&gt;try {&lt;br /&gt; //algun codigo&lt;br /&gt;} catch (Exception e) {&lt;br /&gt; //no necesitas &lt;span style="font-weight: bold;"&gt;e&lt;/span&gt; aqui,  solo la pusiste para tener la informacion de la excepcion en la ventana de Watch&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Podrias escribir el codigo asi:&lt;br /&gt;try {&lt;br /&gt; //algun codigo&lt;br /&gt;catch { } //pon el breakpoint en esta linea, inspecciona $exception (Debug, Watch, Watch 1, escribe $exception en esta ventana)&lt;br /&gt;&lt;br /&gt;y obtener la misma informacion.&lt;br /&gt;&lt;br /&gt;La pseudovariable &lt;span style="font-weight: bold;"&gt;$user&lt;/span&gt; esta claramente explicada, no hay mas que decir.&lt;br /&gt;&lt;br /&gt;En codigo nativo tenemos algunas pseudovariables mas disponibles, &lt;a href="http://msdn2.microsoft.com/en-us/library/ms164891%28VS.80%29.aspx"&gt;checate el link&lt;/a&gt; si estas interesado.&lt;br /&gt;&lt;br /&gt;son las pequeñas cosas...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-8057104367426334768?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://msdn2.microsoft.com/en-us/library/ms164891(VS.80).aspx' title='variables magicas para ayudarnos a debuguear excepciones'/><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/8057104367426334768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=8057104367426334768' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/8057104367426334768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/8057104367426334768'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/02/variables-magicas-para-ayudarnos.html' title='variables magicas para ayudarnos a debuguear excepciones'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-841619453287495018</id><published>2007-02-09T19:42:00.000-07:00</published><updated>2007-02-09T16:31:01.682-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='hacking'/><title type='text'>ataque DOS contra google usando las herramientas de google?</title><content type='html'>Me acabo de encontrar &lt;a href="http://googlesystem.blogspot.com/2007/02/how-to-backup-blogger-blog.html"&gt;post en el blog Google Operating System&lt;/a&gt; que muestra como puedes hacer un respaldo de tu blog, si es que lo tienes en blogspot.com, basicamente te permite correr un query asi::&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ebersys.blogspot.com/search?max-results=1000"&gt;http://ebersys.blogspot.com/search?max-results=N&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;el cual regresa en una sola pagina gigante N numero de posts para tal blog&lt;br /&gt;&lt;br /&gt;Pero que tal que a los niños malos de la colonia se les ocurre correr un monton de estos queries contra varias paginas al mismo tiempo? seria muchisimos datos viniendo de los servidores de google, acabo de intentar el siguiente&lt;br /&gt;&lt;br /&gt;&lt;a href="http://googlesystem.blogspot.com/search?max-results=2000"&gt;http://googlesystem.blogspot.com/search?max-results=2000&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;y se tardo un buen en bajar todo el contenido&lt;br /&gt;&lt;br /&gt;Para arreglar el problema seria facil, podrian poner restricciones sobre quien puede correr el query, por ejemplo requerir que el usuario de blogspot estuviera autenticado y que solo pudieras correr queries contra tu blog&lt;br /&gt;&lt;br /&gt;a menos que a google no le importe y lo puedan manejar sin problemas, ya veremos que pasa&lt;br /&gt;&lt;br /&gt;como regla general, a menos que seas parte de google, no permitas que en tus sistemas los usuarios puedan correr queries que regresen todos los datos&lt;br /&gt;&lt;br /&gt;salu2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-841619453287495018?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://googlesystem.blogspot.com/2007/02/how-to-backup-blogger-blog.html' title='ataque DOS contra google usando las herramientas de google?'/><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/841619453287495018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=841619453287495018' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/841619453287495018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/841619453287495018'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/02/ataque-dos-contra-google-usando-las.html' title='ataque DOS contra google usando las herramientas de google?'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-2139303812681404707</id><published>2007-02-08T13:34:00.001-07:00</published><updated>2007-02-08T13:34:50.890-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='codigo'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>protected, internal, protected internal... de verdad sabes que hacen?</title><content type='html'>&lt;p&gt;Este articulo aplica a C#&lt;br /&gt;Todos creemos dominar los modificadores de  acceso, pero me puedes decir lo que &lt;strong&gt;protected internal&lt;/strong&gt;  hace?&lt;br /&gt;apuesto que mas de la mitad de los desarrolladores .NET contestarian  incorrectamente, vamos a ver: &lt;/p&gt;&lt;ol&gt;&lt;li&gt;private: &lt;ol&gt;&lt;li&gt;Este es el nivel de acceso mas restrictivo.  &lt;/li&gt;&lt;li&gt;Es accesible solamente dentro del cuerpo de la clase o estructura en que  esta declarado.  &lt;/li&gt;&lt;li&gt;Tipos declarados dentro (nested types) del mismo cuerpo de la clase tambien  tienen acceso a los tipos privados.&lt;/li&gt;&lt;/ol&gt; &lt;/li&gt;&lt;li&gt;public:  &lt;ol&gt;&lt;li&gt;Este es el nivel de acceso con menos restricciones.  &lt;/li&gt;&lt;li&gt;No hay restricciones para accesar miembros publicos, son tan visibles como  la clase.&lt;/li&gt;&lt;/ol&gt; &lt;/li&gt;&lt;li&gt;protected:  &lt;ol&gt;&lt;li&gt;El acceso es limitado a la clase que los contiene o a tipos derivados de la  clase.  &lt;/li&gt;&lt;li&gt;Lo cual quiere decir que no puedes crear una instancia de esta clase y  accesar los miembros protegidos.&lt;/li&gt;&lt;/ol&gt; &lt;/li&gt;&lt;li&gt;internal:  &lt;ol&gt;&lt;li&gt;El acceso esta limitado solo al assembly en donde la clase reside.&lt;/li&gt;&lt;/ol&gt; &lt;/li&gt;&lt;li&gt;protected internal: &lt;ol&gt;&lt;li&gt;Acceso es limitado a el assembly donde la clase reside &lt;strong&gt;o&lt;/strong&gt; a  tipos derivados de la clase.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Este ultimo es bastante capcioso, a primera vista podria parecer que permite  acceso solo dentro del assembly donde la clase reside y las clases derivadas,  pero el "&lt;strong&gt;o&lt;/strong&gt;" ahi es lo que hace la diferencia, &lt;strong&gt;si marcas  una propiedad protected internal puede ser usada fuera del assembly  actual&lt;/strong&gt;. basicamente protected sobreescribe internal, asi que ni  siquiera estoy seguro de cuando es que se podria usar tal modificador.&lt;/p&gt; &lt;p&gt;pero bueno, regresando al tema, si no me crees eso de protected internal,  puedes verificar tu mismo:&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Assembly1:&lt;/p&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt; Test {&lt;br /&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;protected&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;internal&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; prop1;&lt;br /&gt;}&lt;/pre&gt; &lt;p&gt;&lt;br /&gt;Assembly2://despues de agregar la referencia a Assembly 1&lt;/p&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt; Test2: Test {&lt;br /&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; prop2;&lt;br /&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; Test2() {&lt;br /&gt;  prop2 = prop1; &lt;span style="color: rgb(0, 128, 0);"&gt;//el acceso a prop1 viene de otro assembly, de un miembro protected internal&lt;/span&gt;&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt; &lt;p&gt;&lt;br /&gt;Si esto es nuevo para ti, podrias pensar que es absurdo, entonces como  haces que una propiedad sea visible solo en el assembly actual y en las clases  derivadas (pero solo de este assembly)?&lt;/p&gt; &lt;p&gt;Pues no es tan complicado, marcas la clase como internal, lo cual restringe  el acceso solo al assembly actual, y luego marcas la propiedad como protected,  lo cual resulta en acceso desde las clases derivadas pero solo dentro del  assembly actual.:&lt;/p&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;internal&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt; Test {&lt;br /&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//accesible solo en este assembly y clases derivadas dentro de este assembly&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;protected&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; prop1;&lt;br /&gt;}&lt;/pre&gt; &lt;p&gt;salu2&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-2139303812681404707?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/2139303812681404707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=2139303812681404707' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2139303812681404707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2139303812681404707'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/02/protected-internal-protected-internal.html' title='protected, internal, protected internal... de verdad sabes que hacen?'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-162384695282807485</id><published>2007-02-04T22:25:00.000-07:00</published><updated>2007-02-04T22:32:24.515-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='problemas'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><title type='text'>VS2005, VS2007 (Orcas), XNA, LINQ, WPF en Windows Vista</title><content type='html'>que tal con el titulo... =o)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://juztinwilzon.blogspot.com/"&gt;Justin y&lt;/a&gt; yo estabamos jugando hoy con estas tecnologias, la verdad que no fue tan divertido como esperabamos que fuera, la version corta es que estas cosas juntas no funcionan en Vista, aqui esta una lista de los problemas&lt;br /&gt;&lt;br /&gt;    * VS2005 no funciona en Vista, se traba aleatoriamente y muy seguido&lt;br /&gt;    * VS2007 funciona bien en Vista&lt;br /&gt;    * XNA no esta soportado en VS2007 o Vista, solo en VS2005 Express (XP)&lt;br /&gt;    * el WPF mas reciente no esta soportado en VS2007, solo en VS2005&lt;br /&gt;    * LINQ funciona bien en VS2007&lt;br /&gt;&lt;br /&gt;Asi que si estas pensando en jugar con algunas de esas tecnologias en Vista, tal vez deberias considerar usar XP, la experiencia seria mucho mejor&lt;br /&gt;&lt;br /&gt;salu2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-162384695282807485?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/162384695282807485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=162384695282807485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/162384695282807485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/162384695282807485'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/02/vs2005-vs2007-orcas-xna-linq-wpf-en.html' title='VS2005, VS2007 (Orcas), XNA, LINQ, WPF en Windows Vista'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-5919144551753803642</id><published>2007-01-30T21:39:00.000-07:00</published><updated>2007-01-30T21:51:26.686-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='errores'/><title type='text'>The type initializer for * threw an exception</title><content type='html'>The type initializer for *inserta tu clase favorita aqui* threw an exception&lt;br /&gt;&lt;br /&gt;Me estaba volviendo loco con este error, no se encuentra mucha informacion sobre esto, debi haber usado mis poderes psiquicos antes&lt;br /&gt;&lt;br /&gt;El escenario es un servicio web (.net 2.0) que manda llamar (muy dentro) un codigo que usa refleccion para instanciar algunas clases, el mismo codigo funciona bien dentro de una aplicacion web, y eso es lo raro, que tan diferente es un servicio web a una aplicacion web en cuestion de permisos y seguridad?&lt;br /&gt;&lt;br /&gt;pero bueno, casi desde el principio sospeche que se trataba de un problema con los permisos, pero el hecho de que era un servicio web, y que el mismo codigo funcionaba bien en la aplicacion web me hizo dejar esta opcion hasta el final, busque bastante y no encontre ninguna respuesta, luego decidi configurar otro usuario en IIS para correr mi servicio, y listo, todo corrio bien.&lt;br /&gt;&lt;br /&gt;ok, ahora ya se que el problema es con permisos, pero no me gusta mucho el "parche", asi que seguire buscando e intentando algunas cosas haber si encuentro una solucion mas elegante.&lt;br /&gt;&lt;br /&gt;tip gratis para aquellos que no sepan&lt;br /&gt;pon "The type initializer for * threw an exception" en google... viste, que bonito? google acepta comodines (wildcards) para hacer busquedas, tambien funciona con multiples comodines en una frase&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-5919144551753803642?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/5919144551753803642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=5919144551753803642' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5919144551753803642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5919144551753803642'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/01/type-initializer-for-threw-exception.html' title='The type initializer for * threw an exception'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-5948563787135631828</id><published>2007-01-29T11:22:00.000-07:00</published><updated>2007-01-29T11:26:51.974-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='codigo'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>formateando 0, 1 como si, no, etc</title><content type='html'>Esto es algo que todos (los programadores) hemos hecho alguna vez, convertir un valor 0, 1 al equivalente si o no, prendido o apagado, verdadero o falso, valor en un string&lt;br /&gt;&lt;br /&gt;pues resulta que hay una funcion en el BCL con la cual podemos hacer exactamente eso, string.Format es dicha funcion&lt;br /&gt;&lt;br /&gt;Console.WriteLine(string.Format("{0:si;;no}", 0));  //salida "no"&lt;br /&gt;Console.WriteLine(string.Format("{0:si;;no}", 1)); //salida "si"&lt;br /&gt;&lt;br /&gt;y nomas por ver que pasaba&lt;br /&gt;Console.WriteLine(string.Format("{0:si;;no}", -1)); //salida "-si"&lt;br /&gt;&lt;br /&gt;...Esas pequeñas cosas&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-5948563787135631828?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/5948563787135631828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=5948563787135631828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5948563787135631828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5948563787135631828'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/01/formateando-0-1-como-si-no-etc.html' title='formateando 0, 1 como si, no, etc'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-519952131883254990</id><published>2007-01-14T00:19:00.000-07:00</published><updated>2007-01-14T00:22:23.651-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='preguntas para entrevista'/><title type='text'>Pregunta capciosa para entrevista</title><content type='html'>Es el siguiente codigo:&lt;br /&gt;A)&lt;br /&gt;a1 = new SomeClass();&lt;br /&gt;a2 = new SomeClass();&lt;br /&gt;&lt;br /&gt;equivalente a este:&lt;br /&gt;B)&lt;br /&gt;a1 = a2 = new SomeClass();&lt;br /&gt;&lt;br /&gt;??&lt;br /&gt;(explicar porque)&lt;br /&gt;&lt;br /&gt;El truco aqui es como haces la pregunta, si preguntaras "cual es la diferencia entre opcion A y opcion B", ya les estas diciendo que hay una diferencia.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-519952131883254990?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/519952131883254990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=519952131883254990' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/519952131883254990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/519952131883254990'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/01/pregunta-capciosa-para-entrevista.html' title='Pregunta capciosa para entrevista'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-2330079898507328596</id><published>2007-01-12T14:10:00.000-07:00</published><updated>2007-01-12T14:11:26.887-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chistoso'/><title type='text'>Apple phone, tengo que unirme a la discusion...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/131/351423384_45b006f78a.jpg?v=0"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px;" src="http://farm1.static.flickr.com/131/351423384_45b006f78a.jpg?v=0" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;a href="http://www.imdb.com/title/tt0443453/"&gt;NOT!&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-2330079898507328596?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/2330079898507328596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=2330079898507328596' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2330079898507328596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2330079898507328596'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/01/apple-phone-tengo-que-unirme-la.html' title='Apple phone, tengo que unirme a la discusion...'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-5522268986076792456</id><published>2007-01-11T13:24:00.000-07:00</published><updated>2007-01-11T13:26:23.893-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='extenciones'/><title type='text'>efectos al cambiar de pestaña en Firefox</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://addons.mozilla.org/images/previews/tab_effect-2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px;" src="https://addons.mozilla.org/images/previews/tab_effect-2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="https://addons.mozilla.org/firefox/4258/"&gt;chequense esta extencion de Firefox,&lt;/a&gt;&lt;br /&gt;estoy seguro que luego agregaran mas efectos...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-5522268986076792456?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://addons.mozilla.org/firefox/4258/' title='efectos al cambiar de pestaña en Firefox'/><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/5522268986076792456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=5522268986076792456' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5522268986076792456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5522268986076792456'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/01/efectos-al-cambiar-de-pestaa-en-firefox.html' title='efectos al cambiar de pestaña en Firefox'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-4076888372201841447</id><published>2007-01-09T20:13:00.000-07:00</published><updated>2007-01-09T20:16:07.555-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sugerencias'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>sugerencia para el google reader</title><content type='html'>ya me permite ponerle estrellitas a los posts y compartirlos, eso esta muy bueno, ahora que tal si me permiten resaltar partes del texto?&lt;br /&gt;apoco no estaria excelente? generalmente en los blogs hay alguna cosita en  especial que queremos resaltar... haber si me hacen caso (aja)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-4076888372201841447?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://reader.google.com' title='sugerencia para el google reader'/><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/4076888372201841447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=4076888372201841447' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/4076888372201841447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/4076888372201841447'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/01/sugerencia-para-el-google-reader.html' title='sugerencia para el google reader'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-2458296500614730246</id><published>2007-01-04T21:52:00.000-07:00</published><updated>2008-11-15T03:52:54.053-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libros'/><title type='text'>ya recibi my "old new thing"</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cofcJplmJ2Q/RZ3X3SbsrAI/AAAAAAAAAAY/TRaJvPYUWqo/s1600-h/theoldnewthing_r.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_cofcJplmJ2Q/RZ3X3SbsrAI/AAAAAAAAAAY/TRaJvPYUWqo/s400/theoldnewthing_r.jpg" alt="" id="BLOGGER_PHOTO_ID_5016402904801389570" border="0" /&gt;&lt;/a&gt;Ahora, si pudiera conseguir que me lo autografiaran J&lt;br /&gt;&lt;br /&gt;Bueno, a leer se ha dicho J&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-2458296500614730246?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blogs.msdn.com/oldnewthing/archive/2006/12/07/1233002.aspx' title='ya recibi my &quot;old new thing&quot;'/><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/2458296500614730246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=2458296500614730246' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2458296500614730246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/2458296500614730246'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/01/ya-recibi-my-old-new-thing.html' title='ya recibi my &quot;old new thing&quot;'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cofcJplmJ2Q/RZ3X3SbsrAI/AAAAAAAAAAY/TRaJvPYUWqo/s72-c/theoldnewthing_r.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-5344427912755327274</id><published>2007-01-03T19:07:00.000-07:00</published><updated>2008-11-15T03:52:54.190-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='chistoso'/><title type='text'>primer chiste geek del año</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cofcJplmJ2Q/RZxgqSD2gaI/AAAAAAAAAAM/mmEUOVay4b4/s1600-h/italicized.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_cofcJplmJ2Q/RZxgqSD2gaI/AAAAAAAAAAM/mmEUOVay4b4/s400/italicized.jpg" alt="" id="BLOGGER_PHOTO_ID_5015990364502655394" border="0" /&gt;&lt;/a&gt;Ayer estuve tratando de postear mas cosas, pero al parecer blogger.com no estaba funcionando, ni siquiera pude dejar comentarios en otros blogs de blogger =o(&lt;br /&gt;&lt;br /&gt;pero bueno... feliz año a todos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-5344427912755327274?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.lawaloca.com/node/8283' title='primer chiste geek del año'/><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/5344427912755327274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=5344427912755327274' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5344427912755327274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/5344427912755327274'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/01/primer-chiste-geek-del-ao.html' title='primer chiste geek del año'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cofcJplmJ2Q/RZxgqSD2gaI/AAAAAAAAAAM/mmEUOVay4b4/s72-c/italicized.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-533333233617142967</id><published>2007-01-02T12:59:00.000-07:00</published><updated>2007-01-02T13:08:28.736-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><title type='text'>primer post del año</title><content type='html'>Acabo de pasar de Juarez al Paso, ha estado nevando toda la mañana aqui, espero que no me retracen mi vuelo, y lo peor de todo es que vuelo a travez de Denver, donde ha estado nevando bastante en los ultimos dias, de hecho antes de venir aca, estuvo cerrado el aeropuerto por 2 dias, y cuando yo pase el vuelo estuvo a tiempo pero mi equipaje no llego, y luego cuando llego, una de las maletas estaba rota y total que... haber como me va hoy&lt;br /&gt;&lt;br /&gt;por mientras, tengo internet mientras voy en el auto, gracias a mi Cingular 8125 =o), asi que creo que  al menos estare leyendo blogs el dia de hoy, y estare actualizando mi lista de &lt;a href="http://www.google.com/reader/shared/user/00321597721557820145/state/com.google/starred"&gt;blogs interesantes&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-533333233617142967?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/533333233617142967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=533333233617142967' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/533333233617142967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/533333233617142967'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2007/01/primer-post-del-ao.html' title='primer post del año'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-6772883328875087909</id><published>2006-12-22T11:44:00.000-07:00</published><updated>2006-12-22T11:45:15.019-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='links'/><title type='text'>Visual Studio 2005 SP1 para Windows Vista (Beta)</title><content type='html'>&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=FB6BB56A-10B7-4C05-B81C-5863284503CF&amp;displaylang=en"&gt;esta disponible, justo a tiempo para navidad&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-6772883328875087909?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/6772883328875087909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=6772883328875087909' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6772883328875087909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/6772883328875087909'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2006/12/visual-studio-2005-sp1-para-windows.html' title='Visual Studio 2005 SP1 para Windows Vista (Beta)'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-4663550124099903699</id><published>2006-12-20T18:36:00.000-07:00</published><updated>2006-12-20T19:23:40.197-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='codigo'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='optimizacion'/><title type='text'>funcion para generar numeros aleatorios, con todos los digitos distintos</title><content type='html'>&lt;p&gt;El codigo para este articulo aplica a C#&lt;/p&gt; &lt;p&gt;Leyendo blogs, me encontre con &lt;a href="http://blogs.ugidotnet.org/fightfull/archive/2006/12/20/60974.aspx"&gt;este  post&lt;/a&gt; (en italiano), donde Marco quiere escribir una funcion que le genere  numeros aleatorios de 5 digitos, el resultado se requiere en un string, donde  todos los digitos son diferentes, es decir, cada numero (de 5 digitos) generado,  no puede tener 2 digitos iguales, la funcion que el escribio es la  siguiente:&lt;/p&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; GetRandom()&lt;br /&gt;{&lt;br /&gt;    Random rn = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Random();&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; resultnum=&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;do&lt;/span&gt;&lt;br /&gt;        {&lt;br /&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; a = rn.Next(0, 9).ToString();&lt;br /&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (resultnum.Contains(a)!=&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;)&lt;br /&gt;             resultnum = resultnum + a;&lt;br /&gt;        }&lt;br /&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt; (resultnum.Length&lt;5); style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; resultnum;&lt;br /&gt;}&lt;/pre&gt; &lt;p&gt;Inmediatamente me dio curiosidad por ver que areas que podria mejorar, y me  puse a escribir una funcion que obtuviera el mismo resultado, pero en forma mas  optimizada&lt;/p&gt; &lt;p&gt;cosas que saltan a mi mente inmediatamente son:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;concatenacion de strings&lt;/li&gt;&lt;li&gt;el loop y la comparacion para encontrar numeros que no tengamos  previamente&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Entonces lo que quise lograr en mi funcion es: evitar la concatenacion, y  ejecutar el loop exactamente 5 veces, esto es el resultado:&lt;/p&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt;[] allNumbers = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };&lt;br /&gt;Random r = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Random();&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; GetRandom2() {&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt;[] result = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt;[5];&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; max = 9, pos=0;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt; (&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; i=1; i&lt;6; pos =" r.Next(0," style="color: rgb(0, 128, 0);"&gt;//*** swap positions&lt;/span&gt;&lt;br /&gt;      allNumbers[pos] ^= allNumbers[max];&lt;br /&gt;      allNumbers[max] ^= allNumbers[pos];&lt;br /&gt;      allNumbers[pos] ^= allNumbers[max--];&lt;br /&gt;  }&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;(result);&lt;br /&gt;}&lt;/pre&gt; &lt;p&gt;La tecnica que use, &lt;/p&gt; &lt;p&gt;- fue tener un arreglo predefinido de caracteres con todos los digitos, &lt;/p&gt; &lt;p&gt;- luego tengo una variable &lt;strong&gt;max&lt;/strong&gt; que uso para llamar el metodo  Random.Next(0, max), &lt;/p&gt; &lt;p&gt;- en cada iteracion del loop decremento esta variable, &lt;/p&gt; &lt;p&gt;- y cambio el numero que resulto elegido a la ultima posicion, con esto lo  dejo fuera de las posibilidades para la siguiente llamada&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Estos cambios me dieron una ganancia realmente minima&lt;/strong&gt; (3  milesimas por cada 1000 llamadas), luego se me ocurrio mover &lt;strong&gt;la  declaracion de la variable Random afuera de la funcion&lt;/strong&gt;, para que se  reusara con cada llamada a este metodo, y eso si que me dio una ganancia  tremenda, llamando la funcion &lt;strong&gt;10,000&lt;/strong&gt; veces, el metodo original  me da &lt;strong&gt;114ms&lt;/strong&gt;, y el metodo nuevo &lt;strong&gt;6ms&lt;/strong&gt;, asi que  ahi era donde estaba realmente el problema, lo demas es casi insignificante  =o(&lt;/p&gt; &lt;p&gt;Seguro alguien mas puede crear una funcion mas rapida, pero yo cumpli mi  objetivo =o)&lt;/p&gt; &lt;p&gt;salu2&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-4663550124099903699?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/4663550124099903699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=4663550124099903699' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/4663550124099903699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/4663550124099903699'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2006/12/funcion-para-generar-numeros-aleatorios.html' title='funcion para generar numeros aleatorios, con todos los digitos distintos'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-8454239751708167197</id><published>2006-12-20T18:25:00.000-07:00</published><updated>2006-12-20T18:32:34.229-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogs'/><category scheme='http://www.blogger.com/atom/ns#' term='chistoso'/><title type='text'>Signo de que estas blogueando mucho: blog Deja Vu</title><content type='html'>&lt;a href="http://blogs.ugidotnet.org/AntonioGanci/archive/2006/12/19/60416.aspx"&gt;Antonio Ganci nos platica&lt;/a&gt; (blog en italiano) que algunas veces cuando va a postear algo, le da la sensacion de que ya escribio eso antes en su blog, algo asi como &lt;span style="font-weight: bold;"&gt;blog Deja Vu&lt;/span&gt;, luego se pone a checar sus posts viejos, para cerciorarse que no lo habia escrito realmente&lt;br /&gt;&lt;br /&gt;Se me hizo chistoso, personalmente aun no me ha pasado algo asi, pero probablemente le pasa a bastante gente en estos dias; el &lt;a href="http://es.wikipedia.org/wiki/D%C3%A9j%C3%A0_vu"&gt;efecto Deja Vu&lt;/a&gt; me parece un tema muy interesante... y hace algunos dias fui a ver la pelicula &lt;a href="http://www.imdb.com/title/tt0453467/"&gt;Deja Vu&lt;/a&gt;, que se me hizo bastante buena, aunque creo que le encontre unos errores en la secuencia, pero haber ustedes que piensan&lt;br /&gt;&lt;br /&gt;salu2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-8454239751708167197?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/8454239751708167197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=8454239751708167197' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/8454239751708167197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/8454239751708167197'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2006/12/signo-de-que-estas-blogueando-mucho.html' title='Signo de que estas blogueando mucho: blog Deja Vu'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26067392.post-1732718273453586025</id><published>2006-12-20T18:16:00.000-07:00</published><updated>2006-12-20T18:24:39.785-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='listas genericas'/><title type='text'>Como borrar elementos de una lista generica</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;El codigo para este articulo aplica a C# 2.0&lt;/p&gt;&lt;p&gt;Una tarea mas o menos comun cuando usamos una lista generica, es borrar elementos de esta, vamos a ver que alternativas tenemos:&lt;/p&gt; &lt;p&gt;#1 La forma definitivamente equivocada de hacerlo:&lt;/p&gt; &lt;p&gt;List&amp;lt;Person&amp;gt; l1 = GetList();&lt;br /&gt;&lt;span class="rem"&gt;//*** The wrong way&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;foreach&lt;/span&gt; (Person p &lt;span class="kwrd"&gt;in&lt;/span&gt; l1) {&lt;br /&gt;   &lt;span class="kwrd"&gt;if&lt;/span&gt; (p.Age &amp;gt; 30)&lt;br /&gt;       l1.Remove(p);&lt;br /&gt;}&lt;/p&gt; &lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt; font-size: small;&lt;br /&gt; color: black;&lt;br /&gt; font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt; background-color: #ffffff;&lt;br /&gt; /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt; background-color: #f4f4f4;&lt;br /&gt; width: 100%;&lt;br /&gt; margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;br /&gt;&lt;/style&gt;  &lt;p&gt;Este codigo nos dara una excepcion InvalidOperationException: "Collection was modified; enumeration operation may not execute."&lt;/p&gt; &lt;p&gt;#2 Funciona mas o menos (y nos permite ejecutar una accion en cada elemento que vamos a borrar)&lt;/p&gt;&lt;pre class="csharpcode"&gt;List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; ints = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;();&lt;br /&gt;ints.Add(1);&lt;br /&gt;ints.Add(2);&lt;br /&gt;ints.Add(3);&lt;br /&gt;ints.Add(4);&lt;br /&gt;ints.Add(5);&lt;br /&gt;ints.Add(6);&lt;br /&gt;&lt;br /&gt;ints.ForEach(&lt;span class="kwrd"&gt;delegate&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt; i) {&lt;br /&gt;  &lt;span class="kwrd"&gt;if&lt;/span&gt; ((i % 2) == 0) {&lt;br /&gt;      Console.WriteLine(&lt;span class="str"&gt;"removing"&lt;/span&gt;+i.ToString());&lt;br /&gt;      ints.Remove(i);&lt;br /&gt;  }&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt; font-size: small;&lt;br /&gt; color: black;&lt;br /&gt; font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt; background-color: #ffffff;&lt;br /&gt; /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt; background-color: #f4f4f4;&lt;br /&gt; width: 100%;&lt;br /&gt; margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;p&gt;Si corres este codigo funcionara perfectamente, pero la verdad es que tiene un problema grande, si agregaras los numeros pares primero, verias que no los borra todos, y no te da una excepcion ni nada, simplemente se sale del foreach y continua; asi que este metodo funciona, pero solo en condiciones especiales, lo cual lo hace codigo peligroso&lt;/p&gt;#3 La forma correcta: recorremos la coleccion hacia atras y borramos elementos cuando necesitamos&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;int&lt;/span&gt; x = ints2.Count;&lt;br /&gt;&lt;span class="kwrd"&gt;while&lt;/span&gt; (--x&amp;gt;=0) {&lt;br /&gt;  &lt;span class="kwrd"&gt;if&lt;/span&gt; (ints2[x] &amp;lt; 4)&lt;br /&gt;      ints2.RemoveAt(x);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt; font-size: small;&lt;br /&gt; color: black;&lt;br /&gt; font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt; background-color: #ffffff;&lt;br /&gt; /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt; background-color: #f4f4f4;&lt;br /&gt; width: 100%;&lt;br /&gt; margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;p&gt;#4 Una mejor manera: La lista generica trae un metodo ya incluido que nos sirve para borrar multiples elementos&lt;br /&gt;&lt;/p&gt;&lt;pre class="csharpcode"&gt;ints2.RemoveAll(&lt;span class="kwrd"&gt;delegate&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt; i) {&lt;br /&gt;  &lt;span class="kwrd"&gt;return&lt;/span&gt; i &amp;lt;4;&lt;br /&gt;});&lt;/pre&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt; font-size: small;&lt;br /&gt; color: black;&lt;br /&gt; font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt; background-color: #ffffff;&lt;br /&gt; /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt; background-color: #f4f4f4;&lt;br /&gt; width: 100%;&lt;br /&gt; margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;p&gt;#5 Pero que pasa si quiero ejecutar una accion en cada elemento que se borre?&lt;/p&gt;&lt;pre class="csharpcode"&gt;ints2.RemoveAll(&lt;span class="kwrd"&gt;delegate&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt; i) {&lt;br /&gt;  &lt;span class="kwrd"&gt;if&lt;/span&gt; (i &amp;lt; 4) {&lt;br /&gt;      &lt;span class="rem"&gt;//*** Perform action here&lt;/span&gt;&lt;br /&gt;      Console.WriteLine(&lt;span class="str"&gt;"removing :"&lt;/span&gt; + i.ToString());&lt;br /&gt;      &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;  }&lt;br /&gt;  &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt; font-size: small;&lt;br /&gt; color: black;&lt;br /&gt; font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt; background-color: #ffffff;&lt;br /&gt; /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt; background-color: #f4f4f4;&lt;br /&gt; width: 100%;&lt;br /&gt; margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Si el elemento fuera una clase, podrias mandar llamar uno de sus metodos antes de borrarlo (por ejemplo una llamada a la base de datos)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Mas adelante escribire en detalle porque exactamente las alternativas #1 y #2 no funcionan&lt;/p&gt;&lt;p&gt;salu2&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26067392-1732718273453586025?l=ebersysesp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ebersysesp.blogspot.com/feeds/1732718273453586025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26067392&amp;postID=1732718273453586025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1732718273453586025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26067392/posts/default/1732718273453586025'/><link rel='alternate' type='text/html' href='http://ebersysesp.blogspot.com/2006/12/como-borrar-elementos-de-una-lista.html' title='Como borrar elementos de una lista generica'/><author><name>BlackTigerX</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cofcJplmJ2Q/TQK1ztAVdiI/AAAAAAAABYE/2YWhD10qTpU/S220/EberDG2.jpg'/></author><thr:total>0</thr:total></entry></feed>
