Archive

Posts Tagged ‘IT’

Compilar Assimp 2.0 en VC++ 2010 Express

July 19, 2011 1 comment

Assimp (a.k.a. Open Asset Import Library) son unas librerías multiplataforma y de código abierto para importar modelos 3D de diferentes formatos (MD2, MD5, COLLADA, etc.). Compilar estas librerías usando VC++ 2010 Express puede ser muy complicado si no se siguen unos pasos concretos.

Satisfacer las dependencias: Boost y DirectX SDK

La compilación de Assimp depende de las librerías Boost. Además, el visor de modelos Assimp View necesita las librerías de DirectX d3d9.lib y d3dx9.lib.

Boost

Boost se puede descargar desde su página principal de descargas (aquí). Simplemente habrá que descomprimir y desempaquetar la versión más reciente (a día de hoy la versión 1.47.0) en un directorio conocido. En nuestro caso utilizaremos

C:\dev\boost\1.47.0

y nos refereriremos a esa ruta en el resto de este tutorial como $(BOOST_PATH).

DirectX SDK

DirectX son unas APIs (application programming interface) de Microsoft especialmente preparadas para crear juegos. El visor de Assimp View está construido utilizando dichas librerías, y por tanto, tenemos que tenerlas instaladas en el ordendor para poder compilarlo.

Para ello simplemente hay que descargarse el SDK (software development kit) más moderno de su página de descargas (aquí) e instalarlo haciendo doble clic. En nuestro caso es la versión de Junio 2010 y la instalamos en la ruta

C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)

que a partir de ahora llamaremos $(DIRECTX_PATH).

Descargar del código fuente

El código fuente de Assimp se puede descargar de su página principal de descargas (aquí). A día de hoy, la que nos interesa es de assimp 2.0 (de noviembre de 2010), el fichero “Any platform: ZIP archive, full source code” (no pongo enlace porque no puedo garantizar su persistencia).

Descomprimir y desempaquetar el código fuente

Hay que descomprimir y desempaquetar el fichero descargado en un directorio conocido. En este caso utilizaremos

C:\dev\assimp\2.0.863

A partir de ahora nos refereriremos a esta ruta como $(ASSIMP_PATH). Si utilizas una ruta diferente, asegúrate de cambiar todas las demás rutas que dependan de ésta. Como comprobación adicional deberías tener los archivos INSTALL, LICENSE y README en el directorio $(ASSIMP_PATH).

Modificar los proyectos de VC9

De momento Assimp soporta ser compilado por VC9 a través de una solución (.sln) y unos proyectos (.vcproj) incluidos en el directorio $(ASSIMP_PATH)\workspaces\vc9. La forma de compilarlo con VC10 es convertir la solución para VC9.

Sin embargo, cuando se hace esto directamente aparece un problema con la arquitectura x64, concretamente el mensaje de error “Failed to upgrade platform ‘x64′. Please make sure you have it installed under ‘%vctargetspath%\platforms\x64′“. Probablemente esto se deba a que la versión de MVC++ 2010 Express, que es gratuita, no permite compilar para la arquitectura x64.

Para solucionarlo hay que modifcar a mano, con un editor externo (por ejemplo el excelente Notepad++), el archivo de solución y los de proyectos.

Este paso es muy tedioso si no sabes automatizarlo (yo no sé). Así que os dejo los ficheros de la versión VC9 sin los bloques de “x64″ para que os podáis saltar este paso. Simplemente reeemplaza los archivos de tu ordenador con los descargados.

En caso de que seáis valientes, seguid los siguientes pasos:

Archivo de solución assimp.sln

Hay que buscar la palabra “x64″ y eliminar todas las líneas donde aparezcan en el archivo assimp.sln. En total hay 144 ocurrencias. Las hay de dos tipos:

