QFE, GDR, COD… Siglas Microsoft para software por todas partes

El otro día leyendo este post de Bruno sobre un nuevo relase de Silverlight, Bruno decía que esta versión era un GDR. ¿Qué significa GDR?


Bueno, pues se trata de terminología relacionada con un modelo de servicio incremental para liberar software, que es el que se está usando en Microsoft. De hecho los que empezaron con este modelo y terminología fueron los del equipo de SQL Server en el año 2007, pero otros equipos lo han adoptado también. El objeto de este modelo incremental es liberar parches y correcciones que tengan asegurada la calidad y al mismo tiempo permitan una planificación predecible y un tiempo razonable.


Los dos tipos principales de parche que entran bajo este modelo son:


· GDR: General Distribution Release. Es una versión de distribución general, para todo el mundo. Engloba todo lo que tiene un cierto nivel de importancia y que afecta a mucha gente, como parches de seguridad, actualizaciones críticas que cubren error graves, los llamados «feature packs» que añaden funcionalidad, etc… De estos procuran no librar muchos, claro, pero les viene impuesto normalmente. Estos GDR se ponen a disposición de todo el mundo a través de Windows Update. Un cliente no puede solicitar un GDR, sino que es Microsoft quien conscientemente lo planifica, lo crea y lo libera.


· QFE: Quick Fix Engineering. Se trata de parches que nacen como respuesta de problemas específicos de clientes específicos, y que no tienen un impacto tan global. Se liberan de modo privado (hay muchos artículos enla KB que te dicen que elparche se lo tienes que pedir directamente a Microsoft, pues no es de libre descarga. En Krasis ya hemos utilizado algunos). Estos parches no siguen un proceso de revisión y calidad tan estricto como los GDR y se pueden sacar más «alegremente» (entiéndaseme).


Otros términos de esta metodología son:


· OD o COD: On-Demand o Critical On-Demand. Son parches parecidos a los QFE para cosas realmente críticas que no tienen ningún «truco» para solcuionarlas aunque sea temporalmente. Normalmente son peticiones directas de clientes con un problema grave.


· CU: Cummulative Update. Son parches acumulativos que se sacan generalmente de manera periódica y predecible (cada «x» meses), y que contienen todos los COD existentes. En ellos se incluyen también los parches no críticos que cumplan ciertos criterios, como la disponibilidad de una solución provisional, el efecto sobre la base de clientes, el impacto que tendrá sobre el producto y sobre el codigo que hay que tocar, etc…


En fin, a raíz del post de Bruno me pareció interesante hablar un poco de este tema bastante desconocido.


Espero que lo encuentres intersante.

Adobe retrasa tres semanas la solución de una vulnerabilidad crítica en Acrobat Reader y que ya hay gente explotando por ahí

Esta es de las cosas que me deja «flipado» leer. Y lo cierto es que no pasa sólo con Adobe sino con otras empresas muy conocidas. Si hubiese salido una noticia similar con Microsoft ya se habría liado.


El caso es que la Shadow Server Foundation avisó el pasado día 19 de una vulnerabilidad en Acrobat Reader que permite la ejecución de código arbitrario en el equipo de los usuarios, dando algunos detalles más el día 21. Por lo visto no se trata de algo realmente nuevo. Ellos simplemente lo han hecho público destacando además que está siendo ampliamente aprovechado en Internet para realizar ataques a usuarios. Adobe reconoció el fallo sacando un artículo en su KB unas horas después. El parche afecta a todas las versiones de Acrobat Reader y en todas las plataformas.


El caso es que Adobe ha dicho que no va a tener disponible ningún parche para este problema hasta por lo menos el 11 de marzo. Y eso para la versión 9 del producto. Para las otras tardará aún más, sin especificar cuando.


Para colmo de males nosotros en la oficina por ejemplo tenemos la versión 8.0 del reader porque la 9.0 se lleva a matar con nuestros perfiles en Windows Server 2008 y no podemos instalarla por que rompe. Así que a saber cuándo tendremos una solución para esto.


