Acabo de consultar en Sourceforge la fecha exacta en que publiqué la última versión de la librería NRtfTree, y me ha sorprendido [no sé si para bien o para mal] comprobar la cantidad de tiempo que ha pasado desde entonces. Casi dos años. Para ser exactos, desde el 2 de septiembre de 2007 no he publicado ninguna novedad sobre la librería.

Como podréis suponer no he estado trabajando todo este tiempo en la librería, más aún tratándose de una versión beta que tan solo faltaba pulir un poco antes de publicar su versión final. Los motivos reales de la demora no han sido otros que el trabajo y la inversión de tiempo en otros proyectos que se encontraban más arriba en mi lista de prioridades.

Sin embargo, estos últimos días NRtfTree ha vuelto a estar entre los primeros puestos de mi lista de proyectos personales y he podido dedicar finalmente algo de tiempo a pulimentar aquello que liberé hace ya 668 días.

La versión publicada volverá a llevar consigo la etiqueta “beta”. Concretamente la numeración oficial será NRtfTree 0.3.0 beta2. Y después de tanto tiempo después de la última versión ¿por qué otra beta?. En la inminente nueva versión de la librería he corregido todos los errores relevantes que me habéis reportado, pero también he añadido algunas nuevas características que merecen ser probadas públicamente durante algún tiempo. Además, algunas clases han sufrido varios cambios internos en pro de un mejor rendimiento de la librería, motivo por el cual también me parece apropiado un tiempo adicional de prueba antes de la versión final.

Estimo que el resultado de este trabajo verá la luz en un par de semanas [o quizá antes], ya que aunque el código fuente se encuentra prácticamente listo, aún me quedan bastantes labores burocráticas pendientes, como por ejemplo la generación de la documentación de la librería, y la actualización del proyecto en Sourceforge, en la web oficial y en la sección del proyecto en mi propia web, donde espero poder añadir una nueva sección con nuevos tutoriales y ejemplos de uso.

Una vez publicada la nueva versión de NRtfTree, comenzaré con la actualización de JRtfTree para tratar de mantener ambos proyectos los más sincronizados posible.

Os mantendré informados.

Tras unos días jugueteando con el recién estrenado Wolfram|Alpha, he de decir como conclusión que me ha dejado un sabor de boca un tanto agridulce.

Y que nadie me entienda mal, no esperaba más de esta nueva herramienta, pero como ingeniero informático, como amante de la inteligencia artificial, y como gran entusiasta del tratamiento automático del lenguaje natural, aún me quedaba esa ilusión de que alguien, en algún momento de un futuro no muy lejano, fuera capaz de ir un paso más allá de los motores de búsqueda tradicionales, donde como todos sabemos Google sigue manteniendo su reinado indiscutible. No ha ocurrido así en esta ocasión, Wolfram|Alpha no ha traido consigo ninguna revolución en este campo, y de ahí el mal sabor de boca, pero resulta innegable que Stephen Wolfram ha iniciado un nuevo camino [en mi opinión prometedor] hacia ese objetivo.

Os pongo en antecedentes para quien aún no haya oído hablar del tema. ¿Conocéis a Stephen Wolfram? ¿Os suena quizá la compañía Wolfram Research? ¿Habéis utilizado alguna vez la aplicación informática Mathematica? Los que hayáis estudiado cualquier titulación técnico-científica seguro que habéis respondido afirmativamente a alguna de las preguntas anteriores. Para los que no, puedo contaros que Wolfram Research es la compañia que desarrolla la aplicación Mathematica, que puede considerarse como una de las herramientas de cálculo matemático más importantes de la actualidad con millones de usuarios, y Stephen Wolfram es la cabeza pensante que hay detrás de esa aplicación y de esa compañía. Pues bien, después de varios años de desarrollo, Wolfram|Alpha representa el nuevo proyecto de Stephen Wolfram, y se enmarca dentro del campo de los motores de búsqueda.

Wolfram|Alpha se planteó como un proyecto ambicioso, como un motor de búsqueda que, lejos de limitarse a ofrecer una lista de enlaces relacionados con el concepto buscado, fuera capaz de dar respuestas directas a preguntas sobre hechos concretos realizadas en lenguaje natural. Y no sólo eso, sino algo mucho más interesante, que fuera capaz de hacer “cálculos” con la información disponible, es decir, que tuviera la capacidad de inferir nuevos conocimientos más complejos [que no existan de forma explícita entre la información disponible] a partir de otros de los que sí se dispone, todo con el objetivo de generar una respuesta directa, correcta y completa a la pregunta del usuario. Como se puede comprobar estos objetivos van mucho más allá de lo que es, al menos a día de hoy, el “todopoderoso” Google.