debug|x64 = debug|x64
{B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.debug|x64.ActiveCfg = debug|x64

Con eso habremos terminado con este fichero.

Archivos de proyectos

De forma similar hay que encontrar los bloques que contengan la palabra “x64″ de los archivos de proyecto (assimp.vcproj, assimp_cmd.vcproj, assimp_view.vcproj y UnitTest.vcproj). Hay un total de 171 ocurrencias. Los hay de varios tipos. En el principio siempre hay un bloque con la forma:

<Platform
 Name="x64"
 />

Otros más largos son de la forma:

<Configuration
    Name="debug|x64"
    OutputDirectory="./../../bin/$(ProjectName)_$(ConfigurationName)_$(PlatformName)"
    IntermediateDirectory="./../../obj/$(ProjectName)_$(ConfigurationName)_$(PlatformName)"
    ConfigurationType="1"
    InheritedPropertySheets=".\shared\UnitTest.vsprops"
    CharacterSet="1"
    >
    <Tool
        Name="VCPreBuildEventTool"
    />
    // ETC ...
</Configuration>

Por último hay otro tipo:

<FileConfiguration
    Name="debug|x64"
    >
    <Tool
        Name="VCCLCompilerTool"
        UsePrecompiledHeader="0"
    />
</FileConfiguration>

Una vez quitados todos los bloques que incluyan la palabra “x64″ ya estamos listos para importar el proyecto a VC10.

Convertir el proyecto a VC10

Ahora hay que ejecutar VC++ 2010. Al pinchar en el menú “Archivo”->”Abrir”->”Proyecto o solución”, aparecerá un diálogo donde hay que seleccionar la solución (.sln) que se encuentra en $(ASSIMP_PATH)\workspaces\vc9\ (la que acabamos de modificar). Se abrirá un “Asistente para conversión de Visual Studio”. Pinchando en siguiente, siguiente y finalizar, abriremos una solución con cuatro proyectos: assimp, assimpcmd, assimpview y unit.

En caso de que este paso no te funcione por alguna razón, dejo colgados los ficheros de la solución y los proyectos para VC10.

Modificar el código (pequeño parche)

Por alguna razón, VC10 incluye el archivo de cabecera stdint.h desde una cabecera estándar. Este archivo es imcompatible con pstdint.h que se proporciona con Assimp. Por lo tanto hay que asegurarse de que Assimp no incluye pstdint.h o saltarán las alarmas.

Leyendo los foros de Assimp (aquí) se propuso el siguiente parche: en la línea 59 del fichero AssimpPCH.h cambiar

#ifdef _MSC_VER

por

#if defined(_MSC_VER) && (_MSC_VER < 1600)

Con eso ya podemos compilar Assimp con la seguridad de que pstdint.h no se incluirá cuando usemos VC10.

Configurar los proyectos

El último paso es configurar los proyectos para que encuentren las rutas de las dependencias (Boost y DirectX) y para solucionar un error con el fichero de salida.

Para incluir las rutas adecuadas hay que abrir las propiedades de cada uno de los cuatro proyectos. Hay que elegir en la parte superior izquierda “Todas las conf.” y después, en el árbol de configuraciones, hay que pinchar en el elemento “Propiedades de configuración”->”Directorios de VC++”. Ahí hay que cambiar las propiades “Directorios de archivos de inclusión” y “Directorio de archivos de bibliotecas” para que incluyan las cabeceras y librerías de Boost y DirectX.

Los directorios de inclusión en nuestro caso son:

$(BOOST_PATH)
$(DIRECTX_PATH)\Include

Mientras que los de librerías son:

$(BOOST_PATH)\lib
$(DIRECTX_PATH)\Lib

Recuerda cambiar cada variable $(*_PATH) por el directorio que corresponda en cada caso.

Esto es suficiente para que encuentre todas las dependencias de Boost y DirectX. Sin embargo, el nombre de los proyectos no coincide con el nombre que el enlazador espera a la salida, por lo que falla al generar las librerías compartidas (los .DLL) y las estáticas (las .LIB).

Para solucionar este problema hay que abrir las propiedades del proyecto assimp y para la configuración “debug-dll” (parte superior izquierda) hay que pinchar en la configuración “Propiedades de configuración”->”General”. La entrada “Nombre de destino” debe cambiarse a “Assimp32d” (sin las comillas y ojo con la ‘d’ final). La misma entrada para la configuración “release-dll” debe cambiarse por “Assimp32″ (ojo con la ‘d’ del final).

Y con eso ya está listo todo para compilarse. Las librerías de “debug-dll”, “release-dll”, “debug-st” y “release-st” aparecerán el el directorio $(ASSIMP_PATH)\lib.

Como prueba de que todo ha salido bien puedes intentar compilar Assimp View y cargar un modelo. Por ejemplo, puedes cargar $(ASSIMP_PATH)\test\models\Collada\duck.dae y obtener algo parecido a esto :-)

Categories: Tutorials Tags: , ,

Ejecutar aplicaciones a través de SSH

March 8, 2011 Leave a comment

ssh!¿Te ha pasado alguna vez el tener que ejecutar una aplicación que se encuentra en el ordenador del trabajo?