Me parece increible que dejen a merced de cualquiera a sus clientes, habida cuenta de que es un producto presente en la práctica totalidad de los ordenadores del mundo.


He de confesar que el software de Adobe no me gusta nada y sólo lo uso si no me queda otro remedio. Falla mucho, dan mal soporte, y las aplicaciones desde mi punto de vista ni siquiera se molestan en hacerse amigables para el usuario (no hay nada que me reviente más que abrir un PDF en una pestaña del navegador y no poder cerrar los mensajes o la propia pestaña usando teclas rápidas, y tener que usar el ratón para todo). Me da la sensación de que es una empresa que «vive de rentas» gracias al pseudo monopolio que tiene en ciertos ámbitos (me refiero sobre todo a Acrobat, Flash y Photoshop).


En fin, como solución preventiva parece ser que podemos minimizar el impacto de esto yendo a Edición·Preferencias·JavaScript y desactivando la casilla de permitir JavaScript en Acrobat. De todos modos ten cuidadito estas semanas con los PDF que te descargues de sitios que no sean de confianza o que te lleguen por e-mail.

Cómo cambiar la región del DVD de nuestro PC

Hace poco me compré un nuevo Media Center para el salón de casa. Ya se sabe que los geeks no podemos estar sin PC ni siquiera cuando nos idiotizamos delante de la televisión.


Con este Media Center me he cargado de un plumazo el aparato de TDT, el vídeo y el reproductor de DVD, además de tener siempre a mano Internet y muchas otras cosas propias de un ordenador, directamente en la tele grande del salón.


El caso es que el primer día que introduje un DVD original para reproducirlo me llevé la desagradable sorpresa de que me decía que el disco no estaba creado para reproducirse en mi región, y que por lo tanto no tenía autorización para verlo. «¡Y para eso me lo compré original!», exclamé indignado 🙁


Como es sabido, cuando se lanzaron al mercado los DVD para acabar con la mucho más cara industria del vídeo VHS, los creadores de contenidos (Hollywood fundamentalmente) en un intento de maximizar sus ingresos decidieron marcar cada disco con un indentificador de la región del mundo en la que era posible reproducirlos. Así, sólo los reproductores comprados en dicha región serían capaces de mostrar los contenidos a sus legítimos dueños, impidiendo (en teoría, claro) que la copia de contenidos se moviera fácilmente de un lado al otro del mundo. Este atentado a la propiedad (al fin y al cabo tú has pagado por la película independientemente de donde la hayas comprado), dividió al mundo en 7 zonas.


Los primeros reproductores para ordenador solían servir para cualquier parte del mundo. Sin embargo todos los modernos vienen atados a una región concreta, si bien ésta se puede establecer en el firmware desde el sistema operativo.


El motivo de que no mi DVD no se reprodujera era que el fabricante de mi equipo de ocio no le había establecido ninguna región al sistema, y por lo tanto no le permitía la reproducción de ninguno de los DVD originales que tenía, a excepción de uno de ellos que era compatible con todas las regiones del mundo.


Así que no me quedó más remedio que asignar la región de mi DVD antes de poder utilizarlo. Me llama poderosamente la atención que esto tenga que hacerlo el usuario final ya que no es algo obvio ni sabido por todo el mundo y este tipo de aparatos de ocio de salón están pensados para familias y usuarios con pocos conocimientos, por lo que me imagino que tendrás muchas devoluciones en las tiendas por un motivo tan tonto como no establecer automáticamente la región, algo soportado por Windows con un simple ajuste en el registro por parte del fabricante en fábrica.


Para cambiar la región debes ir a Panel de Control· Adminstrador de dispositivos y buscar tu DVD en la lista de hardware (normalmente el último del árbol). Al abrir sus propiedades hay una pestaña llamada Región de DVD. En ella puedes encontrar la lista de países por lo que basta con seleccionar el correcto para que se establezca la región y puedas empezar a disfrutar de tus DVDs legalmente comprados (que hay que fastidiarse):