Después de la presentación en sociedad del proyecto, ¿cuánto de lo que se prometía es cierto, y cuánto ha quedado de momento en el tintero? Pues es dificil de contestar a esto, todo depende del punto de vista que se utilice.

¿Es capaz de responder Wolfram|Alpha a preguntas directas escritas en lenguaje natural? Sí, pero con matices. En primer lugar, hay que decir que por el momento tan sólo entiende inglés, pero aún escribiendo en ese idioma el éxito de la respuesta dependerá mucho de la construcción de la pregunta, teniendo a veces que reformularla en varias ocasiones. La búsqueda de palabras clave sigue funcionando mejor que el lenguaje natural. Aún así hay que reconocer que se defiende bastante bien con preguntas directas, como por ejemplo “¿Cuál es la población de Madrid?“.

¿Es capaz de inferir Wolfram|Alpha nuevos datos a partir de los ya disponibles? Una vez más la respuesta es sí pero a medias. Es cierto que podremos hacer preguntas donde obliguemos al buscador a esforzarse un poco más para generar la respuesta, como por ejemplo “¿Que día cumplió Shakespeare 17 años?“. Dado que dificilmente ese dato aparezca de forma explícita en ninguna fuente de información, para responder a esta pregunta Wolfram|Alpha ha tenido que recuperar la fecha de nacimiento de Shakespeare y sumarle 17 años, es decir, de alguna forma ha calculado la respuesta a partir de la información disponible. ¿Cuál es el problema entonces? Pues el único “pero” que se puede poner es precisamente cuál es esa fuente de información de la que parte el buscador. Aunque en un primer momento pudo entenderse que al igual que los buscadores tradicionales Wolfram|Alpha obtendría su información directamente de la web esto no es así en realidad. Este nuevo buscador obtiene su información de varias fuentes externas de datos pretratados y adecuados expresamente para la ocasión. Y sí, estamos hablando de bases de datos gigantescas, pero ni mucho menos infinitas. ¿Qué quiero decir con esto? Pues básicamente que los contenidos que podremos encontrar en Wolfram|Alpha serán los que los desarrolladores del proyecto hayan seleccionado para formar parte de la base de información propia de la aplicación, lo que quiere decir que Wolfram|Alpha entiende de muchas temas pero no de todos, algo que casi sí podemos decir [dentro de los límites obvios] de los buscadores tradicionales. Y todo esto me lleva a una pregunta preocupante: si esa base de información se mantiene aislada del día a día de la actualidad ¿cuánto tiempo tardaremos en empezar a ver datos desactualizados como respuestas a nuestras preguntas? Espero que mucho, por el bien y el futuro del proyecto.

En definitiva, Wolfram|Alpha me parece un proyecto interesante, de gran valor desde el punto de vista técnico-científico, pero con una utilidad moderada para el usuario medio. Se trata de una aplicación a medio camino entre un motor de búsqueda tradicional (por ejemplo Google) y una enciclopedia online (por ejemplo Wikipedia). En ningún caso viene a sustituir a ninguno de los dos [simplemente no se ha diseñado para eso], pero sí los complementa a las mil maravillas, eso sí, siempre dependiendo del contexto de la búsqueda. En Wolfram|Alpha no encontraremos opiniones, ni noticias, ni tutoriales, ni artículos extensos, … en este nuevo buscador tan sólo encontraremos hechos, datos concretos sobre un tema concreto.

Y para descubrir las posibilidades que ofrece lo mejor es jugar un poco con él haciendo preguntas de lo más variopintas. Por ejemplo, realizar algún cálculo algebraico complejo (no olvidemos que Wolfram|Alpha tiene por detrás entre otras cosas la aplicación Mathematica),  conocer la posición genealógica de tu primo segundo, saber la cantidad de azucar que tiene una naranja, o averiguar algo tan elaborado como cuántas calorías quema un hombre de 28 años, 1.75 de altura y 75 Kg de peso si corre durante 30 minutos a un ritmo de 6 minutos/km. ¿Responde Google a esto de forma directa?