Con un poco de suerte, te basta con abrir una terminal, hacer una conexión SSH, ejecutar la aplicación y esperar el resultado. Sin embargo, en otras ocasiones necesitas que el programa se siga ejecutando cuando te desconectes del ordenador, o, peor aún, que quieras manipular la interfaz gráfica de la aplicación.

Como estoy harto de buscar en Google cómo hacer cada cosa, me voy a hacer una pequeña receta con los tres casos, a ver si te sirve a ti también.

Ejecutar aplicación en consola

En este caso lo que se quiere hacer es:

  1. Conectarse al ordenador remoto vía SSH.
  2. Ejecutar una aplicación.
  3. Esperar que finalice la aplicación.
  4. Desconectarse del ordenador remoto.

Esto es bastante sencillo y buscando por Internet (y leyendo las páginas del manual del comando “ssh”) es fácil encontrar la solución.

Para conectarte al ordenador remoto basta con hacer una llamada del estilo:

localhost$ ssh usuario@servidor.es

donde ‘usuario’ es el nombre de usuario que quieres utilizar en el ordenador identificado por su nombre de dominio ‘servidor.es’. Después de introducir tu password cuando te lo pida, te mostrará un terminal en el ordenador remoto. Ahí podrás ejecutar la aplicación que desees:

servidor.es$ uname -srv
Linux 2.6.37-ARCH #1 SMP PREEMPT Fri Feb 25 07:53:43 CET 2011

Una vez terminada la ejecución del programa podemos introducir ‘exit’ o pulsar control+D para salir.

Ejecutar una aplicación persistente en consola

Este caso es muy parecido al anterior. Sólo se diferencia en que ahora no existe el paso 3., es decir, queremos que la aplicación se siga ejecutando después de habernos desconectado del ordenador remoto. Para ello utilizamos el comando POSIX “nohup” en el ordenador remoto.

servidor.es$ nohup make &
servidor.es$ ^D

Eso nos garantiza que la aplicación se seguirá ejecutando aún cuando le llegue la señal hangup (HUP), que indica que el usuario que ejecutó la orden se ha desconectado de la máquina. Este comando es especialmente útil para compartir ficheros por redes P2P (con un programa torrent por consola) o para hacer grandes actualizaciones remotamente.

Ejecutar una aplicación X

El último caso es cuando queremos ejecutar un comando en el ordenador remoto que cree una ventana en nuestro ordenador local. Por tanto, tendremos que iniciar una sesión X en el ordenador local, lo que en la mayoría de casos significa que debes haber iniciado sesión en Gnome, KDE, PekWM o el entorno de escritorio que utilices.

Los pasos a seguir son muy similares. Primero habrá que conectarse por SSH como en el primer caso, pero añadiendo la opción ‘-X’:

localhost$ ssh -X usuario@servidor.es

El resultado será el mismo, tendremos una terminal remota en el servidor ‘servidor.es’. Todo igual, salvo que al ejecutar una aplicación gráfica todas las llamadas al servidor X se hacen a la máquina local (donde estás tú) no a la máquina remota (donde ejecutas la aplicación).

Por ejemplo, si ejecuto la aplicación ‘kcalc’ (la calculadora del escritorio KDE) en mi máquina wigner (ordenador del trabajo):

[alejandro@wigner ~]$ kcalc

en maxwell (mi ordenador personal) aparece la siguiente ventanita:

Kcalc @ wignerLas tres recetas las he obtenido de diferentes sitios en Internet que ya no recuerdo. El último caso lo aprendí aquí, en un tutorial de Van Emery.

Categories: Tutorials Tags: , , , ,

Ecuaciones en tus presentaciones

November 14, 2010 Leave a comment

Foto tomada por tkamenick.

A veces es imprescindible incorporar expresiones matemáticas en tus presentaciones hechas con Powerpoint, Keynote, OpenOffice Impress o Google Presentations. Pero no queda claro qué programa usar para hacerlo.

Por un lado, el editor de ecuaciones de MathType es muy útil y es una solución a tener en cuenta cuando trabajemos con Powerpoint. Sin embargo, las ecuaciones generadas con él no pueden ser exportadas a otros programas (al menos que yo sepa).

