<?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-5873468744732853824</id><updated>2012-01-22T23:12:40.367+01:00</updated><category term='Libros'/><category term='Varios'/><category term='Bugs'/><category term='Yoigo'/><category term='.Net'/><category term='Hibernate'/><category term='Opinión'/><category term='Aplicaciones'/><category term='Enlaces'/><category term='Google'/><category term='Blog'/><category term='Ajax'/><category term='Dominios'/><category term='Universidad'/><title type='text'>blog.jaimecg.com</title><subtitle type='html'>De mis cosas...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>39</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-3150063832574505703</id><published>2011-08-07T20:03:00.004+02:00</published><updated>2012-01-05T14:52:00.407+01:00</updated><title type='text'>Soporte de ZTE Blade en Ubuntu, ADB y almacenamiento</title><content type='html'>Es necesario crear el archivo: &lt;b&gt;/etc/udev/rules.d/51-android.rules&lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", MODE="0666", GROUP="plugdev"&lt;/blockquote&gt;Para otros fabricantes consultar:&amp;nbsp;&lt;a href="http://developer.android.com/guide/developing/device.html#setting-up"&gt;http://developer.android.com/guide/developing/device.html#setting-up&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Y posteriormente actualizar los permisos de acceso:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;chmod a+r /etc/udev/rules.d/51-android.rules&lt;/blockquote&gt;&lt;br /&gt;Y a parte, necesitaremos crear una regla para el usb modeswitch que permita cambiar y activar el modo de teléfono correcto. Crear el archivo: &lt;b&gt;/etc/usb_modeswitch.d/19d2:0083&lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;######################################################## &lt;br /&gt;# ZTE 0083 device &lt;br /&gt;&lt;br /&gt;DefaultVendor= 0x19d2&lt;br /&gt;DefaultProduct=0x0083&lt;br /&gt;&lt;br /&gt;TargetVendor= 0x19d2&lt;br /&gt;TargetProduct= 0x0124&lt;br /&gt;&lt;br /&gt;CheckSuccess=20&lt;br /&gt;&lt;br /&gt;MessageContent="55534243f8f993882000000080000a85010101180101010101000000000000"&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-3150063832574505703?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/3150063832574505703/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=3150063832574505703' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/3150063832574505703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/3150063832574505703'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2011/08/soporte-de-zte-blade-en-ubuntu-adb-y.html' title='Soporte de ZTE Blade en Ubuntu, ADB y almacenamiento'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-1113150986292108441</id><published>2008-09-02T13:20:00.003+02:00</published><updated>2008-09-02T13:28:36.061+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bugs'/><title type='text'>Bug en Office 2003 Service Pack 3</title><content type='html'>Hace unos días me llamó una persona que tenía problemas con una aplicación hecha en Access, la cual funcionaba en unos ordenadores sí y en otros no.&lt;br /&gt;&lt;br /&gt;El problema consistía en campos de tipo cuadro-combinado (Combo-box) que se encontraban en blanco no mostrando los datos con los que estaban vinculados. Después de ir comprobando donde podría estar el error, llegué que aquellos campos de tipo Texto o Memo que en Formato se había especificado el valor "&gt;" (da formato de mayúsculas al contenido del campo), no eran mostrados en los desplegables, si eliminaba el formato "&gt;", ya si aparecían, pero eso no era una solución! Finalmente el problema vi que venía de aquellos ordenadores con Office 2003 Service Pack 3, y como se detalla en la página del bugfix correspondiente, este fallo es introducido al instalar este Service Pack, un poco raro que se les cuele este tipo de fallo, supongo que debería haber algún control de calidad mayor.&lt;br /&gt;&lt;br /&gt;Podéis bajaros el bugfix y más información en la página de soporte:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/945674"&gt;http://support.microsoft.com/kb/945674&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-1113150986292108441?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/1113150986292108441/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=1113150986292108441' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/1113150986292108441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/1113150986292108441'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2008/09/bug-en-office-2003-service-pack-3.html' title='Bug en Office 2003 Service Pack 3'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-5926936892094194853</id><published>2008-06-05T12:06:00.002+02:00</published><updated>2008-06-05T12:13:10.170+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Error IIS 7.0 &amp; Vista. 0x80070032</title><content type='html'>¿Te has encontrado con este error?&lt;br /&gt;&lt;blockquote&gt;Error HTTP 404.3 - Not Found&lt;br /&gt;&lt;br /&gt;No puede obtener acceso a la página solicitada debido a la configuración de la extensión. Si la página es un script, agregue un controlador. Si se debe cargar el archivo, agregue una asignación MIME.&lt;br /&gt;&lt;br /&gt;Módulo: StaticFileModule&lt;br /&gt;Notificación: ExecuteRequestHandler&lt;br /&gt;Controlador: StaticFile&lt;br /&gt;Código de error: 0x80070032&lt;br /&gt;&lt;/blockquote&gt;Y esto al intentar acceder a un archivo .aspx. No te preocupes, por defecto, al instalar IIS en Vista, se configura para sólo servir contenidos estáticos, deberemos activar el soporte de ASP.NET, para ello, volvemos al Panel de Control &gt; Programas &gt; Activar o desactivar las características de Windows, y activaremos la opción: Internet Information Services &gt; Servicios World Wide Web &gt; Características de desarrollo de aplicaciones &gt; ASP.NET&lt;br /&gt;&lt;br /&gt;Ahora te debería funcionar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-5926936892094194853?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/5926936892094194853/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=5926936892094194853' title='10 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/5926936892094194853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/5926936892094194853'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2008/06/error-iis-70-vista-0x80070032.html' title='Error IIS 7.0 &amp; Vista. 0x80070032'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-2269855100502167584</id><published>2008-05-14T13:40:00.002+02:00</published><updated>2008-05-14T14:04:46.161+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Varios'/><title type='text'>LSSI. Publicidad en correo. A buena hora reclame!</title><content type='html'>Por dónde empiezo...&lt;br /&gt;&lt;br /&gt;Hace tiempo, como un año, di mis datos de contacto (email + teléfono) a una empresa (bastante conocida en españa) para que me enviara información comercial de sus servicios. Hasta ahí, todo normal. Hace poco recibí un correo electrónico publicitario de dicha empresa, para mi sorpresa, no cumplia mucho sobre la LSSI y LOPD, por ejemplo, no informaba del nombre de la empresa (datos como razón social y dirección fiscal), no anunciaban de en qué archivo de datos se encontraba la información de donde habían sacado mis datos, y lo más importante, no informaba sobre un procedimiento de baja o anular futuras recepciones de publicidad, ni email, ni nada.&lt;br /&gt;&lt;br /&gt;Total, que no se muy bien la razón, pero les repondí quejandome un poco, y comentando que su comunicado no cumplia muy bien con la ley.&lt;br /&gt;&lt;br /&gt;¡A buenas horas se me ocurrio esto! A los pocos días, me llaman al móvil el departamento de comunicaciones o legal o una historia de esas de esta empresa, para pedirme disculpas, y que efectivamente debió de haber un error en la comunicación, y que incumplía la ley. Yo les digo que es normal, que es complicado cumplir todas las leyes, pero ya lo saben para la próxima que tienen que tener más cuidado, me avisan de que ya me han borrado de su archivo de datos y que no me volverán a molestar.&lt;br /&gt;&lt;br /&gt;Pero no acaba, ahora recibo una carta certificada pidiendome disculpas, avisandome de que ya me han borrado de archivo de datos, etc. etc.&lt;br /&gt;&lt;br /&gt;Lo próximo, como no venga alguien en persona a seguir pidiendome disculpas... aunque me podían haber regalado alguno de sus productos! :D&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Moraleja&lt;/span&gt;: Es una realidad de que las leyes LSSI y LOPD no se cumplen en todos los casos, pero si que es cierto que las empresas ya están muy concienciadas con este tema, y que ponen un claro interés, ahora sólo les falta cuidar los despistes.&lt;br /&gt;&lt;br /&gt;Algunas direcciones de intres:&lt;br /&gt;LSSI: &lt;a href="http://www.lssi.es/"&gt;http://www.lssi.es/&lt;/a&gt;&lt;br /&gt;Agencia Española de Protección de Datos: &lt;a href="https://www.agpd.es/"&gt;&lt;span class="a"&gt;https://www.agpd.es/&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-2269855100502167584?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/2269855100502167584/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=2269855100502167584' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/2269855100502167584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/2269855100502167584'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2008/05/lssi-publicidad-en-correo-buena-hora.html' title='LSSI. Publicidad en correo. A buena hora reclame!'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-2818286566073047538</id><published>2008-04-03T14:25:00.003+02:00</published><updated>2008-04-03T14:39:01.228+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Varios'/><title type='text'>Uptime de un VPS</title><content type='html'>Como curiosidad, en el trabajo tenemos un par de VPS (Virtual Private Server / Servidor Privado Virtual) contratados, uno es un Windows Server 2003, el cual tengo que reiniciar de vez en cuando, y el otro es una Debian. Bien, este último tiene un uptime de:&lt;br /&gt;&lt;br /&gt;xxxxx2:~# uptime&lt;br /&gt; 12:38:38 up 226 days, 4 min,  1 user,  load average: 0.00, 0.00, 0.00&lt;br /&gt;&lt;br /&gt;226 días, no está mal! Lo que viene a demostrar esto es que los servidores VPS son una solución bastante válida y estable (al menos con Linux), y lo más importante, ¡económica!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-2818286566073047538?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/2818286566073047538/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=2818286566073047538' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/2818286566073047538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/2818286566073047538'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2008/04/uptime-de-un-vps.html' title='Uptime de un VPS'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-2180315659384935416</id><published>2008-03-17T13:27:00.002+01:00</published><updated>2008-03-17T13:59:13.147+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Varios'/><title type='text'>Balnearios, la importancia de la salud para trabajos de oficina.</title><content type='html'>Hoy voy a hablaros de algo que, aunque parezca que no tiene que ver con la informática, tiene sus aplicaciones prácticas. Los balenarios, spa, termas...&lt;br /&gt;&lt;br /&gt;Todos los trabajos que se realizan en una oficina, y en particular aquellos como los relacionados con informática donde pasamos tantas horas sentados delante de una pantalla de ordenador, sin apenas movernos durante el día, sabemos que es común que aparezcan algún que otro dolor de espalda, incomodidad, tensión en los hombros y cuello. Debemos tener en cuenta que la salud es realmente importante, y si bien, cuidamos nuestro entorno para que sea lo más confortable posible (correcto nivel de la altura del monitor, reposa muñecas, un buen estado de la silla, levantarnos cada hora 5 minutos, etc.), ¿por qué no complementarlo con una sesión de relajación muscular y mental fuera del horario de trabajo? Una solución que te propongo es que te acerques, de vez en cuando (tu mismo te darás cuenta cuando lo necesitas), a un balneario o spa donde baños en agua caliente /fria, saunas, camas de burbujas, lamparas de calor, y un sin fin más de tratamientos que aliviarán la fatiga de la rutina diaria.&lt;br /&gt;&lt;br /&gt;Como experiencia personal, comentar que este fin de semana pasado estuve en uno de estos sitios, exactamente en: &lt;a href="http://www.thermasdegrinon.com/"&gt;Thermas de Griñón&lt;/a&gt; [http://www.thermasdegrinon.com/], unas instalaciónes grandes, limpias y completas, que harán que durante tres horas sólo te preocupes de descansar. Se encuentra a 25 km de Madrid en la carretera de Toledo A-42, merece la pena acercarse.&lt;br /&gt;&lt;br /&gt;Si además notas que tienes una gran tensión en alguna parte de tu cuerpo, tal vez deberías completarlo con una sesión de masajes con un profesional, en estos centros existen la opción de contratar estos servicios, además de disponer personal cualificado que te asesorará sobre lo más beneficioso para tu salud.&lt;br /&gt;&lt;br /&gt;Finalmente, el precio aproximado de hacer un circuito general de 3 horas de duración, durante el cual irás a las diferentes piscinas, saunas, etc. que quieras, es de 33 euros, si además quieres masajes, los hay desde los 26 euros los relajantes con una duración de 30 minutos.&lt;br /&gt;&lt;br /&gt;Y si te animas a ir, te invito a poner un comentario contando como te fue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-2180315659384935416?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/2180315659384935416/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=2180315659384935416' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/2180315659384935416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/2180315659384935416'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2008/03/balnearios-la-importancia-de-la-salud.html' title='Balnearios, la importancia de la salud para trabajos de oficina.'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-707110512882474853</id><published>2008-03-03T17:47:00.003+01:00</published><updated>2008-03-03T17:54:12.855+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Varios'/><title type='text'>Formatos abiertos soportados en la Administración Pública</title><content type='html'>Estamos en marzo y este mes me toca preparar la justificación de una ayuda recibida por el  Plan Avanza del Ministerio de Industria, Turismo y Comercio, y descubro con gran asombro que los modelos de la diferente documentación a realizar se encuentra en: pdf y doc, para los documentos de texto y para las hojas de cálculo en: xls, ods (Uno de los formatos soportados por ejemplo por OpenOffice). Y además en las instrucciones se especifica como formatos aceptados (porque se presenta via telemática a través de una aplicación web) para documentos de texto los formatos pdf, doc y odt, y en el caso de hojas de cálculo, xls y ods. Resumiendo, olé, olé por el Ministerio, ya no tendré que ir buscando un ordenador con Office para presentar la documentación. :)&lt;br /&gt;&lt;br /&gt;PD: ODT y ODS son formatos de OpenDocument que fue aprovado como estándar OASIS. &lt;a href="http://es.wikipedia.org/wiki/OpenDocument"&gt;+ info&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-707110512882474853?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/707110512882474853/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=707110512882474853' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/707110512882474853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/707110512882474853'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2008/03/formatos-abiertos-soportados-en-la.html' title='Formatos abiertos soportados en la Administración Pública'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-4476857044857488667</id><published>2007-11-26T12:27:00.000+01:00</published><updated>2007-11-26T12:34:15.854+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Visual Studio 2008 Express Edition disponible para descarga</title><content type='html'>Por si alguien se había despistado, ya está disponible para descargar las herramientas Express Edition que habitualmente Microsoft nos ofrece como versiones reducidas de su herramienta de desarrollo Visual Studio.&lt;br /&gt;&lt;br /&gt;La página de donde podéis bajarolsas es:&lt;br /&gt;&lt;a href="http://www.microsoft.com/express/download/"&gt;http://www.microsoft.com/express/download/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La descarga está disponible de forma individual como de forma conjunta en un único archivo (DVD).&lt;br /&gt;&lt;br /&gt;PD. De momento sólo están disponible en inglés.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-4476857044857488667?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/4476857044857488667/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=4476857044857488667' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/4476857044857488667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/4476857044857488667'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2007/11/visual-studio-2008-express-edition.html' title='Visual Studio 2008 Express Edition disponible para descarga'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-4062696224996773844</id><published>2007-10-05T17:08:00.000+02:00</published><updated>2007-10-05T17:34:21.163+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>C# Cast de Array a IList usando genéricos</title><content type='html'>Llevo todo el día revisando código que encuentro por Internet referente al manejo datos en general (persistencias, modelos, etc.) y es muy habitual necesitar convertir de un array de un determinado tipo de datos a una lísta usando genéricos. Sobre todo porque muchas librerías antiguas se hicieron cuando estos no existían y es recomendable usar genéricos para una larga lista de casos (aunque de eso mejor hablar en un artículo dedicado a ello).&lt;br /&gt;&lt;br /&gt;Lo curioso es que en una gran cantidad de listados de códigos de diversos autores me encuentro con esto:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Usuario[] usuarios = (Usuario[])Usuario.FindAll();&lt;br /&gt;IList&amp;lt;Usuario&amp;gt; usuarios_g = new List&amp;lt;Usuario&amp;gt;();&lt;br /&gt;foreach (Usuario usuario in usuarios)&lt;br /&gt;{&lt;br /&gt;usuarios_g.Add(usuario);&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Bueno, esto funciona, vale, pero... ¿tantas líneas de código para hacer una conversión? ¿No os parece muy cansado de escribir? Por no hablar de la baja eficiencia que hay detrás de esas líneas.&lt;br /&gt;&lt;br /&gt;Supongo que no se les ocurrió probar antes algo tan simple como:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;/* Usuario.FindAll() devuelve un Usuario[] */&lt;br /&gt;IList&amp;lt;Usuario&amp;gt; usuarios = (IList&amp;lt;Usuario&amp;gt;)Usuario.FindAll();&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Efectivamente, el cast entre un array y una lista usando genéricos es completamente válido. Mucho más límpio, sencillo y seguramente mucho más eficiente.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-4062696224996773844?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/4062696224996773844/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=4062696224996773844' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/4062696224996773844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/4062696224996773844'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2007/10/c-cast-de-array-list-usando-genericos.html' title='C# Cast de Array a IList usando genéricos'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-6789461979025324580</id><published>2007-08-21T12:10:00.000+02:00</published><updated>2007-08-21T12:34:40.511+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Varios'/><title type='text'>Cómo instalar php5 en un Plesk 8.2 con Linux Debian</title><content type='html'>Ahora que estoy metido en servidores virtuales estuve configurando durante el día de ayer una Debian Etch con 1 GB de disco duro y unos pocos megas de ram. Sólo me encontré con un problema y que pongo la solución por aquí.&lt;br /&gt;&lt;br /&gt;Resulta que una de las aplicaciones web que había que instalar requería PHP5 y por desgracia sólo estaba instalado PHP4 como módulo Apache y PHP5 como cgi (pero sin configurar), el problema de dejarlo como cgi consumia demasiados recursos para el número de visitas que iban a gestionarse y ya bastante pocos recursos libres hay en un servidor compartido.&lt;br /&gt;&lt;br /&gt;La solución instalar php5 como módulo de apache, pero el servidor que nos dejan puesto no tiene /etc/apt/sources.list con lo que no tienes de ningún sitio para actualizar, y además hay un montón de paquetes psa (Plesk) que dependen de php4 (los cuales te obliga a desinstalar si intentas directamente php5)&lt;br /&gt;&lt;br /&gt;La solución está en la web de swsoft: http://kb.swsoft.com/en/1762&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;# apt-get install psa-php5-configurator libapache2-mod-php5&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Lo que no dicen de donde te bajas el paquete psa-php5-configurator. Pero sólo necesitarás crearte un /etc/apt/sources.list como el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;# Para todas los paquetes de configuración de Plesk&lt;br /&gt;deb http://autoinstall.plesk.com/debian/PSA_8.2.0 etch all&lt;br /&gt;&lt;br /&gt;# Para Debian&lt;br /&gt;deb ftp://ftp.rediris.es/debian etch main contrib non-free&lt;br /&gt;deb http://security.debian.org etch/updates main contrib non-free&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Con estos repositorios también podemos instalar otras opciones como FastCgi:&lt;br /&gt;&lt;blockquote&gt;apt-get install psa-mod-fcgid-configurator&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Espero que os sea útil.&lt;br /&gt;&lt;br /&gt;Un saludo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-6789461979025324580?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/6789461979025324580/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=6789461979025324580' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/6789461979025324580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/6789461979025324580'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2007/08/como-instalar-php5-en-un-plesk-82-con.html' title='Cómo instalar php5 en un Plesk 8.2 con Linux Debian'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-685263584265299248</id><published>2007-08-07T17:39:00.000+02:00</published><updated>2007-11-30T12:47:40.251+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Varios'/><title type='text'>Análisis ordenador Dell Vostro 200</title><content type='html'>Hace unas horas que ha llegado un nuevo ordenador para sustituir al equipo que utilizo en el trabajo. Un bonito Dell Vostro 200. Voy a contar un poco lo que me ha parecido y demás.&lt;br /&gt;&lt;br /&gt;Lo primero decir que el embalaje perfecto, como suele ser con Dell :). El tiempo de espera desde que se compró hasta que llegó apenas 2 semanas, así que también muy bien. Manuales y CDs también completito, trae CD de recuperación, otro con controladores y algunos con aplicaciones extras.&lt;br /&gt;&lt;br /&gt;Una vez que está montado en la mesa, es bastante bonito y, el aspecto de las piezas parece de buena calidad. Todo va a juego en color negro (Torre, pantalla, teclado y ratón).&lt;br /&gt;&lt;br /&gt;Llegado el momento de encenderlo, resaltar que es un equipo bastante silencioso y ningún pixel muerto en la pantalla y el Windows Vista (que es lo que traía preinstalado) después de las primeras acciones, que parece ser que necesita cachear algunas cosas, ya va todo bastante suave y rápido.&lt;br /&gt;&lt;br /&gt;La configuración del equipo es:&lt;br /&gt;&lt;br /&gt;- Intel Core 2 CPU 1.86Ghz&lt;br /&gt;- 2GB RAM&lt;br /&gt;- 2 x 250GB Disco duro&lt;br /&gt;- Gráfica ATI Radeon X1300PRO 256MB&lt;br /&gt;- Monitor TFT 22 pulgadas panorámico&lt;br /&gt;- Windows Vista Business Edition&lt;br /&gt;&lt;br /&gt;Bastante completito... y ahora el precio, que es lo que más me gusta. Todo esto sale aproximadamente por unos 650€ (más IVA), teniendo en cuenta que sólo la licencia del Windows calculo que deben ser unos 100€, así que no esta nada nada mal.&lt;br /&gt;&lt;br /&gt;Si estás buscando un equipo, te recomiendo que eches un vistazo a esta opción.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Actualizado&lt;/span&gt; 30/11/2007 : Hace tiempo ya instalé Ubuntu 7.10 en este pc y todo funcionando sin problemas, aunque no he llegado a probar compiz por falta de tiempo, la tarjeta gráfica usando los drivers propietarios va perfecta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-685263584265299248?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/685263584265299248/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=685263584265299248' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/685263584265299248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/685263584265299248'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2007/08/analisis-ordeandor-dell-vostro-200.html' title='Análisis ordenador Dell Vostro 200'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-3299482038381174810</id><published>2007-07-14T15:35:00.000+02:00</published><updated>2008-12-10T14:34:31.263+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>GMail detecta los track number de UPS</title><content type='html'>Hoy descubrí una nueva integración de GMail. Resulta que hace un par de días compré unos artículos a una tienda de Internet y solicité que me lo enviaran por la agencia UPS. Cuando me gestionaron el pedido me enviaron un correo electrónico donde me informaban del &lt;i&gt;track number&lt;/i&gt; para poder realizar el seguimiento. Curioso como GMail detecta el código y nos muestra una nueva opción para acceder directamente al seguimiento de dicho envío.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_gj1cVm3cx7A/Ro5GDWCYYCI/AAAAAAAAAA0/68tg8MQZKSM/s1600-h/gmail-ups.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_gj1cVm3cx7A/Ro5GDWCYYCI/AAAAAAAAAA0/68tg8MQZKSM/s320/gmail-ups.png" alt="" id="BLOGGER_PHOTO_ID_5084078052616986658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Está claro que la capacidad de análisis de textos de Google parece no tener límites.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-3299482038381174810?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/3299482038381174810/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=3299482038381174810' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/3299482038381174810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/3299482038381174810'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2007/07/gmail-detecta-los-track-number-de-ups.html' title='GMail detecta los track number de UPS'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_gj1cVm3cx7A/Ro5GDWCYYCI/AAAAAAAAAA0/68tg8MQZKSM/s72-c/gmail-ups.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-204176863829904422</id><published>2007-07-04T14:17:00.000+02:00</published><updated>2007-07-04T15:07:10.123+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Varios'/><title type='text'>Evitar el cansancio de la vista al manejar documentos</title><content type='html'>&lt;p class="MsoNormal"&gt;Cuando nos tenemos que pasar más de la mitad de la jornada laboral delante del monitor escribiendo documentos, los ojos se empiezan a cansar de estar expuesto tanto tiempo ante una pantalla en blanco con pequeño texto en negro. Seguramente recordaréis algunos que antiguamente existían procesadores de texto como Wordpress versiones 5 en la que se trabajaba sobre fondo azul oscuro y letras en blanco, aquella combinación de colores no era casual, siendo el resultado de estudios sobre ergonomía visual.&lt;/p&gt;      &lt;p class="MsoNormal"&gt;El objetivo de este artículo es enseñar como cambiar la apariencia visual del procesador de textos para trabajar de forma más relajada.&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Para la aplicación Microsoft Word:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;En el menú superior, marcamos la opción “Herramientas” -&gt; “Opciones”.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Nos aparecerá una ventana donde deberemos ir a la pestaña “General”.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Activaremos la opción: “Fondo azul, texto blanco”. Y finalmente al botón “Aceptar”.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Para la aplicación Openoffice.org Write:&lt;/p&gt;      &lt;p class="MsoNormal"&gt;Menú superior: "Herramientas" -&gt; "Opciones…"&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Y en la ventana que nos aparece: "OpenOffice.org" -&gt; "Representación"&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt;Aquí podremos seleccionar o crear esquemas de colores, que viene a ser los distintos colores que usará la aplicación para representar cada uno de los elementos. En este caso sólo necesitamos modificar el elemento "Fondo de documento" y seleccionar el color "Azul" y, el "Color de la fuente" a color "Blanco".&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt;También podremos personalizar bastantes más cosas como, colores para enlaces, saltos, índices y otros.&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;No os preocupéis, que aunque veáis el documento con fondo azul, al imprimir, seguirá imprimiendose en blanco.&lt;/p&gt;Por cierto, que aquí en la oficina, cada vez somos más los que tenemos activas este tipo de opciones. En cuanto te acostumbres, ya no querras volver al cansado blanco.&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-204176863829904422?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/204176863829904422/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=204176863829904422' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/204176863829904422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/204176863829904422'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2007/07/evitar-el-cansancio-de-la-vista-al.html' title='Evitar el cansancio de la vista al manejar documentos'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-5045169607172459174</id><published>2007-07-03T15:03:00.000+02:00</published><updated>2007-07-03T15:25:12.200+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dominios'/><title type='text'>Dominio Chinese.com</title><content type='html'>Pues ahora mismo acaba de terminar la subasta del dominio &lt;span style="font-weight: bold;"&gt;Chinese.com&lt;/span&gt; que se estaba realizando en el portal de compra-venta de dominios SEDO.&lt;br /&gt;&lt;br /&gt;La friolera cifra de: 805.001 euros.&lt;br /&gt;&lt;br /&gt;No está mal...&lt;br /&gt;&lt;br /&gt;Ya de paso comentaré lo que me paso hace unas semanas con un dominio. Resulta que recibí una oferta de 300 euros por uno de mis dominios que más me gusta. Como me pareció poco, decidí hacerle una contraoferta. Lo curioso es que todas las cifras que iba pensando me parecía poco... hasta que me decanté por pedir 113.000 euros. Lógicamente esta cifra era demasiado alta, y el comprador canceló la negociación directamente (no lo culpo). Lo que queda de moraleja es que ya no estamos en el año 2000 y los dominios valen lo que valen y no intentes sacar más que nadie te lo va a dar.&lt;br /&gt;&lt;br /&gt;PD. Seguramente el dominio en cuestión tuviera realmente un precio de unos 2.000 euros. Para la próxima se que tengo que ser más realista con las cantidades que la gente estaría dispuesta a pagar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-5045169607172459174?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/5045169607172459174/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=5045169607172459174' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/5045169607172459174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/5045169607172459174'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2007/07/dominio-chinesecom.html' title='Dominio Chinese.com'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-6298653302270955515</id><published>2007-06-29T16:20:00.000+02:00</published><updated>2007-06-29T16:22:31.467+02:00</updated><title type='text'>Cómo solicitar una subvención de innovación tecnológica</title><content type='html'>&lt;p&gt;Últimamente en el trabajo me estoy encargando de redactar la documentación para solicitar ayudas con las que realizar determinados proyectos tecnológicos. Como comprenderéis, es algo a lo que no te enseñan en la universidad...&lt;br /&gt;&lt;br /&gt;Os voy a hablar un poco del temas de ayudas a proyectos de tecnología por si alguna vez os toca pedir alguna.&lt;br /&gt;&lt;br /&gt;Hay diferentes tipos de ayudas, están las de nivel europeo (de estas no las he tocado), a nivel nacional (generalmente dadas por un ministerio, principalmente el &lt;a href="http://www.mityc.es/"&gt;Mityc&lt;/a&gt;  ) y a nivel comunidad autónoma.&lt;br /&gt;&lt;br /&gt;Os contaré algunas ayudas dadas por el Ministerio de Industria, Turismo y Comercio.&lt;br /&gt;Os podéis informar de las ayudas disponibles en cada momento a través del portal &lt;a href="http://www.mityc.es/portalayudas"&gt;&gt;&gt;&lt;/a&gt; .&lt;br /&gt;Cada subvención tiene unas condiciones determinadas y que son publicadas en el BOE, y generalmente salen dos órdenes en el Boletín, una primera la cual informa del tipo de ayuda (Plan Avanza Pyme, etc...) y que introducen algún tipo de ayuda que se dará durante varios años (ejemplo: 2007-2012), a estas órdenes se las suele llamar &lt;span style="font-style: italic;"&gt;reguladoras&lt;/span&gt;. Por otra parte para cada año concreto aparece la orden de dicho año, en la que ya aparece información más específica de la subvención, presupuesto disponible en ayudas, etc. Con lo que es recomendable leerse ambas órdenes.&lt;br /&gt;En cuanto al contenido de la memoria depende de cada ayuda, pero por lo general encontramos una estructura común formada por tres partes:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Memoria técnica. Dónde se describirá el proyecto, es importante reflejar aquí los objetivos que se buscan, los beneficios de la sociedad que se desean conseguir y un definición de fases en las que se dividirá el proyecto. Generalmente cuanto más innovador es el proyecto más puede despertar el interés por los técnicos que revisén la petición, pero hay que tener cuidado en describir todo bien, dado que por lo general, no conocerán las tecnologías más actuales.&lt;/li&gt;&lt;li&gt;Memoria económica. Tendremos que escribir un presupuesto respetando las fases que anteriormente hemos desglosado en la memoria técnica, y acordarnos de poner el coste por hora de cada tipo de personal, así como los diferentes costes de inversiones requeridas para el proyecto (compra de material informático, licencias de software, etc.). Lo más complicado de esta parte es saber meter cada gasto en el apartado correcto, dado que el porcentaje que se subvenciona varía si es parte de consultoría o desarrollo, adquisición de equipos, inmuebles, etc. cada tipo tendrá un porcentaje a aplicar para la petición y para esto son muy muy estrictos los técnicos. Cuando hablo de porcentaje me refiero a lo siguiente: imaginemos que tenemos un gasto de 100 horas de consultor junior a un coste de 50€/h, eso daría un total de coste de 5.000€, la consultoría en muchos proyectos se subvenciona al 50%, luego aunque el coste total sea de 5.000€ sólo podremos pedir 2.500€.&lt;/li&gt;&lt;li&gt;Memoria de solvencia. Básicamente la capacidad de la empresa o asociación de realizar el proyecto. Aquí es importante remarcar la antigüedad de la empresa, facturación de los últimos tres años y otros proyectos realizados satisfactoriamente. Si además contamos con proyectos subvencionados otros años, está bien ponerlo también.&lt;/li&gt;&lt;/ul&gt;Y con esto ya tendríamos toda la memoria lista. Generalmente estamos haciendo unas 50-60 hojas por proyecto de unos 100.000€, aunque después sólo se pague una pequeña parte, siempre viene bien este tipo de ayudas.&lt;br /&gt;&lt;br /&gt;Sólo me falta decir que en todos los apartados, cuantas más cifras, gráficas, y demás pongamos mejor! Dado que dará mayor sensación de tener controlado el proyecto. Además de que suele ser más fácil de comprender la amplitud de una acción por medio de números que leyendo un montón de párrafos describiendo algo abstracto.&lt;br /&gt;&lt;br /&gt;Espero que os animeis a pedir las vuestras. ¡Suerte!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-6298653302270955515?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/6298653302270955515/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=6298653302270955515' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/6298653302270955515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/6298653302270955515'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2007/06/como-solicitar-una-subvencion-de.html' title='Cómo solicitar una subvención de innovación tecnológica'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-1238933867503671628</id><published>2007-06-03T00:56:00.000+02:00</published><updated>2007-07-03T15:24:04.454+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Universidad'/><title type='text'>Patrones de diseño</title><content type='html'>Supongo que ya estaréis artos de escuchar por todas partes las palabras "...patrones de diseño..." y lo importantes que son dominarlos para mejorar la eficiencia en el diseño de aplicaciones. Pues os voy a hablar otro poco más.&lt;br /&gt;Este año estoy cursando en la escuela una asignatura dedicados a ellos, se llama algo así como: "Reutilización y diseño de patrones de software". Previamente conocía que existían e incluso sabía usar e implementar un par de ellos, pero nunca me animaba a ponerme seriamente con ellos.&lt;br /&gt;Ahora creo que se usar más o menos bien unos 8 patrones, además de conocer otros tantos (por si algún día tengo que tirar de ellos). La pregunta después de todo esto es: ¿Son realmente útiles? Pues eso parece... veamos el porqué.&lt;br /&gt;&lt;br /&gt;En la mayoría de los casos, los ejemplos de los patrones suelen ser muy simples y bonitos que funcionana perfectamente, pero cuando estamos haciendo el diseño de un programa, las cosas no son tan fáciles. No obstante conocer que existen y estudiar su implementación nos hacen ver otro punto de vista para solucionar problemas, que si bien no se adaptará 100% a los requisitos y por lo tanto no se podrá usar tal cual, nos ayudará a que nuestros diseños poco a poco empiecen a parecerse a unos u otros patrones y comenzaremos a pensar de forma más abstracta a la hora de tirar líneas de código.&lt;br /&gt;&lt;br /&gt;Otra razón de peso para empezar a usar patrones es la mayor facilidad de explicar el código de una aplicación a otra persona, siempre y cuando esta persona también conozca los patrones, porque   nos ahorraremos de tener que explicar lo que hacen dichas partes de código.&lt;br /&gt;&lt;br /&gt;Libro recomendado: "Patrones de diseño aplicados a Java" de Stephen Steling y Olav Maasseng. Editorial Prentice Hall (2002).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-1238933867503671628?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/1238933867503671628/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=1238933867503671628' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/1238933867503671628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/1238933867503671628'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2007/06/patrones-de-diseo.html' title='Patrones de diseño'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-8842500582628175779</id><published>2007-03-30T11:04:00.000+02:00</published><updated>2007-03-30T11:51:13.044+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>DevDay 2007</title><content type='html'>Ayer ( 29 de Marzo de 2007 ) se celebró en Madrid la &lt;a href="http://www.microsoft.com/spanish/msdn/spain/eventos/devday/default.mspx"&gt;DevDay 2007&lt;/a&gt;. Voy a contaros un poco lo que se pudo ver allí y las impresiones que me llevé.&lt;br /&gt;&lt;br /&gt;A las 9:15 aproximadamente ya estaba entrando, nos dieron una entrada para la peli 300, una bolsa con revistas varias de informática y un libro sobre Windows Presentation Foundation.&lt;br /&gt;&lt;br /&gt;La primera charla "Mejores prácticas en aplicaciones servidor" fue una de las más interesantes del día (tal vez porque al ser la primera se presta más atención), hablaron sobre pruebas de stress con Visual Studio Test Edition, crear páginas web asíncronas para mejorar el performance de un servidor, y una herramienta llamada CLR Profiler capaz de analizar la memoria de proceso en .net y permitir analizar que objetos tiene instanciados y el árbol que forman en la memoria.&lt;br /&gt;&lt;br /&gt;Segunda charla (acumulando ya media hora de retraso) fue acerca de "Metodologías con Visual Studio Team System", no lo miré mucho porque fue un ver de nuevo una charla que dieron hace dos años también sobre esto.&lt;br /&gt;&lt;br /&gt;Tercera charla de "Mejores prácticas en la experiencia de usuario". Además de definir qué es la experiencia de usuario, me quedó como interesante el que existieran unas guías sobre la experiencia de usuario para Vista, un monton de consejos sobre cómo debemos hacer las interfaces para que sean agradables al usuario y facilite su utilización: &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/UxGuide/UXGuide/Home.asp"&gt;Windows Vista User Experience Guidelines&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Cuarta charla de "Mejores prácticas en el desarrollo Web:ASP.NET 2.0 AJAX", me esperaba otra cosa en esta conferencia. Está claro que al Web.config hay que cambiar a "debug=false" cuando estamos en producción y que esto era lo que la gente hacía, pero debe ser que no, porque insistieron mucho. Hubo una referencia sobre una aplicación para analizar Ajax y un par de patrones interesantes de usar.&lt;br /&gt;&lt;br /&gt;Llegó la hora de comer y descanso de 1 hora.&lt;br /&gt;&lt;br /&gt;En la sesión de tarde se agregó una de las charlas que estaba programada para la mañana pero que por falta de tiempo no pudo darse.&lt;br /&gt;&lt;br /&gt;Quinta charla de "Mejores prácticas en el desarrollo para SQL Server", supongo que un poco de lo de siempre, cuándo y por qué usar procedimientos almacenados, funciones de usuario etc, con una demo para ver lo que pasa cuando se hacen cosas mal y de pasar una consulta con 35.000.000 lecturas (supongo que de bloques lógicos) a 6 lecturas con una consulta y procedimientos/funciones/etc bien creados.&lt;br /&gt;&lt;br /&gt;Sexta charla de "Mejores prácticas de desarrollo de código seguro", digamos que fue una charla diferente, resaltaron que hay que cuidar mucho la seguridad en el nivel de aplicaciones y que recomiendan usar una metodología de seguridad como la SDL-IT (Security Development Lifecicle for IT)&lt;br /&gt;&lt;br /&gt;Septima charla de "Orcas. La nueva generación de Visual Studio" que nos contaron las novedades de .net 3.0 y ligeras pinceladas de lo que trairía la nueva versión de Visual Studio, así como del Team Foundation Server. No me parecio que hubiera grandes cambios. Ah! bueno después una demo de LINQ mostrando un poco que es y para que sirve.&lt;br /&gt;&lt;br /&gt;Y con esto llegamos a la última charla, septima de "Desarrollo de gadgets para Windows Vista" he de reconocer que no atendí mucho esta charla, porque como aun no he manejado Vista ni los gadgets me llamaban mucho la atención... básicamente dejaron claro que eran como páginas web metidas en un pequeño cuadrado, y mientras hicieron un juego raro en el que se cambiaron de vestimenta a una de gala para pasar a el último evento. La entrega de premios de un concurso sobre desarrollo de gadgets.&lt;br /&gt;&lt;br /&gt;Y se acabó, ya aquí me fui para casa. Aunque bastante gente creo que se quedó a un pase al que estabamos invitados de la película 300.&lt;br /&gt;&lt;br /&gt;Ahora que ya he ido a dos DevDay (el anterior fue el 2005) puedo comparar. Y he de decir, que el anterior DevDay 2005 me dejó mejor sabor de boca que este. También es cierto que en aquel evento se presento VS.NET 2005 y cosas que no había visto hasta aquel momento.&lt;br /&gt;&lt;br /&gt;Ahora a la espera de que manden el email con las presentaciones y así ver las referencias, que hubo alguna que otra interesante y que no pude cazar en el momento.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-8842500582628175779?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/8842500582628175779/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=8842500582628175779' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/8842500582628175779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/8842500582628175779'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2007/03/devday-2007.html' title='DevDay 2007'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-1807315493726166277</id><published>2007-03-26T22:29:00.000+02:00</published><updated>2007-04-14T21:51:51.089+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Cómo forzar la descarga de un archivo en una página web</title><content type='html'>Voy a comentaros este pequeño truco. Se trata de hacer que desde una página web en la que queremos enviar un archivo al cliente y que el navegador le pregunte lo típico de: Abrir, Guardar ... en vez de que lo abrá directamente dentro del navegador. Ejemplo, fichero .pdf y queremos que le pregunte si desea guardarlo, etc. en vez de abrirlo incómodamente dentro del navegador como ocurre muchas veces.&lt;br /&gt;&lt;br /&gt;La solución es tan fácil como indicarlo en las cabeceras. Para Asp.Net sería algo así:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;string nombreFichero = "documento.pdf"; // o el nombre que queramos poner&lt;br /&gt;Response.AppendHeader("content-disposition", "attachment; filename=" + nombreFichero);&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Después quedaría asignar el tipo de contenido a través de las mime-type:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Response.ContentType = "application/pdf";&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Y finalmente asignar los datos del fichero que queremos transferir (hay muchas formas de hacer esto):&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Response.BinaryWrite( (byte[]) datos);&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Es bueno que indicar que se desea terminar la transferencia de la petición del cliente por medio del comando:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Response.End();&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Para que no se procese el texto de la página, ni el Render de los componentes.&lt;br /&gt;&lt;br /&gt;Espero que os sea de utilidad.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Actualización&lt;/span&gt;: No lo comenté, pero lo que se hace con todo esto es agregar una opción más en las cabeceras de la respuesta http, en este ejemplo se agregaría:&lt;br /&gt;&lt;blockquote&gt;content-disposition: attachment; filename=documento.pdf&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-1807315493726166277?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/1807315493726166277/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=1807315493726166277' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/1807315493726166277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/1807315493726166277'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2007/03/cmo-forzar-la-descarga-de-un-archivo-en.html' title='Cómo forzar la descarga de un archivo en una página web'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-4386679048715463643</id><published>2007-03-24T14:25:00.000+01:00</published><updated>2007-03-24T14:26:59.029+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Descargar MSDN Library</title><content type='html'>Después de perder una gran cantidad de tiempo navegando por las leeeentas páginas de Msdn Library he terminado haciendo una búsqueda para ver si estaba disponible pada descargar y trabajar en local. Y afortunadamente existe!&lt;br /&gt;&lt;br /&gt;2GB de fichero en formato ISO. Puedes descargarlo de:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=es&amp;FamilyID=94596af5-cc58-45af-a14b-df627a31e783"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=es&amp;FamilyID=94596af5-cc58-45af-a14b-df627a31e783&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Esta es la versión de diciembre 2006... bastante actualizado.&lt;br /&gt;&lt;br /&gt;Para mi gusto, no termina de ser excesivamente cómoda. Está en formato ayuda de windows y puedes llegar a perderte con un treeview taaaan grande (aunque existen filtros). La versión del enlace es la correspondiente con español, pero eso no quiere decir que sea más reducida que la versión inglesa, realmente tiene los mismo artículos, lo único que algunos como es natural están sin traducir.&lt;br /&gt;&lt;br /&gt;Interesante tener a mano para leer de vez en cuando.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-4386679048715463643?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/4386679048715463643/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=4386679048715463643' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/4386679048715463643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/4386679048715463643'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2007/03/descargar-msdn-library.html' title='Descargar MSDN Library'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-3465062665455332489</id><published>2007-03-23T02:25:00.000+01:00</published><updated>2007-03-24T14:27:53.234+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Como crear un MembershipProvider personalizado</title><content type='html'>Estaba navegando por el newsgroup de soporte que tiene Microsoft y una de las primeras dudas que veo de alguien era directamente sobre algo en lo que estuve mirandome estos dos últimos días. ¡Casualidad! así que me he marcado un post respondiendole y de pasó aquí lo dejo también :)&lt;br /&gt;&lt;br /&gt;La duda es sobre las limitaciones de SQLMembershipProvider y si se puede ampliar las funcionalidades de alguna forma. La respuesta es que si, creando nuestro propio MembershipProvider, y a continuación el How to de como sería esto:&lt;br /&gt;&lt;br /&gt;-------------------&lt;br /&gt;Curiosamente estoy haciendo ahora un MembershipProvider personalizado :) (Exactamente un Db4oMembershipProvider)&lt;br /&gt;&lt;br /&gt;SQLMembershipProvider hereda de la clase MembershipProvider, que es la clase abstracta que define los métodos y propiedades que debe tener un MembershipProvider en general.&lt;br /&gt;&lt;br /&gt;La clase que usas SQLMember... está como tu bien dices sólo para usar la estructura de datos que se crea automáticamente, etc.&lt;br /&gt;&lt;br /&gt;Si necesitas algo más avanzado o personalizado tendrás que crearte tu propia clase, MyMembershipProvider (por ponerle un nombre)&lt;br /&gt;&lt;br /&gt;Pasos que tendrás que hacer:&lt;br /&gt;&lt;br /&gt;- Crearte una clase que herede de System.Web.Security.MembershipProvider&lt;br /&gt;&lt;br /&gt;- Implementar todos los métodos y propiedades que tiene dicha clase. Esto con Visual Studio es muy fácil. Botón derecho en el nombre de la clase -&gt; implementar métodos abstractos...&lt;br /&gt;&lt;br /&gt;- Tendrás que escribir los métodos con las funcionalidades que necesitesutilizar, y los que no, puedes dejarlos con un throw new Exception("No implementado");&lt;br /&gt;&lt;br /&gt;- Y bueno, hay una cosa un poco rara que te comento de paso. Todo MembershipProvider tiene que tener un nombre. Tendrás que definir una propiedad Name como algo parecido a:&lt;br /&gt;---------------------------------------&lt;br /&gt;     private string _name;&lt;br /&gt;&lt;br /&gt;     public override string Name {&lt;br /&gt;        get { return _name; }&lt;br /&gt;     }&lt;br /&gt;---------------------------------------&lt;br /&gt;&lt;br /&gt;Y aquí está el problema, el nombre se le da al provider por medio de un método llamado Initialize, pero este creo que no estaba marcado como abstrac y por lo tanto por defecto no se genera el método override... tendrás que añadir algo como:&lt;br /&gt;&lt;br /&gt;---------------------------------------&lt;br /&gt;     public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)&lt;br /&gt;     {&lt;br /&gt;         if (String.IsNullOrEmpty(name))&lt;br /&gt;             _name = "CMembershipProvider";&lt;br /&gt;         else&lt;br /&gt;             _name = name;&lt;br /&gt;&lt;br /&gt;         base.Initialize(name, config);&lt;br /&gt;     }&lt;br /&gt;---------------------------------------&lt;br /&gt;&lt;br /&gt;Después deberás agregar en el Web.Config unas líneas para indicar que quieres disponer de un determinado MembershipProvider dentro de tu catálogo de Providers y definirlo como por defecto:&lt;br /&gt;&lt;br /&gt;---------------------------------------&lt;br /&gt;&amp;lt;system.web&amp;gt;&lt;br /&gt;[...]&lt;br /&gt;   &amp;lt;membership defaultprovider="MyMembershipProvider"&amp;gt;&lt;br /&gt;     &amp;lt;providers&amp;gt;&lt;br /&gt;       &amp;lt;add name="MyMembershipProvider" type="MyNamespace.MyMembershipProvider" applicationname="/"&amp;gt;&lt;br /&gt;     &amp;lt;/add&amp;gt;&lt;br /&gt;   &amp;lt;/providers&amp;gt;&lt;br /&gt;[...]&lt;br /&gt;&amp;lt;/membership&amp;gt;&lt;br /&gt;---------------------------------------&lt;br /&gt;&lt;br /&gt;El name no tiene por que coincidir con el nombre de la clase, es sólo para identificarlo dentro del catálogo de Providers. Y en type es donde tendrás que poner la ruta a tu clase personalizada (incluyendo los namespaces).&lt;br /&gt;&lt;br /&gt;Espero que te haya servido de ayuda ;)&lt;br /&gt;&lt;br /&gt;Jaime&lt;br /&gt;&lt;br /&gt;&lt;system.web&gt;&lt;/system.web&gt;&lt;/system.web&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-3465062665455332489?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/3465062665455332489/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=3465062665455332489' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/3465062665455332489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/3465062665455332489'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2007/03/como-crear-un-membershipprovider.html' title='Como crear un MembershipProvider personalizado'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-363836327258552563</id><published>2007-03-21T03:34:00.000+01:00</published><updated>2007-03-21T03:50:34.440+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>¡Para recordar! En Asp.Net poner siempre el ID en los controles creados dinámicamente.</title><content type='html'>Creo que he perdido como 6 horas por no poner los ID manualmente a los controles que creo dinámicamente.&lt;br /&gt;&lt;br /&gt;La historia se resume en que en un WebForm insertaba unos cuantos botones por ahí en función de ciertos datos que eran fruto de eventos generados previamente por el usuario.&lt;br /&gt;&lt;br /&gt;Yo que confío mucho en los frameworks y esas cosas, con lo que estaba dejando que el propio asp.net estableciera los ID de todos los componentes que creaba dinámicamente, (esos nombres que siempre establece como ctr01, ctr02...). Todo parece ir bien hasta que... esos botones tienen eventos asociados de Command (básicamente como el Click) con métodos que tenía en el "codebehind".&lt;br /&gt;&lt;br /&gt;De repente y después de medio funcionar todo, algunos botones dejan de generar el evento, además con cierta aleatoriedad (aunque siempre encontré un patrón por el que fallaban)&lt;br /&gt;&lt;br /&gt;¿Qué estaba sucediendo? Pues que por determinadas razones que no vienen mucho a cuento, no se estaban asignado el mismo ID a los botones de una llamada a otra (siempre las llamadas eran PostBack), así que el gestor de eventos se hacía un poco el lio y encontraba peticiones de botones que él no reconocía. Dado que la petición anterior esos botones tenían un nombre diferente.&lt;br /&gt;&lt;br /&gt;Lo se, toda la culpa es mia, pero lo que más rabia me da, es que hace 5 meses estuve haciendo también una cosa parecida y cometí el mismo fallo!!!&lt;br /&gt;&lt;br /&gt;En fin, errar es de hombres y yo debo de ser muy humano.&lt;br /&gt;&lt;br /&gt;Al menos con tanto rebuscar, he dado un buen refresco al sistema de ejecución de páginas en asp.net además de las opciones de depuración de Visual Studio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-363836327258552563?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/363836327258552563/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=363836327258552563' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/363836327258552563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/363836327258552563'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2007/03/para-recordar-en-aspnet-poner-siempre.html' title='¡Para recordar! En Asp.Net poner siempre el ID en los controles creados dinámicamente.'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-4518895558929161312</id><published>2007-03-11T22:36:00.000+01:00</published><updated>2007-03-24T14:33:30.329+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Yoigo'/><title type='text'>Configurar Internet  y MMS en Yoigo</title><content type='html'>¡Esta vez la novedad es que tengo un móvil 3G con Yoigo! Pues si, mi novia me ha hecho un regalazo al que le había echado el ojo desde hace unas semanas, un pack con el Sony Ericsson K610i y con número de Yoigo incluido.&lt;br /&gt;&lt;br /&gt;La necesidad que intento cubrir con esto es básicamente poder tener conectividad a Internet cada vez que estoy de viaje o simplemente fuera de casa. El móvil un lujazo en calidad/precio. Bluetooth, cámara 2Mps, ranura para tarjeta de memoria (tipo 2M), trae un navegador bastante decente, así como aplicaciones extras como lector RSS, soporte de Java Midlet 2.0, y un montón de cosas más. En la caja venía el móvil, cargador, cable conexión USB con el ordenador y CD con los típicos programas para configurar el móvil con el orde.&lt;br /&gt;&lt;br /&gt;En cuanto a Yoigo, este fin de semana estuve en una casa perdida en una montaña y como esperaba... no había cobertura Yoigo, pero ahí estaba Vodafone para echar un cable.&lt;br /&gt;&lt;br /&gt;Lo mejor, cuando ya has llegado al 1,20€, recibir los mensajes con la información de gasto de 0€ !!&lt;br /&gt;&lt;br /&gt;Y bueno, aunque la gente habla muy bien de la conexión de datos de Vodafone, como no he probado las dos, no puedo comparar. Pero de momento me quedo con esta que además parece salir más económica :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para ver configuraciónes de móviles / ordenadores para conectarte a internet a través de Yoigo ver: &lt;a href="http://yoigo.blogspot.com/search/label/Configuraciones"&gt;Configuración acceso a internet con Yoigo&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-4518895558929161312?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/4518895558929161312/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=4518895558929161312' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/4518895558929161312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/4518895558929161312'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2007/03/configurar-internet-y-mms-en-yoigo.html' title='Configurar Internet  y MMS en Yoigo'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-8429215120745872601</id><published>2007-02-21T14:09:00.000+01:00</published><updated>2007-07-03T15:23:39.934+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Universidad'/><title type='text'>Proyecto fin de carrera</title><content type='html'>Pues ya me van quedando pocas asignaturas para terminar la carrera así que debo empezar a plantearme que proyecto fin de carrera hacer. Lo primero decir que acepto sugerencias!!&lt;br /&gt;&lt;br /&gt;De momento las cosas que había pensado son:&lt;br /&gt;- Análisis web, o cosas relacionadas con SEO.&lt;br /&gt;- Identificar algún protocolo de lo que sea que no esté soportado por J2ME y crear una implementación de dicho protocolo.&lt;br /&gt;- Algo relacionado con mobility... posibles tecnologías: gps, bluetooth, rfid, etc.&lt;br /&gt;&lt;br /&gt;Seguiré pensando, espero que se me ocurra algo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-8429215120745872601?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/8429215120745872601/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=8429215120745872601' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/8429215120745872601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/8429215120745872601'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2007/02/proyecto-fin-decarrera.html' title='Proyecto fin de carrera'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-1277196603765689299</id><published>2007-02-06T23:33:00.000+01:00</published><updated>2007-02-08T12:49:03.690+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google AdSense for domains</title><content type='html'>Hace poco, &lt;a href="http://jaimecg.blogspot.com/2007/01/pensando-en-vender-un-dominio.html"&gt;hablaba&lt;/a&gt; sobre alojar dominios sin contenidos en algún parking tipo SEDO e intentar amortizar el coste de mantener dicho dominio.&lt;br /&gt;&lt;br /&gt;Bien, si eres un &lt;span style="font-style:italic;"&gt;&lt;a target="_blank" href="http://es.wikipedia.org/wiki/Domainer"&gt;domainer&lt;/a&gt;&lt;/span&gt; con una gran lista de dominios que desea aparcar, entonces te recomiendo que eches un vistazo al servicio de &lt;a target="_blank" href="http://www.google.com/domainpark/"&gt;Google AdSense for Domains&lt;/a&gt;. El gran problema es que sólo está disponible para aquellas cuentas con un alto número de dominios y previa petición. Aunque no tengo datos concretos, creo que es más interesante económicamente que otras compañías de parkings.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-1277196603765689299?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/1277196603765689299/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=1277196603765689299' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/1277196603765689299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/1277196603765689299'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2007/02/google-adsense-for-domains.html' title='Google AdSense for domains'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-3962447715949884256</id><published>2007-01-21T15:17:00.000+01:00</published><updated>2007-01-21T15:22:39.445+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Enlaces'/><title type='text'>El uso de tablas en páginas web</title><content type='html'>Hoy encontré a através de meneame una web que habla sobre el gran error de utilizar tablas para maquetar una página web.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.effectivetranslations.com/stupidtables/everything_es.html"&gt;Porqué el diseñar con tablas es estúpido&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Recomiendo su lectura, encontrarás argumentos bastante contundentes por si alguna vez necesitas convencer a alguien.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-3962447715949884256?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/3962447715949884256/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=3962447715949884256' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/3962447715949884256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/3962447715949884256'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2007/01/el-uso-de-tablas-en-pginas-web.html' title='El uso de tablas en páginas web'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-3740328766104999211</id><published>2007-01-17T23:43:00.000+01:00</published><updated>2007-07-03T15:24:52.630+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dominios'/><title type='text'>Pensando en vender un dominio</title><content type='html'>Hace algunos días decidí poner en venta un dominio que tengo. No he fijado el precio, de momento lo tengo en acepto ofertas. Me he decantado por anunciarlo en SEDO, parece que son gente seria y gestionan un monton de dominios. Así que de momento se lo he dejado aparcado a ellos, a ver si algún día me dan una sorpresa.&lt;br /&gt;&lt;br /&gt;Por lo que he mirado en páginas de SEO y de dominios, pagan mucho por determinados dominios muy cortos o de palabras llamativas, pero muy muy poco por dominios más normales.&lt;br /&gt;&lt;br /&gt;Aquí les dejo el link al parking por si tienen curiosidad de como es.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.migrupo.com/"&gt;mi grupo .com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-3740328766104999211?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/3740328766104999211/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=3740328766104999211' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/3740328766104999211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/3740328766104999211'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2007/01/pensando-en-vender-un-dominio.html' title='Pensando en vender un dominio'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-116231628162656337</id><published>2006-12-31T19:49:00.000+01:00</published><updated>2006-12-31T19:51:08.540+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Varios'/><title type='text'>Feliz Navidad y Prospero Año Nuevo</title><content type='html'>Sólo quería desearos a todos lo mejor para estas fechas, y que el próximo año sea tan bueno como el que dejamos. ¡¡Y esperemos que traiga muchos posts interesantes!! :)&lt;br /&gt;&lt;br /&gt;Un saludo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-116231628162656337?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/116231628162656337/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=116231628162656337' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/116231628162656337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/116231628162656337'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2006/12/feliz-navidad-y-prospero-ao-nuevo.html' title='Feliz Navidad y Prospero Año Nuevo'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-8327102059689014641</id><published>2006-11-08T01:54:00.000+01:00</published><updated>2006-11-10T01:20:14.591+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Opinión'/><title type='text'>Frases...</title><content type='html'>Estaba ojeando unos documentos que escribí hace ya algún tiempo, y encontré que algunos de ellos los terminaba con una frase resumen. Debería volver a adoptar esta práctica. De todas formas quería aprovechar para poner aquí un par de ellas.&lt;br /&gt;&lt;br /&gt;La primera: &lt;br /&gt;&lt;blockquote&gt;"Establecer unas funcionalidades mínimas para la primera versión y posteriormente añadir nuevas funcionalidades en versiones futuras"&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Que nos viene a decir, que es importante llegar a cerrar un proyecto, y en generar, terminar aquellas cosas que comenzamos. No hay nada peor que un proyecto sin fin, unos estudios universitarios con asignaturas pendientes, etc.&lt;br /&gt;&lt;br /&gt;La segunda:&lt;br /&gt;&lt;blockquote&gt;"El software se hace para ganar dinero, si el cliente no está contento, no pagará, si el desarrollo es desordenado, no se planifica correctamente, no utilizamos la comunicación directa con el cliente, es muy probable que nuestro proyecto no se adapte a lo que quería y no quede contento."&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Y si no queda contento... como se comenta al principio, no paga y nos despedirán :D&lt;br /&gt;&lt;br /&gt;Por eso, hay que centrarse en hacer las cosas bien, pero no un bien a nuestra manera o beneficio propio como desarrollador o gestor del proyecto, es más un bien por el cliente y sus necesidades, escuchemosle pues puede ser nuestro mejor compañero. ¡Pero ojo! comunicación con el cliente no es sólo escuchar, también es hablar, y explicarle los problemas, soluciones alternativas, nuestras opiniones. Depende de los tamaños del proyecto dependerá la frecuencia con la que se deberían hacer reuniones, no obstante entre 1 o 2 reuniones por mes es una buena cifra.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-8327102059689014641?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/8327102059689014641/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=8327102059689014641' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/8327102059689014641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/8327102059689014641'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2006/11/frases.html' title='Frases...'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-4145857961412712405</id><published>2006-10-12T15:39:00.000+02:00</published><updated>2006-10-16T02:32:04.283+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google Docs &amp; Spreadsheets</title><content type='html'>Si, lo se, Google Spreadsheets salió hace unos cuantos meses, pero la noticia es Google Docs, un procesador de textos online, ambos empiezan a formar la suit ofimática que Google está preparando.&lt;br /&gt;&lt;br /&gt;Cosas interesantes de Google Docs:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Accesible desde un navegador con conexión a Internet.&lt;/li&gt;&lt;li&gt;Posibilidad de descargar el documento en formato: Html,  Rtf, Word, OpenOffice.org y PDF.&lt;/li&gt;&lt;li&gt;Histórico de cambios, permitiendo ver la evolución del documento y poder retroceder a versiones anteriores.&lt;/li&gt;&lt;li&gt;Posibilidad de edición colaborativa, pudiendo compartir documentos para poder ser editados por múltiples personas. (La opción más interesante desde mi punto de vista)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;¿A qué esperas para probarlo?  &lt;a href="http://docs.google.com/"&gt;Google Docs &amp;amp; Spreadsheets&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-4145857961412712405?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/4145857961412712405/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=4145857961412712405' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/4145857961412712405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/4145857961412712405'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2006/10/google-docs-spreadsheets.html' title='Google Docs &amp; Spreadsheets'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-614790100276309076</id><published>2006-10-11T13:05:00.000+02:00</published><updated>2006-10-16T02:31:55.687+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blog'/><title type='text'>Alta en FeedBurner</title><content type='html'>Como soy un poco indeciso con esto de los gestores de blogs, suelo ir cambiando cada cierto tiempo de servidor, así que he decidido darme de alta en FeedBurner para facilitar la vida a aquellos que me tengan agregado en su lector RSS o ATOM.&lt;br /&gt;&lt;br /&gt;La dirección es:&lt;br /&gt;&lt;a href="http://feeds.feedburner.com/jaimecg"&gt;http://feeds.feedburner.com/jaimecg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El uso de feeds es realmente interesante para enterarte de los nuevos contenidos de una lista de páginas sin tener que visitar todas estas páginas. Porque tendrás en un único sitio toda la información.&lt;br /&gt;&lt;br /&gt;Yo utilizo un lector de online: &lt;a href="http://www.google.com/reader"&gt;Google Reader&lt;/a&gt; [http://www.google.com/reader]&lt;br /&gt;&lt;br /&gt;Es realmente potente y cómodo al no tener que instarte ninguna aplicación en tu ordenador.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-614790100276309076?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/614790100276309076/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=614790100276309076' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/614790100276309076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/614790100276309076'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2006/10/alta-en-feedburner.html' title='Alta en FeedBurner'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-8071520260470062148</id><published>2006-10-05T17:08:00.000+02:00</published><updated>2007-04-04T17:31:27.965+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Ejemplo simple de NHibernate en Mono</title><content type='html'>&lt;p&gt;Hace unos días &lt;a href="http://blog.jaimecg.com/2006/09/nhibernate-empezando.html"&gt;comenté&lt;/a&gt; que estaba empezando a mirar NHiberante, pues bien ahora os pongo un ejemplo breve para que veáis como funciona más o menos.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Ejemplo práctico&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Veamos a NHibernate en funcionamiento. Para ello vamos a realizar un ejemplo de agenda. Siempre vamos a necesitar crear tres ficheros: el esquema SQL de la tabla, la clase que define el objeto y un fichero XML donde define la relación entre campos de la tabla y los atributos de la clase.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Nuestra tabla contactos alojará datos de nombre, apellidos, teléfono y fecha de nacimiento.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Estructura de la tabla (SQL)&lt;/span&gt;&lt;br /&gt;&lt;p&gt;contactos.sql&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;CREATE TABLE `contactos` (&lt;br /&gt;`id_contacto` int(8) NOT NULL AUTO_INCREMENT,&lt;br /&gt;`nombre` varchar(25) NOT NULL DEFAULT '',&lt;br /&gt;`apellidos` varchar(50) NOT NULL DEFAULT '',&lt;br /&gt;`email` varchar(50) NOT NULL DEFAULT '',&lt;br /&gt;`fecha_nacimiento` DateTime NOT NULL DEFAULT '',&lt;br /&gt;PRIMARY KEY `id_contacto` (`id_contacto`)&lt;br /&gt;);&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Clase que define nuestro objeto (C#)&lt;/span&gt;&lt;br /&gt;&lt;p&gt;La clase &lt;i&gt;Contacto&lt;/i&gt; define toda la información de cada contacto encapsulada en un objecto.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Contacto.cs &lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;using System;&lt;br /&gt;&lt;br /&gt;class Contacto {&lt;br /&gt;&lt;br /&gt;private int _id_contacto;&lt;br /&gt;private string _nombre;&lt;br /&gt;private string _apellidos;&lt;br /&gt;private string _email;&lt;br /&gt;private DateTime _fecha_nacimiento;&lt;br /&gt;&lt;br /&gt;/* protected para que NHibernate pueda acceder */&lt;br /&gt;protected int id_contacto {&lt;br /&gt;  get { return this._id_contacto; }&lt;br /&gt;  set { this._id_contacto = value; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;protected string nombre {&lt;br /&gt;  get { return this._nombre; }&lt;br /&gt;  set { this._nombre = value; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;protected string apellidos {&lt;br /&gt;  get { return this._apellidos; }&lt;br /&gt;  set { this._apellidos = value; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;protected string email{&lt;br /&gt;  get { return this._email; }&lt;br /&gt;  set { this._email = value; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;protected DateTime fecha_nacimiento {&lt;br /&gt;  get { return this._fecha_nacimiento; }&lt;br /&gt;  set { this._fecha_nacimiento = value; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* public  */&lt;br /&gt;public int IdContacto {&lt;br /&gt;  get { return this._id_contacto; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public string Nombre {&lt;br /&gt;  get { return this._nombre; }&lt;br /&gt;  set { this._nombre = value; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public string Apellidos {&lt;br /&gt;  get { return this._apellidos; }&lt;br /&gt;  set { this._apellidos = value; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public string Email{&lt;br /&gt;  get { return this._email; }&lt;br /&gt;  set { this._email = value; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public DateTime FechaNacimiento {&lt;br /&gt;  get { return this._fecha_nacimiento; }&lt;br /&gt;  set { this._fecha_nacimiento = value; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* Constructor */&lt;br /&gt;public Contacto() {&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Mapeando la tabla con la clase (XML) &lt;/span&gt;&lt;br /&gt;&lt;p&gt;Por último construiremos nuestro fichero de mapeado, el encargado de relacionar las variables de los objetos con los datos de las tablas. Es importante que el fichero tenga como extensión .hbm.xml, NHibernate buscará automáticamente los ficheros con dicha extensión y los procesará. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;nhibernate.hbm.xml&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;lt;hibernate-mapping xmlns="urn:nhibernate-mapping-2.0"&amp;gt;&lt;br /&gt; &amp;lt;class name="Contacto, Agenda" table="contactos"&amp;gt;&lt;br /&gt;  &amp;lt;id name="id_contacto" column="id_contacto" type="Int32" length="10"&amp;gt;&lt;br /&gt;   &amp;lt;generator class="increment"/&amp;gt;&lt;br /&gt;  &amp;lt;/id&amp;gt;&lt;br /&gt;            &amp;lt;property name="nombre" column="nombre" type="String" length="25"/&amp;gt;&lt;br /&gt;            &amp;lt;property name="apellidos" type="String" length="50"/&amp;gt;&lt;br /&gt;            &amp;lt;property name="email" type="String" length="50"/&amp;gt;&lt;br /&gt;            &amp;lt;property name="fecha_nacimiento" type="Ticks"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/class&amp;gt;&lt;br /&gt;&amp;lt;/hibernate-mapping&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;Analicemos la estructura del fichero. Cada &lt;i&gt;class&lt;/i&gt; que definamos hace referencia al mapeado de una clase vinculada con la tabla que le asignemos, en este caso la clase "Contacto" con la tabla "contactos". Dentro de ella deberemos especificar las variables que vamos a usar de dicha clase y vincularlo con la columna específica de la tabla que estamos trabajando. Usaremos &lt;i&gt;property&lt;/i&gt; para vincular cada atributo de la clase con cada columna, usando "name" para el nombre de la variable de la clase y "column" el nombre de la columna de la tabla, véase que si el nombre de la columna es el mismo que el de la variable, no es necesario especificar nada, pues NHibernate usará el mismo nombre especificado en "name" como columna, y por último especificar el tipo de dato con "type" (Puede obtener una lista de los tipos usados en NHibernate y los tipos de datos con que se corresponde en: &lt;a href="http://nhibernate.sourceforge.net/nh-docs/en/html/single/reference.html#mapping-types" class="external" rel="nofollow"&gt;http://nhibernate.sourceforge.net/nh-docs/en/html/single/reference.html#mapping-types&lt;/a&gt; ) Si el esquema(tabla) utiliza algún tipo de columna clave, deberemos especificarlo con "id" de uso similar a "property" con el añadido de que podemos asignar un modelo de generación de claves para el campo, en este caso incrementado. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Haciendo uso de NHibernate&lt;/span&gt;&lt;br /&gt;&lt;p&gt;Para hacer uso de nuestro objeto crearemos un pequeño programa de consola: &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Agenda.cs&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;using System;&lt;br /&gt;using NHibernate;&lt;br /&gt;using NHibernate.Cfg;&lt;br /&gt;&lt;br /&gt;class Agenda {&lt;br /&gt;    public static void Main(string[] args)&lt;br /&gt;    {&lt;br /&gt;        Console.WriteLine("Iniciando Agenda...");&lt;br /&gt;&lt;br /&gt;        Configuration cfg = new Configuration();&lt;br /&gt;        cfg.AddAssembly("Agenda"); // Carga los *.hbm.xml&lt;br /&gt;        Console.WriteLine("Configuracion cargada");&lt;br /&gt;&lt;br /&gt;        ISessionFactory factory = cfg.BuildSessionFactory();        &lt;br /&gt;        ISession session = factory.OpenSession();        &lt;br /&gt;        ITransaction transaction = session.BeginTransaction();&lt;br /&gt;&lt;br /&gt;        Contacto miContacto = new Contacto();        &lt;br /&gt;        miContacto.Nombre = "Jaime";&lt;br /&gt;        miContacto.Apellidos = "C";&lt;br /&gt;        miContacto.Email = "jaimecg at gmail.com";&lt;br /&gt;        miContacto.FechaNacimiento = new DateTime(1900,1,1); //Que viejo soy!&lt;br /&gt; &lt;br /&gt;        // Realizamos la persistencia del objeto&lt;br /&gt;        session.Save(miContacto);&lt;br /&gt;&lt;br /&gt;        Console.WriteLine ("Contacto añadido, id_contacto: {0}", miContacto.IdContacto);&lt;br /&gt;&lt;br /&gt;        // Cierra la transacción y la conexión con la base de datos.&lt;br /&gt;        transaction.Commit();&lt;br /&gt;        session.Close();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Como ves, es realmente sencillo insertar objetos y manipularlos. Podríamos crear un manejador de Contactos y así crear nuestra capa de datos de la aplicación. Nos bastaría unas pocas líneas para generar un &lt;i&gt;ContactosManager&lt;/i&gt; para la insercción, recuperacion, actualización o búsqueda de objetos &lt;i&gt;Contacto&lt;/i&gt;. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Compilando&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;mcs -t:exe -r:System,System.Data,log4net,NHibernate -warn:4 -out:Agenda.exe -main:Agenda -resource:nhibernate.hbm.xml Contacto.cs Agenda.cs&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Configurando&lt;/span&gt;&lt;br /&gt;&lt;p&gt;Agenda.exe.config&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt; &amp;lt;configSections&amp;gt;&lt;br /&gt;  &amp;lt;section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" /&amp;gt;&lt;br /&gt;  &amp;lt;section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;nhibernate&amp;gt;&lt;br /&gt;  &amp;lt;add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" /&amp;gt;&lt;br /&gt;  &amp;lt;add key="hibernate.dialect" value="NHibernate.Dialect.MySQLDialect" /&amp;gt;&lt;br /&gt;  &amp;lt;add key="hibernate.connection.driver_class" value="NHibernate.Driver.MySqlDataDriver" /&amp;gt;&lt;br /&gt;  &amp;lt;add key="hibernate.connection.connection_string" value="Server=localhost;Database=monohispano;User ID=root;Password=;" /&amp;gt;&lt;br /&gt; &amp;lt;/nhibernate&amp;gt;&lt;br /&gt;&amp;lt;/configSections&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Ejecutando&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;mono Agenda.exe&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Salida en pantalla: &lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;$ mono Agenda.exe&lt;br /&gt;Iniciando Agenda...&lt;br /&gt;Configuracion cargada&lt;br /&gt;Contacto añadido, id_contacto: 1&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-8071520260470062148?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/8071520260470062148/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=8071520260470062148' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/8071520260470062148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/8071520260470062148'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2006/10/ejemplo-simple-de-nhibernate-en-mono.html' title='Ejemplo simple de NHibernate en Mono'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-2247596321088621916</id><published>2006-09-27T14:44:00.000+02:00</published><updated>2006-10-16T02:31:31.247+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Feliz cumpleaños Google !!</title><content type='html'>Un día como hoy hace 8 años vimos nacer Google. ¡Felicidades! Realmente increible como una empresa en tan poco tiempo puede haber crecido tanto, y sobrevivir a una crisis (.com en el año 2000-2002). Hoy en día su capitalización bursatil es de 123.840 millones de dolares.  No está mal, si lo comparamos con el de otras empresas como Microsoft: 271.180 Millones $, Sun: 17.830 M$, Novell: 2.000M$.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-2247596321088621916?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/2247596321088621916/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=2247596321088621916' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/2247596321088621916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/2247596321088621916'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2006/09/feliz-cumpleaos-google.html' title='Feliz cumpleaños Google !!'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-4172901573206611579</id><published>2006-09-27T02:53:00.000+02:00</published><updated>2006-10-16T02:31:21.391+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>NHibernate empezando.</title><content type='html'>Llevo unos días mirandome &lt;a href="http://www.nhibernate.org/"&gt;NHibernate&lt;/a&gt; y... ¡que complicado! Hace ya mucho tiempo probé un poco esta herramienta y no profundicé entonces más de realizar persistencias de una única clase. Pero ahora me encuentro realizando un proyecto con alguna clase más, con muchas relaciones y de muy diferentes tipos. Por suerte ya estoy terminando las funcionalidades básicas de la capa de datos, y ya se puede guardar y recuperar todos los tipos de objectos y sus relaciones.&lt;br /&gt;&lt;br /&gt;Lo más difícil sin duda, hacer los ficheros de mapeo, hay tantas y tantas opciones, lo mejor empezar por las opciones fáciles y dejar muchos campos a default para cuando ya se va cogiendo el ritmo darle una vuelta a ver si alguna opción te puede ser de utilidad.&lt;br /&gt;&lt;br /&gt;También he notado que es algo lento, aunque mi computador ya tiene 4 años, sí que hay una pequeña espera cuando está recuperando (y aplicando el mapeado de objetos). Tengo que investigar las diferentes opciones de optimización que están soportadas.&lt;br /&gt;&lt;br /&gt;Actualmente estoy usando la versión 1.0.2, a la espera de la 1.2.0 con el soporte de... ¡genéricos! salió la beta hace pocos días, pronto tenemos versión estable de esta nueva rama.&lt;br /&gt;&lt;br /&gt;El último "ORM" que había usado habitualmente era el DB_DataObject para PHP, realmente sencillo de usar. De ahí que me esté costando el cambio. No obstante tengo claro que lo próximo es usar directamente &lt;a href="http://www.castleproject.org/index.php/ActiveRecord"&gt;ActiveRecord&lt;/a&gt; [CastleProject.org], se ve realmente bueno, muy al estilo RubyOnRails :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.castleproject.org/index.php/ActiveRecord"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-4172901573206611579?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/4172901573206611579/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=4172901573206611579' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/4172901573206611579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/4172901573206611579'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2006/09/nhibernate-empezando.html' title='NHibernate empezando.'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-1217159520443669406</id><published>2006-08-31T15:47:00.000+02:00</published><updated>2006-10-16T02:30:51.338+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Bugs'/><title type='text'>Tiempo desde que se notifica un bug hasta que es arreglado.</title><content type='html'>Ayer estaba navegando por los diferentes servicios de google y me encontré con &lt;a href="http://www.google-store.com/"&gt;Google Store&lt;/a&gt; (una tienda de merchandising de Google) y me topé con un fallo en la navegación con el que llegabas a una pantalla de error en php:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/1600/716976165128522/1600/Error_Google-store_spanish.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger2/1600/716976165128522/320/Error_Google-store_spanish.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Lo curioso es que les mandé un mail ayer por la noche, esta mañana me respondieron que ya habían notificado al departamento oportuno, y a las dos horas ya estaba solucionado.&lt;br /&gt;Me pregunto cuanto tiempo hubiera tardado en arreglarse si hubiera sido una empresa española. :D&lt;br /&gt;Contar también que realmente está subcontratado ese servicio a otra empresa que no tiene nada que ver con Google, así que no se pueden sacar conclusiones de que usen php en más servicios.&lt;br /&gt;Y tampoco me ofrecieron ningún chisme por notificarles el fallo :( en fin.&lt;br /&gt;&lt;br /&gt;PD: el fallo consistia en activar la opción de español en una página que estaba un poco escondida, y al volver a la página principal, pues eso pasaba.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-1217159520443669406?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/1217159520443669406/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=1217159520443669406' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/1217159520443669406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/1217159520443669406'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2006/08/tiempo-desde-que-se-notifica-un-bug.html' title='Tiempo desde que se notifica un bug hasta que es arreglado.'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-3099862158961615399</id><published>2006-08-31T10:45:00.000+02:00</published><updated>2006-10-16T02:33:54.379+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><title type='text'>Ajax ... eso tan famoso.</title><content type='html'>Ajax ha dejado de ser recordado como marca de detergente a pasar a ser "el no va más" del desarrollo web. Y parece más un fenómeno social que el bautizo del uso de una serie de tecnologías ya bastante conocidas.&lt;br /&gt;&lt;br /&gt;Aparte del efecto moda, ajax es algo realmente útil en el desarrollo de web. Y cuando su uso es el adecuado, puede lograr una interfaz cómoda de navegar, rápida, y atractiva para el usuario. De hecho recomiendo visitar páginas como: &lt;a href="http://www.javapassion.com/ajaxcodecamp/"&gt;Ajax en 10 semanas&lt;/a&gt;   &lt;br /&gt;&lt;br /&gt;Lo que venía a decir entre otras cosas, es que cuando sólo se esté usando Javascript para algún efecto en la web, no lo llames Ajax, si no tiene comunicación con el server de forma asincrona, no hay transferencia de datos (en Xml) y todo eso no está controlado con Javascript... No lo llames Ajax! llamalo de otra forma, pero no ajax. Esto viene porque ya he visto más de una vez alguien presentando una web, llenandosele la boca de usar Ajax y otras tecnologías suuuper modernas, y... a la hora de la verdad, no ser más que un par de funciones en javascript para hacer un efecto en la web sin conexión a servidor ni manejo de datos ni nada de nada.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-3099862158961615399?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/3099862158961615399/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=3099862158961615399' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/3099862158961615399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/3099862158961615399'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2006/08/ajax-eso-tan-famoso.html' title='Ajax ... eso tan famoso.'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-7241371636807651763</id><published>2006-08-30T12:16:00.000+02:00</published><updated>2006-10-16T02:34:23.414+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Libros'/><title type='text'>Nuevo libro: Fundamentos de Bases de Datos (Silberschatz)</title><content type='html'>Se acerca Septiembre y tengo una asignatura pendiente que no pude presentarme en su día. Esta es la de Gestión y Administración de Bases de Datos. A pesar de tener los apuntes, transparencias y demás, hay cosas que las veo un poco desordenadas, así que me he comprado el libro que aconsejaban, y que también me comentó un colega, y como aprender Bases de Datos es importante... pues me acerqué a una librería y 54€ menos.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/1600/716976165128522/1600/db5-cover.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger2/1600/716976165128522/320/db5-cover.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Tiene cerca de 1000 páginas, pero les pasa lo que a casi todos, demasiado modelo relacional, y poco a cosas nuevas! como bases de datos orientadas a objetos. Pero de momento pintar... pinta bien, y la portada es bonita :D&lt;br /&gt;&lt;br /&gt;La web del libro: &lt;a href="http://www.db-book.com/"&gt;http://www.db-book.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-7241371636807651763?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/7241371636807651763/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=7241371636807651763' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/7241371636807651763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/7241371636807651763'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2006/09/nuevo-libro-fundamentos-de-bases-de.html' title='Nuevo libro: Fundamentos de Bases de Datos (Silberschatz)'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-4961228133637386912</id><published>2006-08-29T23:31:00.000+02:00</published><updated>2006-08-30T02:41:21.698+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google Apps for Your Domain</title><content type='html'>¡Increible!  No se exactamente cuando Google sacó este nuevo servicio. Bueno lo primero contar brevemente de que se trata. Google Apps for Your Domain es una adaptación de los servicios habituales de Google, es decir, Gmail, Google Calendar, Google Page y Google Talk para ser usados directamente con tu dominio. De momento son sólo estos cuatro servicios, aunque se espera que pronto vayan adaptando más y más servicios.&lt;br /&gt;&lt;br /&gt;¿Qué te permite esto? Pues te cuento mi caso real y evalua por ti mismo.&lt;br /&gt;Junto con algunas personas teniamos una idea en mente de un proyecto web, teniamos nuestro dominio y hasta ahora las cuentas de correos eran alias a otras cuentas, la web estaba en un orde en casa de uno, un poco cutre todo. Pero... desde hace dos días que estamos dados de alta, ahora tenemos todos unas cuentas de correo de 2 gigas del tipo nombre_usuario@nuestro_dominio.com con un panel de administración para dar de alta nuevos usuarios, alias,  ¡¡ listas de correo !!, etc. Tenemos calendario privado y compartido entre nosotros, y un sistema de chat, voip y envio de ficheros (Google Talk) entre nosotros siempre conservando nuestro dominio e identidad. Y finalmente, un sitio donde alojar sencillas páginas web, (esta es la única pega, que Google Page es muuuy útil para gente sin conocimientos de hacer páginas web, pero para los demás queda un poco escueto). También dimos de alta un blog de la "empresa" vinculado para mantener las noticias y novedaes.&lt;br /&gt;&lt;br /&gt;Como ves, a nosotros nos solucionó bastante todas las comunicaciones básicas entre nosotros.&lt;br /&gt;&lt;br /&gt;Echamos de menos un Google Disk o algo así, donde poder alojar ficheros y compartirlos a los demás al estilo de .mac o iFolder. (pero la gente habla mucho de esto, así que cuando el río suena... es porque un músico se está ahogando, digo.. porque algo de verdad habrá)&lt;br /&gt;&lt;br /&gt;Si quieres darte de alta, necesitas una cuenta de Google y dirigirte a: &lt;a href="https://www.google.com/a/"&gt;https://www.google.com/a/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-4961228133637386912?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/4961228133637386912/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=4961228133637386912' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/4961228133637386912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/4961228133637386912'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2006/08/google-apps-for-your-domain.html' title='Google Apps for Your Domain'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-6654750965250252232</id><published>2006-08-21T15:47:00.000+02:00</published><updated>2006-10-16T02:31:46.264+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blog'/><title type='text'>Iniciando weblog en Blogger Beta</title><content type='html'>Probando Blogger Beta.  Tal vez me convenga cambiar de weblog manager y venirme aquí, me evitaría mantener el hosting.&lt;br /&gt;&lt;br /&gt;Actualmente hago uso de WordPress instalado en una máquina en mi casa, esto me da mucha flexibilidad, pero requiere de un mantenimiento, aplicar actualizaciones, electricidad e internet.&lt;br /&gt;&lt;br /&gt;Seguiré mirando las opciones que me permite esto y a ver si me decido.&lt;br /&gt;&lt;br /&gt;¡Un saludo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-6654750965250252232?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/6654750965250252232/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=6654750965250252232' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/6654750965250252232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/6654750965250252232'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2006/08/probando-blogger-beta.html' title='Iniciando weblog en Blogger Beta'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5873468744732853824.post-3780736345756191993</id><published>2006-08-12T13:27:00.000+02:00</published><updated>2006-10-16T02:29:27.265+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aplicaciones'/><title type='text'>VMware Player</title><content type='html'>La empresa &lt;a href="http://www.vmware.com/es/"&gt;VMware&lt;/a&gt;, conocida por su herramienta de virtualización de computadores, sacó recientemente una versión gratuita conocida como &lt;a href="http://www.vmware.com/es/products/desktop/player_features.html"&gt;VMware Player&lt;/a&gt;, que nos permite ejecutar una máquina virtual previamente creada con sus versiones comerciales Workstation o Server. En principio sólo nos sirve para bajarnos máquinas virtuales construidas para probar determinados sistemas operativos. Como por ejemplo &lt;a href="http://www.mono-project.com/news/archive/2006/Jul-28.html"&gt;una máquina virtual con Suse Linux Enterprise Desktop 10 y Mono&lt;/a&gt; (altamente recomenda para probarla :D).&lt;br /&gt;Una lista completa de máquinas virtuales con diferentes sistemas operativos instalados se encuentra en: &lt;a href="http://www.vmware.com/vmtn/appliances/"&gt;http://www.vmware.com/vmtn/appliances/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hasta aquí estaríamos bastante limitados, pero por suerte, existen herramientas gratuitas que nos permiten crear y manipular configuraciones de máquinas virtuales, y disponer de una máquina vacia del tamaño que necesitemos lista para ser utilizada.&lt;br /&gt;&lt;br /&gt;Las herramientas podéis obtenerlas de: &lt;a href="http://petruska.stardock.net/Software/VMware.html"&gt;http://petruska.stardock.net/Software/VMware.html&lt;/a&gt;  , en especial el &lt;a href="http://petruska.stardock.net/Software/Files/VMXBuilderSetup.exe"&gt;VMX Builder&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Recordar que las máquinas virtuales nos son muy útiles a la hora de probar distintos entornos de ejecución para nuestras aplicaciones.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5873468744732853824-3780736345756191993?l=blog.jaimecg.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.jaimecg.com/feeds/3780736345756191993/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5873468744732853824&amp;postID=3780736345756191993' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/3780736345756191993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5873468744732853824/posts/default/3780736345756191993'/><link rel='alternate' type='text/html' href='http://blog.jaimecg.com/2006/08/vmware-player.html' title='VMware Player'/><author><name>Jaime</name><uri>http://www.blogger.com/profile/16828673537043261958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