Para terminar, os dejo el enlace a un video de demostración de este nuevo motor de búsqueda donde pueden verse muchas de las posibilidades que nos ofrece y la inmensa variedad de información tanto textual como gráfica que es capaz de mostrar en sus resultados [Video demostración Wolfram|Alpha].

, , , ,

Estos últimos días, aprovechando que no he tenido demasiado tiempo suficientemente tranquilo como para escribir nuevas entradas en el blog, he estado realizando algunas modificaciones para arreglar uno de esos problemas que aparecen de pronto sin motivo aparente y algunas otras para hacerlo un poco más social.

Según he podido leer el problema lo han sufrido más usuarios de Wordpress, y se resume en que de un día para otro, y sin tocar la configuración del blog, dejan de funcionar las notificaciones por correo que avisan de nuevos comentarios o comentarios pendientes de moderar (en caso de tener activadas dichas opciones). Al parecer, se trata de algún problema con la función de envío de correo de Wordpress wp_mail(). Esto tiene como efecto colateral que todos los plugins en los que intervenga de una u otra forma el envío de correo dejan también de funcionar correctamente (por ejemplo el popular Contact Form 7). Las soluciones que se pueden encontrar por los foros son de lo más variopintas, y no todas parecen funcionar en todas las plataformas, pero la más extendida, y la que he utilizado en mi caso, es modificar las funciones de correo de Wordpress de forma que los envíos se realicen vía SMTP. Para esto existen varios plugins, pero recomiendo Cimy Swift SMTP, dada su facilidad de instalación y configuración. Podéis encontrar una guía paso a paso de cómo instalarlo y configurarlo correctamente en el siguiente artículo [Guía configuración Cimy Swift SMTP].

En cuanto a las funciones sociales destaco dos: por un lado la posibilidad de traducir al inglés algunas entradas y páginas del blog, y por otro los accesos directos para compartir una entrada del blog en los sitios sociales más populares, como por ejemplo del.icio.us y digg.com en inglés, o bitacoras.com y meneame.net en español, además de algunos agregadores de noticias sobre desarrollo como dzone.com o dotnetkicks.com.

En cuanto a la traducción de las noticias y páginas del blog he de decir que no serán traducciones automáticas, sino traducciones realizadas a mano, y no estarán disponibles para todos los artículos sino tan solo para los que considere interesante su traducción. La forma de saber si está disponible la traducción de una entrada determinada del blog es buscar bajo el título de la entrada el enlace a los idiomas alternativos. Si existe la traducción bastará con pulsar en la bandera correspondiente para ver la versión en inglés de la entrada. Sirva de ejemplo la siguiente imagen:

Enlace a la traducción de una entrada

Enlace a la traducción de una entrada

Por otro lado, los enlaces para compartir la noticia en webs sociales más populares aparecerán al final de cada artículo, justo antes de la lista de Entradas Relacionadas, y bastará con pulsar sobre el icono del servicio deseado para añadir directamente el artículo a dicho servicio. Adjunto una imagen de esta novedad:

Compartir artículo en sitios sociales

Compartir artículo en sitios sociales

Para quien pueda interesar, la traducción de las entradas la he implementado utilizando el plugin Polyglot, que aunque algo laborioso de instalar da muy buen resultado sin recargar nada la administración del blog, y para la adición de los enlaces a redes sociales tras cada entrada he instalado el plugin Sociable, efectivo y cómodo de utilizar.

Espero que todos estos cambios ayuden a mejorar un poco más el blog.

, , ,

This is a test of Polyglote plugin.

, , , , ,

Una cita no falta de razón:

“A día de hoy, la programación es una carrera entre los ingenieros de software tratando de construir mayores y mejores programas a prueba de idiotas, y el universo intentando producir mayores y mejores idiotas. Por el momento el universo va ganando”. Rich Cook.

Conclusión, tanto si estamos en un lado como en el otro, sigamos esforzándonos.

Como vimos en un artículo anterior, hace poco más de dos meses se publicó la versión definitiva de Moonlight 1.0, la implementación open source de la tecnología Silverlight de Microsoft.