Aquí hay que tener una cosa en cuenta: sólo se permite hacer el cambio de región un máximo de 5 veces. Una vez hecho el quinto cambio será imposible volver a cambiarlo a menos que flasheemos el firmware de nuestra unidad, algo que no es tan sencillo pues los fabricantes no suelen dar acceso a éste . Así que no es tan fácil como vernise aquí para cambiar las veces que queramos la región y poder ver cualquier DVD que hayamos comprado en cualquier parte del mundo. El cambio se almacena en el firmware, que tiene un contador de cambios, por lo que no se puede saltar uno la protección a través de Windows (si alguien sabe cómo hacerlo que lo comente aquí).


Para poder reproducir libremenete DVDs en Internet se oye hablar mucho de una utilidad llamada DVD Region Free, que aseguran que funciona muy bien. Yo no la he probado. Si alguien la ha probado puede dejarns un comentario aquí también.

Cómo permitir la desactivación de los botones de radio

Esto, que parece una tontería, no lo es en modo alguno. Cuando colocas un conjunto de botones de radio en una página Web con etiquetas de tipo <input type=»radio»>, al pulsar sobre cualquiera de ellos, éste queda seleccionado. Al pulsar sobre cualquier otro del mismo grupo, el primero se deselecciona ya que sólo uno de ellos puede estar seleccionado al mismo tiempo. Este es el comportamiento normal y esperado. Sin embargo hay un problemilla que mucha gente se encuentra que con sorpresa no pueden solucionar: ¿qué pasa si quieres desactivarlos todos una vez que ya hay alguno seleccionado?.



Prueba por ejemplo esta página. Al abrirla pulsa en los botones de radio de cualquiera de los grupos que contiene. Ahora intenta deseleccionarlos. No funciona.


Normalmente estos botones de radio se usan para dar a escoger entre varias opciones excluyentes entre sí, pero también puede darse la posibilidad de que la elección sea ‘ninguna’. Lo que suele hacer la gente para solucionarlo es incluir un nuevo elemento en el grupo que sirva para indicar que no interesa ninguna de las otras, pero no deja de ser un apaño si lo que quieres en efecto es no tener ninguna seleccionada.


Si quieres solucionarlo puedes conseguirlo por código de una forma relativamente sencilla para un grupo de botones de radio. La solución consiste en llevar un registro del elemento que está actualmente seleccionado y desactivarlo por código si es éste el que se pulsa en un momento dado. No funciona la simple comprobación en el evento Click de si un elemento está seleccionado o no, ya que ese evento Click salta justo después e haberse hecho el cambio, por lo que no tienes forma de determinar si realmente estaba o no seleccionado (pruébalo, verás que es un poco frustante).


Aún así lo mas complicado es poder gestionar esta capacidad para una página completa independientemente de cuántos grupos de botones de radio existan en ésta.


Esto es precisamente lo que he hecho en esta otra página, para que el que se haya encontrado con este problema lo pueda solucionar. Si la visitas verás que en ella la desactivación de los botones de radio funciona perfectamente y que sólo es necesario pulsar en uno que esté seleccionado para que se desactive.


Para conseguirlo hace falta un buen puñado de JavaScript. Éste, además debe estar colocado después de todos los formularios de la página para que funcione. El motivo es que se realiza una inicialización dentro del código para la cual deben estar ya creados los contoles que se van a gestionar, y como sabemos los navegadores procesan los contenidos de las páginas a medida que se los encuentran.


A continuación se expone el código necesario. Éste usa algunas cuestiones interesantes, como la generación dinámica de variables en memoria así como la comprobación de la existencia de éstas. Vamos a analizarlo:


<script type=«text/javascript»>
//Para distinguir la opción actualmente pulsada en cada grupo
var pref_opcActual = «opcActual_»;