Por otro lado, para Mac existe un software llamado LaTeXiT que usé durante mucho tiempo y que funciona muy bien. Lo que hace (por detrás de la interfaz gráfica) es básicamente dos cosas: 1) crea un archivo TeX mínimo a partir del cual se imprime la ecuación en DVI y 2) exporta este DVI a un formato que sea soportado por el programa de presentaciones (en mi caso me conformo con PNG). Si usas Mac lo tienes hecho. Si usas GNU/Linux no (de nuevo que yo sepa). Así que lo que propongo es un script que hace a manubrio lo que hace LaTeXiT de forma bonita.

Lo primero es tener una plantilla de LaTeX que sea mínima. Como sólo vamos a crear ecuaciones, incluiremos en el los paquete necesarios para algunos símbolos (de la AMS).

\documentclass{article}
\usepackage{amsmath,amsthm,amssymb}
\pagestyle{empty}

\begin{document}
\begin{equation*}
	% Aquí va la ecuación que queremos incorporar a la presentación
\end{equation*}
\end{document}

Por otro lado, tendremos que tener el siguiente script que convierte a cada ecuación en una imagen PNG:

#!/bin/bash

ELATEX=/usr/bin/latex
EDVIPS=/usr/bin/dvips
ECONVERT=/usr/bin/convert

RES=600

$ELATEX $1.tex
$EDVIPS $1 -o
$ECONVERT -units PixelsPerInch -density $RES -trim -transparent \#000080 \
          -type PaletteMatte +repage $1.ps $1.png

rm $1.dvi $1.ps

Del script, lo único que hay que tocar son las rutas a los ejecutables latex, dvips y convert (latex y dvips suelen venir en tu distribución de LaTeX preferida, y convert es una utilidad de ImageMagick) y la resolución de la imagen generada, RES. Para ejecutarlo hay que guardarlo (yo elegí el nombre latex2png) y para usarlo sobre un archivo llamado prueba.tex hay que usar `latex2png prueba` sin las comillas simples.

Con el anterior script la forma de trabajar que a mí me funciona es un editor de texto abierto para cambiar la fórmula, una consola para ejecutar el script y un navegador de archivos (dolphin de KDE) para arrastrar el PNG a la presentación. En caso de que uses Emacs puedes ahorrarte la consola si defines un macro para ejecutar el script sobre el archivo que estás editando. Y si eres un master-programming, ¿por qué no te curras una interfaz gráfica para el anterior script al estilo LaTeXiT?

Para muestra, un botón. Este es el resultado de la ecuación:

\mathfrak{F}^\alpha\left[f\right]\left(\mathbf{p}\right)
= \iint_{\mathbb{R}^2}\mathrm{d}\mathbf{r}\ f\left(\mathbf{r}\right)K^\alpha
\left(\mathbf{r},\mathbf{p}\right)

Categories: Tutorials Tags: , , ,

Final Fantasy XIV

September 21, 2010 Leave a comment

Este último mes he tenido la suerte de poder probar el nuevo juego de Square-Enix de la saga Final Fantasy. Se trata del Final Fantasy XIV – Online. El número parece de broma, y lo peor es que llevan bastantes más de catorce títulos de este estilo. ¡Han superado hasta a En Busca del Valle Encantado! Pero esta entrada no trata de su número sino de su calidad.

Durante la semana y media que he jugado no he visto demasiadas cosas que considere novedosas. Si lo comparamos con el Final Fantasy XI – Online (el otro de la saga que es online) tiene bastantes mejoras. Pero si lo comparas con un buen MMORPG se queda corto. Yo creo que incluso el World of Warcraft le supera en cuanto a jugabilidad. Sólo por enunciar algunas de las cosas que no gustan mencionaré que las misiones son cortas y para nada gratificantes (de momento han sido del tipo ve-allí-y-mata y ve-allá-y-fabrica), los precios estaban completamente desajustados (10k giles por un tronco, que es lo básico para ser carpintero, es mucho dinero), las líneas de historia no son continuas (los últimos dos días los pasé matando bichos para subir de nivel para poder hacer las siguientes misiones ¡y acababa de empezar a jugar!), necesitas un ordenador muy serio para hacerlo rodar fluidamente, no existe (de momento) una forma sencilla y nativa de crear y administrar hermandades (guilds), y un largo etcétera.

Tampoco sería justo decir que todo son cosas malas (aunque es casi estrictamente cierto) porque algunos detalles son interesantes. El hecho de que para cambiar de clase o de artesano sólo necesites comprar las armas o herramientas necesarias está bien. Que puedas reasignar parcialmente los puntos de habilidad que consigues al subir de nivel tampoco es mala idea.