En aquel momento ya se anunció que la primera beta de Moonlight 2.0 podría ver la luz en el mes de Mayo, y los chicos de Novell no nos mintieron ya que Miguel de Icaza acaba de anunciar en su blog la disponibilidad de la primera versión preliminar (preview) de Moonlight 2.0.

Las novedades son muchas y se pueden consultar más al detalle en los artículos dedicados al lanzamiento de Moonlight 2.0 en los blogs de Miguel de Icaza o Chris Toshok (líder del equipo de desarrollo de Moonlight), pero dentro de las novedades más interesantes están las siguientes:

  • Por fin tenemos la máquina virtual de Mono dentro del plugin de Moonlight para el navegador, lo que nos permitirá utilizar C# o cualquier lenguaje que pueda compilarse para esta máquina virtual (Ruby, Python, Boo…) para el desarrollo de aplicaciones sobre esta plataforma.
  • Se incluyen todos los controles Silverlight de Microsoft, gracias a que éstos son ahora open source. Esto nos asegura mayor compatibilidad y coherencia de estilos con las aplicaciones Silverlight 2.0.
  • Negotiated layout (siento no traducir esto, pero queda mejor en inglés). Ya nos podemos olvidar de establecer las posiciones y los tamaños de los controles de forma absoluta ya que a partir de ahora contaremos con contenedores que distribuirán convenientemente los controles en el espacio disponible, al estilo por ejemplo de los layouts de Swing (Java).
  • Soporte para DeepZoom.
  • Nuevas herramientas de desarrollo para construir .xaps compatibles con Silverlight 2.0.
  • Se incluyen incluso algunas de las novedades de Silverlight 3.0, como por ejemplo el soporte para aplicaciones fuera del navegador (out-of-browser applications), la inclusión del SaveFileDialog, o el soporte de la clase WritableBitmap.

No hay que olvidar que se trata de una versión preliminar, por lo que aún no está completa ni alineada completamente con Silverlight 2.0, pero hay que reconocer el trabajo enorme y la rapidez del equipo de desarrollo de Moonlight para disminuir cada día la ventaja que llevaba Silverlight con respecto a esta plataforma. Veamos como evoluciona el proyecto en los próximos meses.

, , ,

Sitios como DZone, agregadores de noticias donde cada día pueden encontrarse cientos de artículos técnicos sobre desarrollo y tecnología, demuestran que por algún motivo los artículos tipo lista o ranking venden bastante, o al menos atraen la atención de muchos lectores. Y me refiero a aquellos artículos cuyo título comienza con frases como “Los 10 lenguajes que más…”, “Los 5 motivos por los que…”, y similares. Esta mañana yo mismo os pasaba un enlace a un artículo donde se publicaba una lista de los 10 lenguajes de programación más extraños, y como éste se pueden encontrar cientos de todas las formas y colores, hoy día parece que la gente confecciona listas y rankings para todo.

Pero entre todos ellos, hoy he encontrado una lista que me ha hecho tirarme de los pelos. Atención al título: “Los 10 libros que podrían sustituir a una carrera de Ingeniería Informática” [enlace al artículo original]. Y la lista es la siguiente:

  • Godel, Escher, Bach. Douglas Hofstadter
  • The Art of Computer Programming. Donald Knuth
  • The Elements of Programming Style. Brian W. Kernighan y P. J. Plauger
  • Theory of Parsing, Translation and Compiling. Alfred V. Aho y Jeffrey D. Ullman
  • The Computer and the Brain. John von Neumann
  • A Programming Language. Kenneth E. Iverson
  • Writing Efficient Programs. Jon Louis Bentley
  • Computation: Finite and Infinite Machines. Marvin L. Minsky
  • Operating System Principles. Per Brinch Hansen
  • Artificial Intelligence. Elaine Rich

En mi humilde opinión, de esta lista sustituiría alguno que otro y añadiría algunos más, como por ejemplo:

  • Modern Operating Systems. Andrew S. Tanenbaum
  • Operating Systems: Design and Implementation. Andrew S. Tanenbaum
  • Compilers: Principles, Techniques, and Tools” (conocido tradicionalmente como el Dragon Book). Alfred V. Aho, Ravi Sethi y Jeffrey D. Ullman
  • Design Patterns: Elements of Reusable Object-Oriented Software. Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides, conocidos de forma histórica como GOF o Gang of Four).