//Verifica si una variable definida dinámicamente existe o no
function varExiste(sNombre)
{
return (eval(«typeof(« + sNombre + «);») != «undefined»);
}

//Asigna un valor a una variable creada dinámicamente a partir de su nombre
function asignaVar(sNombre, valor)
{
eval(sNombre + » = « + valor + «;»);
}

//generamos dinámicamente variables globales para contener la opción pulsada en cada uno de los grupos
for (f= 0; f<document.forms.length; f++)
{
for (i = 0; i< document.forms[f].elements.length; i++)
{
var eltoAct = document.forms[f].elements[i];
var exprCrearVariable = «»;
if (eltoAct.type == «radio»)
{
//Si la variable no existe la definimos siempre,pero sólo la redefinimos en caso de que el elemento actual del grupo esté asignado
if (!varExiste(pref_opcActual + eltoAct.name) )
exprCrearVariable = «var « + pref_opcActual + eltoAct.name + » = «;
else
exprCrearVariable = pref_opcActual + eltoAct.name + » = «;

//El valor será nulo o una referencia al radio actual en función de su está seleccionado o no
if(eltoAct.checked)
exprCrearVariable += «document.getElementById(‘» + eltoAct.id + «‘)»;
else
exprCrearVariable += «null»;

//Definimos la variable y asignamos el valor sólo si no existe o si el radio actual está marcado
if ( !varExiste(pref_opcActual + eltoAct.name) || eltoAct.checked)
eval(exprCrearVariable);
}
}
}

function gestionarClickRadio(opcPulsada)
{
//El nombre de la variable que contiene el nombre del grupo actual
var svarOpcAct = pref_opcActual + opcPulsada.name;

var opcActual = null;

opcActual = eval(svarOpcAct); //recupero dinámicamente una referencia al último radio pulsado de este grupo

    if (opcActual == opcPulsada)
    {
        opcPulsada.checked = false; //deselecciono
        asignaVar(svarOpcAct, «null»); //y quito referencia (es como si nunca se hubiera pulsado)
    }
    else
    {
asignaVar(svarOpcAct, «document.getElementById(‘» + opcPulsada.id + «‘)»); //Anoto la última opción pulsada de este grupo
    }
}
</script>


El prefijo pref_opcActual se usará para identificar la opción seleccionada en cada una de los grupos de controles existentes en la página. Defino dos funciones auxiliares, varExiste y asignarVar, que sirven para comprobar que una variable dada cualquiera existe en la página actual y para asignar dinñamicamente un valor a una variables. Lo interesante de estas dos funciones es que permiten la comprobación y la asignación pasando simplemente una cadena con el nombre de la variable que nos interesa, la cual puede existir o no, y no es encesario pasar una referencia real a dicha variable. Esta característica, habilitada por el método eval de JavaScript es muy interesante y no es utilizada muy a menudo por los programadores Web.


A continuación recorreo en un bucle cada uno de los posibles formularios que hay en la página (en ASP.NET uno solamente por regla general, pero esto funciona en cualqueir página) en busca de grupos de botones de radio.


Dentro del bucle para cada formulario lo que hago es generar dinámicamente, si no lo he hecho antes, el nombre de una variable por cada grupo de botones de radio. Ésta se encargará de almacenar dinámicamente una referencia al element actualmente seleccionado del grupo. Al terminar de ejecutarse el bucle lo que obtengo es una serie de variables llamadas opcActual_GrupoX, siendo GrupoX el nombre de cada grupo, las cuales contienen una referencia al elemento actualmente seleccionado en el grupo, de haberlo, o un nulo si no hay ninguno seleccionado en ese grupo.