En fin, me ha dejado bastante mal sabor de boca, aunque habrá que esperar a la versión definitiva (que no me voy a comprar) para poder valorarlo de forma completa. Desde el FFX (que tampoco era tan pasada) no he visto otro Final Fantasy de calidad… ¿habremos perdido a Square o es que nunca existió? Yo lo tengo claro, antes que jugar a este Final Fantasy me reabro la cuenta del Everquest II.

Categories: General Tags: , , ,

Error típico al cambiar la variable PS1

September 20, 2010 Leave a comment

Después de un rato buscando por Internet he conseguido arreglar este error bobo que ocurre al cambiar el prompt (¿cómo lo traduces?) de tu terminal de GNU/Linux.

Os pongo en situación. En mi archivo ~/.bashrc exporto la variable PS1 para modificar la “moñiga” que aparece en la línea de comandos y que indica dónde puedo empezar a introducir órdenes. Hasta ahí en muchos tutoriales te explican de forma muy clara lo que hay que hacer y qué diferentes opciones tienes (ejemplo). Lo que se me pasó (por leer en diagonal) es que los caracteres de escape (que no se verán en la terminal) también cuentan en ciertas ocasiones. Por ejemplo, utilizó el PS1:

export PS1='\e[32;1m\w\e[0m$ '

que básicamente te indica el directorio actual en verde negrita:

~/Documentos$ 

cuando vuelvo para atrás en el historial de bash y escribo un comando que supera los 17 caracteres de la variable PS1, el prompt se va al carajo. Si fuera a ejecutar el comando 'apt-get install power-to-me' y luego el comando 'nano ~/.me' en la terminal vería:

~$ apt-get install power-to-me
~$ apt-get instalnano ~/.me

Fíjate que los 17 primeros caracteres pertenecen al comando anterior y el resto es el comando de nano.

Esto ocurre porque para calcular la distancia del prompt cuenta todos los caracteres de la variable PS1, incluidos los caracteres de escape de colores. La solución estaba todo el tiempo delante de mis narices, porque en todos los tutoriales sobre la modificación del PS1 te indican cómo hacerlo. Tan simple como utilizar las secuencias de escape especiales '\[' y '\]' (que indican que no hay que contar los caracteres que encierran) alrededor de los caracteres de cambio de color. Así, el prompt quedaría:

export PS1='\[\e[32;1m\]\w\[\e[0m\]$ '

y tan amigos todos.

Categories: Tutorials Tags: , , , ,

Máquina virtual usando KVM en Debian «Squeeze» para 64 bits

September 17, 2010 Leave a comment

Logotipo de KVM

Desde hace tiempo utilizo software de virtualización de máquinas para acceder a esos programas que son necesarios y en GNU/Linux no existe una alternativa de suficiente calidad. Básicamente lo uso para dos cosas: 1) Adobe Illustrator porque las alternativas libres (Inkscape y compañía) no funcionan tan bien y para la publicación en revistas es necesario que las figuras sean de la máxima calidad, y 2) Microsoft Office para cuando me mandad algún archivo .DOCX y similares. Para el resto de aplicaciones me basta y me sobra con GNU/Linux.

Hasta ahora he utilizado el VirtualBox de Oracle para la virtualización. Sin embargo, recientemente he probado KVM (Kernel-based Virtual Machine) que lo ponían como bueno y me ha gustado. Para completar la lista tengo que decir que también existe el software de VMware que es gratis pero no libre, y por tanto no me convence. Tanto VirtualBox como KVM son de código abierto. Del que voy a hablar aquí es de KVM, que es el que uso actualmente. En concreto explicaré los pasos seguidos para la instalación de kvm en Debian «Squeeze» en arquitectura de 64 bits y la creación de un sistema virtual con Windows 7 y Abode Creative Suite 4.

Según lo entiendo yo (que no necesariamente es cierto) KVM carga unos módulos del kernel de Linux que sirven para compartir los recursos de hardware entre la máquina virtual (la que crearemos ahora) y el sistema huésped (el sistema operativo donde se ejecuta esto). Cuando ejecutas KVM lo que hace es cargar una BIOS básica y emular una máquina (ordenador) que realmente no existe. Es realmente como The Matrix: el mundo real es tu ordenador y ahí cargas un programa como Matrix que permite instalar otro sistema operativo como si Matrix fuera el mundo real. El sistema operativo virtual no es consciente de que realmente es un subprograma en otro sistema operativo, para él sólo existe Matrix :-)