De cualquier forma, y éste es el verdadero motivo impulsor de mi artículo, creo que todo aquel que haya obtenido una titulación universitaria debe tener claro que ni la mayor y mejor seleccionada lista de libros del mundo podría sustituir, ni de lejos, a todo lo conseguido junto a un título. Y no me refiero a los conocimientos púramente técnicos, sino a todo lo demás.

Un libro es un medio de comunicación unidireccional, y aunque obviamente puede aportar enormes cantidades de información, nunca podrá sustituir al diálogo, a la discusión de alternativas, a los diferentes puntos de vista de un grupo, a la aplicación práctica de conocimientos teóricos… aspectos éstos tan importantes para fomentar por ejemplo la innovación, algo vital cuando se aplica al campo concreto de la informática. En definitiva un título universitario no sólo es un papel, ni siquiera un conjunto de conocimientos, sino un conjunto de experiencias que no caben entre las páginas de papel de un libro.

En resumen, es una gran lista que cubre muchos pilares básicos de la informática y la recomiendo personalmente, pero no reduzcamos a una simple lista lo que muchos hemos tenido que sudar durante años.

A quien pueda interesar, en los comentarios del artículo original en inglés se proponen algunos libros más, os los paso para completar la lista:

  • Structure and Interpretation of Computer Programs. Harold Abelson y Gerald Jay Sussma
  • The Mythical Man-Month. Fred Brooks
  • Introduction to Algorithms. Cormen, Leiserson, Rivest y Stein
  • Artificial Intelligence: a Modern Approach. Russell and Norvig
  • Object-Oriented Software Construction. Bertrand y Meyers
  • Code Complete. Steve McConnell
  • Refactoring. Martin Fowler

Ideas para completar vuestra biblioteca personal no os van a faltar.

, , ,

A través del blog de Jorge Serrano me entero de un libro gratuito en pdf sobre ADO.NET Entity Framework, la nueva tecnología de acceso a datos que, junto a LINQ, quiere institucionalizar Microsoft como parte de sus servicios de datos dentro del .NET Framework.

ADO.NET Entity Framework es la propuesta de Microsoft dentro del campo de los ORM (object-relational mapping) y se incluyó como parte del .NET Framework 3.5 SP1. Aunque su uso no está todavía demasiado extendido la experiencia con otras tecnologías de este tipo (y más cuando vienen de la mano de Microsoft) nos dice que acabará convirtiéndose en poco tiempo en un marco de trabajo de referencia dentro del mundillo .NET. Por tanto, nunca está de más aprender un poco sobre su filosofía, funcionamiento y forma de trabajo.

El autor del libro es Zeeshan Hirani, y podemos descargarlo de forma gratuita accediendo a su blog o mediante los siguientes enlaces directos:

Espero que os sea de utilidad. Saludos.

, , , , ,

Un poco de humor para soportar el fin de mis merecidas vacaciones. Nadando entre millones de artículos pendientes de leer en mi Google Reader me encuentro una lista de los 10 lenguajes de programación más extraños jamás creados. Conocía ya algunos de ellos, pero otros me han llamado enormemente la atención tanto por su absurda sintáxis como por su dudosa utilidad práctica.