Nótese que el nombre del grupo es el valor del atributo Name de cada elemento input, y que éste es el que se repite en los formularios apra defiinr los grupos. En un elemento input el atributo Name no tiene porque referirse realmente al nombre del elemento en la página (para eso está el atributo Id) sino que es el nombre que se recibe en eñ servidor una vez que se envía el formulario. En el caso de los botones de radio se envía sólo el valor de los que están seleccionados, por eso todo se pueden llamar igual 8sólo hay uno seleccionado a la vez y por lo tanto sólo se envía un valor por cada grupo. Este es código HTML para definir un grupo de radios tipo con dos elementos:



<input type=»radio» id=»01″ name=»grupo» value=»Opción 1″ onclick=»gestionarClickRadio(this);»> Opción 1<br>
<input type=»radio» id=»o2″ name=»grupo» value=»Opción 2″ onclick=»gestionarClickRadio(this);»> Opción 2<br>


Fíjate que en neustro ejemplo, como queremos que se puedan deseleccionar las opciones, he incluido un gestor del evento click, eso sí genérico, al que se le pasa simplemente una referencia al input que se ha pulsado (con this). Veaos qué hace este manejador del evento click (fíjate en el código JavaScript de arriba).


Lo primero es averiguar si hay alguna opción de este grupo que ya esté previamente seleccionada. Recuerda que no vale comprobar en este momento el valor de la propiedad checked del elemento que se pulsa, ya que su estado habrá cambiado y no tene os forma de saber cuál era el estado anterior. Ante esta limitación lo que se hace es ver el valor de la variable dinámica de tipo opcActual_ del grupo, que me devuelve una referencia al elemento que estaba seleccionado.


Si el elemento sobre el que hemo spulsado y a cuyo click estamos respondiendo coincide con el que teníamos registrado como seleccionado, entonces debemos desactivarlo. Además como ese es el único del grupo que podía estar pulsado, guardamos como elemento actualmente seleccionado un nulo, ya que ya no habrá ninguno (era este y lo acabamos de desactivar).


Si no era el actual el elemento pulsado entonces dejamos que la «naturaleza siga su curso» y que se quede marcado. Eso sí, anotamos el elemento actual como el seleccionado en nuestra variable opcActual_. Para ello evaluamos dinámicamente su identificador con getElementById (fíjate en que es la única forma de hacerlo y que n se pasa realmente una referencia al mismo a asignaVar, sino una cadena con la expresión que consigue evaluarlo).


Complicado ¿eh? 🙂


Este es un excelente ejemplo de cómo una tarea aparentemente trivial puede ser bastante compleja de resolver y necesitaremos de técnicas de programación más o menos avanzadas para poder resolverla.


Échale un buen repaso al código, ejecútalo paso a paso con el depurador de Visual Studio y verás que hay una lógica sencilla debajo de todo esto.


¡Espero que te sirva!

No te lo debes perder: Imeta Architecture Days 2009

Los próximos días 6 y 7 de abril se celebrará en Madrid un interesante evento de arquitectura de software: imeta Architecture Days 2009.

En este evento tres importantes expertos te pondrán al día, en poco tiempo, en todo lo relativo a la arquitectura de grandes aplicaciones empresariales.

imeta Arch Days

El primer día aprenderás a crear código fácil de mantener y a escribir tests unitarios efectivos. Se tratarán temas como la programación orientada a aspectos, inversión de control o los frameworks de prototipado de la mano de Steve Strong y Hadi Hariri. El segundo día él conocido arquitecto Udi Dahan explicará en un curso de 7 horas todo lo que necesitas saber sobre arquitecturas SOA y diseño dirigido por dominios.

Probablemente el evento con mayor nivel técnico al que podrás asistir este año. Si tienes alguna responsabilidad en el diseño técnico de los proyectos en los que trabajas no deberías perdértela.

Por cierto, aviso a navegantes: todas las ponencias y cursos serán en inglés, pero como seréis poca gente (las plazas están limitadas) y Hadi habla español perfectamente, el idioma no será un problema con que tengas un nivel de inglés medio.

Apúntate en la página del evento en imeta.

Cómo determinar qué aplicación Web está fuera de control en nuestro servidor