La instalación de KVM sigue el procedimiento típico de cualquier distribución con administrador de paquetes. En mi caso simplemente ejecuté el siguiente comando como superusuario:

# apt-get install kvm

Esto funciona en Debian testing (squeeze) y probablemente en *Ubuntu 10.04. Si utilizas Fedora tendrás que usar yum y si usas openSuse zypper. Esto te instala todos los paquetes necesarios para usar KVM, incluyendo los módulos del kernel. Nótese que la explicación de esta entrada es para la versión 0.12.5 de kvm. Otras versiones pueden tener diferente sintaxis o características.

Una vez termina la instalación, lo primero es crear el disco duro de la máquina virtual. Para ello podemos utilizar las herramientas que proporciona KVM, en concreto, el comando:

$ kvm-img create -f qcow2 MyVirtualHDD.qcow 30G

Éste crea en el directorio actual una imagen en formato qcow2 con tamaño de 30 gygabytes: lo que será el disco duro virtual. Podemos cambiar el tamaño modificando el último parámetro del comando anterior. Para más información lee el manual ejecutando `info kvm-img`.

Con eso ya tenemos todo lo necesario para que arranque nuestra máquina virtual. Con el siguiente comando se arranca usando un gygabyte de memoria RAM y el disco duro recién creado:

$ kvm -m 1G -hda MyVirtualHDD.qcow

Si lo ejecutamos lo que obtenemos es un bonito error del tipo: No Bootable Devices Found.

Fallo de arranque en KVM

Esto es porque nuestro ordenador no tiene sistema operativo (en concreto lo que no tiene es medio de arranque). Por lo tanto, el siguiente paso es introducir un dvd virtual para la instalación del sistema operativo.

Existen dos formas de hacerlo: 1) o bien tenemos el dvd físico del sistema operativo o 2) tenemos una imagen .iso del mismo. En ambos casos es lo mismo y lo único que cambia es un parámetro. En mi caso tengo el dvd de instalación de Windows 7 64 bits. Identificando el dispositivo del lector de dvd, éste se encuentra en /dev/dvd. En otros casos puede variar. Ahora, el comando de ejecución incluye un parámetro para que cargué el dvd en el arranque:

$ kvm -m 1G -hda MyVirtualHDD.qcow -cdrom /dev/dvd -boot d

El parámetro ‘-cdrom’ indica dónde está el lector de dvd y ‘-boot’ indica que debe arrancar desde dicho lector. Si tenemos una imagen .iso podemos usarla como imagen del dvd cambiando ‘/dev/dvd’ por ‘/ruta/dvd.iso’.

Si ejecutamos el anterior comando con el dvd de Windows 7 en la unidad, se iniciará el instalador en la máquina virtual. La instalación es exactamente igual que como sería en tu ordenador real. Al final de la misma tendremos Windows 7 instalado en el disco duro virtual, por lo que el arranque por dvd ya no es necesario. Iniciar tu sistema virtual recién instalado es tan sencillo como ejecutar:

$ kvm -m 1G -hda MyVirtualHDD.qcow -cdrom /dev/dvd -boot c

Windows 7 recién instalado en KVM

Ahora es el turno de instalar el Adobe Create Suite 4, que viene en 3 dvds. La pregunta es, ¿cómo lo instalo a partir de tres dvds si sólo puedo especificar un dvd cada vez que arranca el sistema virtual? Afortunadamente KVM tiene depende en algunos aspectos de qemu, y qemu tiene un “monitor” del sistema (una sala de control en la analogía con Matrix) donde podemos cambiar algunas propiedades de la máquina virtual de forma dinámica. En concreto tiene una opción para expulsar un dispositivo de bloques (dvd) y cambiarlo por otro (enlace).

Para entrar en el modo monitor hay que pulsar la combinación de teclas control+alt+2. Eso nos llevará a una consola de comandos. Para obtener información de los dispositivos de bloque que hay en la máquina virtual tenemos que ejecutar:

(qemu-monitor) info blocks

Esto producirá una salida parecida a la siguiente:

kvm-monitor: salida de info blocksAhí podemos ver que el identificador del dvd es ‘ide1-cd0′. Sobre él podremos ahora hacer dos operaciones básicas: expulsar su contenido y cambiar la ruta a su imagen. La primera hace en Matrix el equivalente a extraer el dvd de la unidad lectora. La segunda es el equivalente a cambiar el dvd por otro. Así, los pasos a seguir para cambiar el dvd en la máquina virtual utilizando el lector de dvd (/dev/dvd) de la máquina huésped son los siguientes:

  1. Extrae en Windows el medio: botón derecho en la unidad de dvd y pulsa expulsar.
  2. Ejecutar un `info blocks` en el kvm monitor para comprobar si la unidad ha sido extraída.
  3. (opcional) Si la unidad no ha sido extraída ejecutar:
  4. (qemu) eject ide1-cd0
  5. Extraer el dvd del lector físico y cambiarlo por el otro que queramos.
  6. Recargar el medio virtual ejecutando:
  7. (qemu) change ide1-cd0 /dev/dvd

Siguiendo esos pasos es inmediato instalar el Adobe CS4 y cualquier otro software que necesite ser instalado a partir de varios dvds.

Instalación del Adobe CS4 (disco 2 de 3)

Y ya está, el sistema virtual completamente instalado y listo para usarse. Sólo para recordar, el comando para ejecutarlo es:

kvm -m 1G -hda MyVirtualHDD.qcow -cdrom /dev/dvd -boot c

Por último he de reconocer que todo esta información viene de Internet en general y en concreto de estas fuentes:

  • La página oficial de KVM (enlace).
  • La documentación oficial de qemu (enlace).
  • El wiki de Debian.org (enlace).
  • Los maravillosos tutoriales de Sean Kenefick (tutorial 1, tutorial 2).

Sugerencias de Facebook

August 5, 2010 Leave a comment

Me encanta cuando Facebook te sugiere páginas de cosas que te pueden gustar basándose en las páginas que ya sabe que te gustan:

Sugerencias de Facebook

Categories: General Tags: , ,

¿Campañas publicitarias agresivas?

November 23, 2009 Leave a comment

Leo vía Alt1040 sobre un juego para Wii que simula las acciones realizadas por los feligreses en misa [alt1040.com]. Es una provocación clara cuya finalidad no es burlarse de la Iglesia Católica a través de la ironía, si no que pretende vender un juego: el Dante’s Inferno [dantesinferno.com].

Si uno va a la página oficial del Mass: We Pray [masswepray.com] tiene todos los detalles del juego-burla, ilustrado por el mismo vídeo que en la página de Alt1040. Pero además, si se pincha en los enlaces de read more se accede a una segunda parte de la página donde explican la broma: celebrar misa en suelo no sagrado y sin un sacerdote dirigiéndola es una herejía, y muestran un nuevo trailer del juego de verdad.

Me entero también a través de mi hermano que no sólo han sacado esta versión de la propaganda del juego, el de verdad, si no que antes han utilizado otras tácticas. Han regalado 200 US$ para ilustrar la avaricia [destructoid.com] (por lo visto el cuarto círculo de sufrimiento del Infierno descrito por Dante en su Divina Comedia [wikipedia.org] estaba lleno de los pecadores de avaricia). Otra cosa que daban eran cajas con un rickroll [wikipedia.org] en su interior que solo se apagaba destruyéndolo con un martillo [escapistmagazine.com] (que también te daban) para ilustrar el quinto círculo del Infierno: la ira y la pereza.

Me podrá gustar más o menos el juego que anuncian, y quizás los medios no son los más discretos, pero como diría Jaime, “me quito el sombrero”, porque han sido capaces de atraer la atención de forma muy efectiva.

Categories: General Tags: , , ,

¡Google Wave!

October 25, 2009 5 comments

El viernes pasado estaba tomando una copa con un amigo, discutiendo sobre Google Wave (del que ya hemos hablado antes [acamara.me] hemos hablado antes, pero esa página ya no existe D:)  y lo interesante que sería tener una cuenta. Mi amigo tenía contactos que quizás podrían conseguirme una cuenta en un futuro más o menos cercano, pero la cosa se quedó ahí, en stand by.

¡Cuál fue mi sorpresa a la mañana siguiente cuando me encontré una invitación para Google Wave en la bandeja de entrada! Fecha de recepción: 24 octubre de 2009 1:37.

Lo primero que hice fue mandar un correo a este amigo y preguntarle si tenía algo que ver, aunque era complicado, ya que la conversación la tuvimos sobre las dos de la mañana… No, no tuvo nada que ver. ¿Qué probabilidad hay de que ocurra algo así? Yo no tenía ni siquiera claro que existiera la posibilidad…

El caso es que ahora mismo estoy probándolo y es más aburrido de lo que pensaba. Resulta que los waves (como se llaman los “correos” que puedes mandar con Google Wave) sólo se pueden mandar entre usuarios de este servicio, no vale mandárselos a gente que use Gmail. Y claro, mi lista de contactos está vacía.