Entre los lenguajes mencionados se encuentran algunos como:

  • Ook!, que según su autor está especialmente diseñado para orangutanes y tan solo usa 3 palabras reservadas (Ook., Ook! y Ook?).
  • Whitespace, que viene a vengar la tremenda injusticia de los lenguajes actuales al ignorar los caracteres no visibles y basa toda su sintáxis en los espacios, tabuladores y retornos de carro.
  • LOLCODE, que en España equivaldría a algo así como el lenguaje de programación HOYGAN, escrito completamente en mayúsculas y en inglés macarrónico.
  • reMorse, que como puede deducirse fácilmente de su nombre basa toda su sintáxis en puntos y guiones.
  • False, cuya sintáxis es indescriptible, tan solo comparable con lo que aparece al editar un fichero ejecutable con el bloc de notas. Para muestra un ejemplo de un programa que imprime todos los números primos entre 0 y 100: “99 9[1-$][\$@$@$@$@\/*=[1-$[%\1-$@]?0=[\$.' ,\]?]?]#”.
  • Whenever, un lenguaje en el que la instrucciones no tienen por qué ejecutarse en el orden en que fueron escritas, sino en el orden que el intérprete del lenguaje decida. Absurdo? Esperpéntico? Inutil?

En fin, en la lista original se mencionan algunos lenguajes más igual de surrealistas, pero se han olvidado de uno de los más importantes, Brainfuck, para mí el rey de todos los lenguajes de programación esotéricos, con una sintáxis también basada en signos de puntuación de lo más variopinto.

¿Cuál de estos lenguajes elegiréis para vuestro próximo proyecto? ¿Alguien se atreve a proponerlos en su empresa?

, ,

Hace tiempo que soy usuario más o menos frecuente de Linux, más concretamente de Ubuntu, pero he de reconocer que rara vez he tenido físicamente instalado este sistema operativo en mis PCs. Linux nunca ha sido mi sistema operativo principal, de una forma o de otra sigo ligado al tan querido y tan odiado Windows XP por motivos que no vienen al caso, pero de cara al desarrollo siempre he tenido muy a mano Linux y algunas de las fantásticas herramientas que existen para este sistema operativo. Por todo esto mi primera opción para la instalación de Linux siempre ha sido utilizar una máquina virtual, originalmente sobre VMware Workstation y desde hace ya bastante tiempo sobre el fantástico VirtualBox de Sun (gratuito, más ligero, y que funciona igual de bien o incluso mejor si no necesitamos opciones demasiado avanzadas).

Con la reciente publicación de la nueva versión de Ubuntu 9.04 Jaunty Jackalope decidí abandonar un poco mis costumbres y probar Wubi, un instalador de Linux para Windows que permite la instalación y desinstalación de Ubuntu sobre Windows como si de otra aplicación cualquiera se tratase.

La primera vez que oi hablar de Wubi pensé que se trataría de algún tipo de máquina virtual específica para Ubuntu, algo similar a instalar Ubuntu sobre VirtualBox o VMware. Pero sin embargo estaba bastante equivocado, mediante Wubi no instalamos Ubuntu sobre ningún sistema virtual, sino que se realiza una instalación real del sistema operativo, con la diferencia de que esta instalación se realiza sobre un fichero y no sobre una partición física de disco. Esto evita obviamente todo el proceso de particionado previo a una instalación, algo que también viene bien si no se quiere modificar un sistema ya funcionando con Windows. De cualquier forma, tal como explican en su web, el rendimiento de Ubuntu instalado mediante Wubi tampoco es exactamente el mismo que si éste se hubiera instalado de forma normal en una partición real, aunque sí muy parecido, viéndose tan solo afectado levemente el tiempo de acceso a disco (nota: tras unos días de prueba puedo decir que el sistema funciona bastante fluido si el disco anfitrión no está muy fragmentado, por lo que la penalización en el rendimiento es casi inapreciable).

El proceso de instalación es sencillo, basta con colocar en la misma carpeta de Windows la aplicación Wubi.exe descargada de su web y la imagen ISO de la distribución de Ubuntu elegida (Ubuntu, Kubuntu, Xubuntu). Ejecutamos wubi.exe, indicamos la unidad de Windows donde instalar Ubuntu, el espacio de disco que se reservará para el sistema, el idioma y el usuario/password para acceder. Indicar también que durante la instalación Wubi añade una nueva entrada al gestor de arranque de Windows de forma que durante el arranque del PC se podrá seleccionar el sistema operativo a utilizar.

Recomiendo por tanto este sistema de instalación a todos los que se encuentren en alguna de estas situaciones:

  • Usuarios de Windows que quieren probar Ubuntu sin complicaciones ni riesgos de formateos, particionados… (para este caso también puede ser interesante la opción de ejecutar Ubuntu desde el Live CD).
  • Usuarios habituales de Windows y Linux que pueden sacrificar un mínimo de rendimiento a favor de una instalación más rápida y sencilla de Ubuntu.

En mi caso no podré prescindir totalmente de soluciones de virtualización como la que me proporciona VirtualBox, ya que en muchas ocasiones me es necesario el acceso simultaneo a los dos sistemas operativos (algo que no se consigue con Wubi), pero sí es cierto que ganaré rendimiento cuando use exclusivamente Ubuntu ya que el desempeño del sistema corriendo sobre una máquina virtual sí es notáblemente más bajo.

En definitiva, si no conocíais todavía Wubi, es un buen momento para probarlo y descubrir las bondades de sistemas Linux como Ubuntu.

, , , ,