Imagínate la situación: tu servidor web alberga decenas de aplicaciones Web. de repente un día notas que el servidor está al límite de sus posibilidades, con el procesador al 100% todo el tiempo, y sin saber porqué. Abres el administrador de tareas del servidor y ves que un proceso W3WP.exe es el que está haciéndose con el procesador.


Así que una de tus aplicaciones Web está desmadrada y se empieza a comer todos los recursos de proceso, haciendo que las demás vayan cada vez más lentas. Pero hay decenas de w3wp.exe funcionando porque tienes decenas de aplicaciones, así que ¿cómo diablos averiguas cuál de ellas es la aplicación problemática?


Vale, lo primero es averiguar el identificador del proceso que se está comiendo los recursos del procesador oniéndolo al 100% todo el tiempo. Para ello, en el administrador de tareas (CTRL+MAYS+ESC) vas al menú Ver·Seleccionar Columnas y añades este campo a la lista de procesos, ya que no viene por defecto:



Una vez que ya sabes el identificador del proceso ya tienes mucho camino andado 🙂


Lo siguiente es averiguar a qué grupo de aplicaciones está asociado el proceso. Como sabrás, un grupo de aplicaciones o AppPool, es (simplificando) un modo de agrupar aplicaciones web en IIS que están relacionadas, de modo se aislen de otros grupos de aplicación. De este modo se pueden gestionar independientemente y cuando un grupo de aplicaciones tiene problemas no afecta a las aplicaciones que están en los demás grupos de aplicaciones.


Cada proceso de IIS (w3wp.exe) se corresponde con un grupo de aplicaciones. Por lo tanto sabiendo el ID de proceso si tuviésemos un modo de averiguar a qué grupo de apliaciones se corresponde ya sabríamos qué aplicación está dando problemas (por que, claro está, tú separas cada aplicación de tu servidor a su propio grupo de aplicaciones ¿verdad?).


En IIS 6.0 (el que viene con Windows Server 2003) tenemos una utilidad de Windows Scripting Host llamada iisapp.vbs que sirve precisamente para esto. Se encuentra en C:WindowsSystem32 o equivalente, así que abrimos una línea de comandos y escribimos:



cscript.exe iisapp.vbs


Eso nos devuelve algo similar a esto (he ocultado el nombre de los «culpables», porque son conocidos):



Mirando esta lista sabremos perfectamente cuál es el grupo de aplicaciones que está desmadrado, por lo que sabremos con precisión cuál es la aplicación que tiene un problema y produce esta situación (por que, repito, tú separas cada aplicación de tu servidor a su propio grupo de aplicaciones ¿verdad?).


En IIS 7.0 (el que viene con Windows Server 2008 o Vista), esta utilidad no existe y ha sido sustituida por una herramienta mucho más potente llamada AppCmd.exe que encontrarás en C:WindowsSystem32InetSrv. En este caso debes escribir en la línea de comandos (con permisos de administrador) lo siguiente:



appcmd LIST WP


Y obtendrás resultados similares.


De hecho, appcmd es una herramienta muy interesante a la que tengo intención de dedicar unos cuantos posts de este blog en el futuro.


¡Espero que te sea útil!

Evento en Compostela: Métodologías ágiles y Visual Studio Team system

Sé que hay muchos seguidores de este blog en Galicia, así que para ellos va este aviso de última hora: pasado mañana se celebra en santiago de Compostela el evento «Métodologías ágiles y Visual Studio Team system» en el que estará el tutor de campusMVP Rodrigo Corral, dándolo todo.

Va a ser muy interesante, con los siguientes contenidos:

9.30 – Registro y bienvenida
10.00 – Comienzo.
          * Metodologías ágiles, ¿qué son? ¿ cómo nos ayudan?
          * Introducción a MSF Agile
          * Introducción a Scrum
11.30 Descanso. Café
12.00 a 14.00 –
            *Scrum y Team system en el mundo real
            * Team System : la herramienta perfecta para el desarrollo ágil