No obstante la cosa mejora cuando tienes a alguien a quien mandarle algo. Por lo que he visto mandándome olas a mí mismo (alguien me llamo triste por esto), puedes hacer encuestas del tipo Sí/No/No sé en los correos y así facilitar el proceso democrático de opinar sobre planes de amigos/decisiones académicas, o lo que sea. También tiene otro gadget (así es como llaman a estas cosas extras de los correos ordinarios) para añadir mapas interactivos que se pueden modificar y tal. Sin duda es muy útil para quedar con la gente.

Mientras la gente no empiece a entrar en este servicio no creo que se vea hasta dónde puede llegar, pero bueno, tiempo al tiempo. Para aumentar el número de estos usuarios estoy dispuesto a invitar a las dos primeras personas que escriban un comentario pidiéndolas :)

Categories: General Tags: ,

Black Screen of Death

October 21, 2009 1 comment

Yuhuuu…

Hoy me ha llegado una nueva pantalla para mi Macbook Pro. Es un LG de 22″ y me gusta. Pero ha conseguido enfadar a Apple por no usar una de sus pantallas homologadas. Resulta que si cierras la tapa del Mac, este se pone a dormir. Para despertarlo puedes tocar una tecla del teclado USB y ya puedes usar la pantalla externa con la otra cerrada. El problema de esto parece ser que se calienta demasiado y las cosas empiezan a fundirse por su interior. Cuando apagué el ordenador ya no se volvió a encender.

Más correcto sería decir que sí que se enciende, pero ni la pantalla integrada del portátil, ni la pantalla externa muestran nada. Es como si la integrada estuviera apagada y como si no le llegara información a la externa. Llevo toda la tarde buscando información por los foros de Mac y de lo poco que me he enterado es que hay un término para este síntoma: se llama Black Screen of Death, imagino que por analogía con la Blue Screen of Death [google.com] de los sistemas operativos de Microsoft.

Nada, mañana tendré que ir al K-Tuin de la Calle Orense para ver si me dicen algo. Imagino que me dirán que el chip de la tarjeta gráfica se ha fundido, que es lo que parece que es más habitual [apple.com].

Por si a alguien le pasa algo parecido y no está seguro dejo un par de detalles que quizás sirvan para diferenciar este problema de otros similares.

  1. La manzana de detrás de la tapa del portátil no se enciende pase lo que pase.
  2. La luz del frontal se enciende mucho cuando cierro la tapa, mientras que se apaga poco a poco cuando la abro. En ningún momento se pone a dormir. Esto es como si notara que la luz ambiental disminuye cuando cierro la tapa (lógico, pues los sensores están cerca del teclado), pero no quiere meterse a dormir el maldito.
  3. Puedo hacer vida normal con él (salvo ver lo que hay en la pantalla, claro). Esto incluye subir y bajar el volumen, encender y apagar las luces de detrás de las teclas, apagar y encender el ordenador, ponerlo a dormir pulsando la tecla de apagar y luego la tecla ‘s’, etc. Lo más interesante es que puedo entrar a través de SSH y trabajar remotamente (de hecho eso lo utilicé para hacer la copia de seguridad de mis datos).

Por supuesto no se arregla borrando la NVRAM [apple.com] ni restableciendo a sus valores inciales la SMC [apple.com]. Tampoco funcionó desconectar el portátil de la corriente y quitarle la batería en caliente (no recuerdo dónde leí esto), ni entrar remotamente y borrar los archivos

/private/var/vm/sleepimage
/System/Library/Extensions.mkext

tal y como indican aquí [ariejan.net].

Total, me rindo, mañana iremos a ver qué pasa. Dejo aquí unos enlaces interesantes sobre el tema a modo de resumen.

[1]: http://ariejan.net/2009/04/05/macbook-pro-black-screen-of-death-or-is-it-just-faking/
[2]: http://forums.whirlpool.net.au/forum-replies-archive.cfm/1285795.html
[3]: http://www.pjentrepreneur.com/2009/01/21/update-mac-book-pro-blank-screen-problem/
[4]: http://discussions.apple.com/thread.jspa?threadID=1478474&start=0&tstart=0
[5]: http://discussions.apple.com/thread.jspa?threadID=1727530&start=0&tstart=0
Categories: General Tags: , , ,
Follow

Get every new post delivered to your Inbox.