Ya sabes, si estás cerca de Santiago el miércoles no debes perdértelo. Es gratis.

Anótate usando el enlace de arriba.

Windows 7 en mi eeePC: impresionante

(Nota: si no ves los vídeos pulsa aquí. Geeks parece que los elimina)


Hace unos meses me compré un Asus eeePC 901. Es un juguetito y para programar va muy justo, pero para irme de viaje me resulta estupendo y me hace un gran servicio porque pesa 1 Kg y la batería le dura más de 5 horas. Ahora bien, es algo limitado, luego os hablo de ello.


Según me llegó lo que hice fue quitarle el Linux cotroñoso que traía (si aún hubiera traido un Ubunto lo hubiera dejado, pero eso…) y meterle un Windows. Lo compré con Linux porque, por el  mismo precio, traía más disco duro. Pero los de Asus parece que lo que quieren es que le instales XP porque incluso trae las instrucciones de cómo hacerlo en el manual.


El caso es que, iluso de mi, lo primero que quise haer fue instalarle Vista. Y lo hice, pero… tuve algunos problemas con los drivers y además iba fatal. Lento no es la palabra. Lentísimo, aquello no se movía. El motivo, entre otros, es que los 20GB que trae de disco duro los han dividido en dos: 4 GB se corresponden a una unidad SSD rápida en la que se supone que debes instalar el Sistema Operativo. Los otros 16 GB están en una segunda unidad SSD que es más lenta que el caballo del malo. De todos modos es la única opción que tienes si quieres instalar casi cualquier sistema excepto el Linux asqueroso que traía (que no tiene ni ventanas), por que en la d 4 GB como comprenderás poco se puede hacer. Un grave fallo por parte de Asus.


Bueno, el caso es que le instalé un XP recortadito y le quité la hibernación, la memoria virtual, etc… para lograr que me encajara en los exiguos 4GB del disco rápido principal. Y así lo he usado los últimos meses. Aún así la cosa no iba muy fina que digamos y quitando en los viajes no me planteaba usarlo para nada más. Hasta esta semana pasada.


Lo que he hecho ha sido comprarme una memoria SSD como la que trae el sistema, pero de alta velocidad. Normalmente cuestan una pasta pero los amigos chinos de Runcore han sacado una idéntica a la del ee PC pero como cuatro o cinco veces más rápida y tirada de precio (me costó 67 euros envío prioritario en dos días incluido en Memory C). Sustituirla por la infame memoria original no cuesta nada, os dejo un vídeo de cómo hacerlo:



Nada más instalarlo no me pude resisitir: le instalé la beta de Windows 7 Ultimate. Todo el mundo dice que está preparado para estos chismes de capacidades limitadas y de hecho en la máquina virtual que llevo usando unos meses con la Beta va impresionantemente bien, pero quería probarlo yo mismo.


Ahora lo puedo decir de primera mano: ¡Qué bien va Windows 7 incluso en un eee PC!. Impresionante. Funcionan todas las características avanzadas nuevas de la interfaz, el Flip-3D, las cosas abren a toda velocidad, no se me cuelga nada. Mucho mejor que el anterior Windows XP que le tenía puesto que se supone que tiene menos requerimientos. Un 10.


Lo más alucinante de todo es que, durante la instalación, reconoció el solo todo el hardware a excepción de la tarjeta WiFi y la de red local (pero le funcionaron los drivers de XP a la primera y sin quejarse). No tuve apenas que hacerle nada: en menos de una hora tenía el sistema compelto instalado y funcionando, instalando desde una llave USB.


He grabado un vídeo corto mostrando el sistema en funcionamiento. No se ve con una  gran calidad porque mi cámara es de fotos, no de vídeo, pero llega de sobra para hacerse una idea:



En conclusión: si tienes un NetBook de estos instálal Windows 7 sin pensarlo. No te arrepentirás.