miércoles, 17 de agosto de 2011

GLUT en Visual Studio


Estoy trabajando en un proyecto en C++ con OpenGL bajo Linux. Por razones ajenas a mi voluntad me he visto obligado a trabajar últimamente en Windows, en el cual uso Visual Studio para codificar/compilar mis programas en C, C++, C#, etc.

Poner a correr un proyecto con GLUT en Windows, no es muy complicado, sin embargo, quita tiempo, así que dejaré aquí la receta para no perder tiempo la próxima vez. La mayor parte de la información la saqué de esta web. Personalmente los pasos que describo a continuación los he probado tanto en Visual Studio 2008, como en Visual C++ 2008 Express y Visual C++ 2010 Express.

GLUT como tal, es un proyecto viejo y abandonado. freeglut es un proyecto basado en GLUT, con un desarrollo activo, por lo que generalmente se instalan ambas librerías.

Básicamente, lo que tenemos que hacer es copiar los archivos de cabecera (.h), las librerías (.lib) y las dlls (.dll) correspondientes (los dejo todos al final para descargar). Vamos paso a paso.


1) Copiar los archivos de cabecera

freeglut.h
freeglut_ext.h
freeglut_std.h
glut.h

Se deben copiar en el siguiente directorio:

Para MS Visual C++ 2008:
C:\Archivos de programa\Microsoft SDKs\Windows\v6.0A\include\gl\

Para MS Visual C++ 2010:
C:\Archivos de programa\Microsoft SDKs\Windows\v7.0A\include\gl\



2) Copiar las librerías

freeglut.lib
glut32.lib

Se deben copiar en el siguiente directorio:

Para MS Visual C++ 2008:
C:\Archivos de programa\Microsoft SDKs\Windows\v6.0A\Lib\

Para MS Visual C++ 2010:
C:\Archivos de programa\Microsoft SDKs\Windows\v7.0A\Lib\


3) Copiar las dll

freeglut.dll
glut32.dll

Se deben copiar en el siguiente directorio

Para Sistema Operativo de 32bits:
C:\Windows\system32\

Para Sistema Operativo de 64bits:
C:\Windows\SysWow64\


4) Usar GLUT

Crear un nuevo proyecto de tipo Win32 Console Application (y en opciones, seleccionar "Empty Project").

Abrir Project > Properties

Ir a Configuration Properties > Linker > Input

En Additional Dependencies, colocar:
freeglut.lib
glut32.lib


Fin

Y eso es todo, ya podemos compilar nuestros programas con glut sin problemas.

Paquete con todos los archivos necesarios: descargar

lunes, 8 de agosto de 2011

Configurar Apache detrás de un router TP-LINK TL-WR642G


Estoy desarrollando una pequeña aplicación web, sobre un servidor Apache, en una máquina con Windows XP, que se encuentra dentro de la red local de mi casa, la cual funciona con un AP TP-LINK WR642G.

Y bueno, para mostrarle la aplicación al cliente, lo que voy a hacer es configurar el router para que reenvie todas las peticiones públicas, a la dirección IP local de la máquina que tiene la aplicación. Simple.

Antes de comenzar hay que tener en cuenta que muchos ISPs bloquean los puertos conocidos (específicamente el 80, utilizado tradicionalmente para HTTP), tal es el caso de ABA en Venezuela. En este caso (es el mío), hay que configurar nuestro Apache para que permita conexiones a través de otros puertos (básicamente cualquiera por encima del 1024 está bien).

En el archivo httpd.conf, si no le hemos metido mucha mano, debemos tener un "Listen 80". Sólo basta agregar otra línea (antes o después de ésta, da igual) "Listen 1067" por ejemplo, si queremos que apache también escuche en el puerto 1067. Si tenemos una configuración más compleja, con Virtual Hosts por ejemplo, pues tendremos que hacer las modificaciones según sea nuestro caso. Para que los cambios surtan efecto, debemos reiniciar el servicio de Apache.

Luego sólo hacer falta ir a nuestro router y configurarlo para que reenvíe todas las peticiones a la máquina que tiene nuestro Apache. Esto se hace entrando a la configuración de nuestro router (http://192.168.1.1 es la dirección por omsión), y luego ir a Advanced Settings > Forwarding > Virtual Servers, y configurarlo de la siguiente manera:


No es necesario reiniciar el router. La configuración debería tomar efecto de inmediato.

Consideraciones adicionales

Debemos tener en cuenta muchas otras cosas. Menciono algunas.

La configuración del firewall de la máquina: lógicamente, si en el firewall tenemos bloqueado Apache o tenemos bloqueado el puerto, no podremos acceder.

La configuración del firewall del router: misma historia con el firewall del router.

La dirección IP de la máquina: si trabajamos bajo DHCP, eventualmente la máquina con el servidor Apache podría cambiar de dirección IP local y el router estará reenviando las peticiones web a la dirección IP antigua, que ya no se encontrará. Lo más lógico es que nuestra máquina servidor tenga dirección IP estática y/o tener el ARP binding configurado en el router, para que sólo asigne la dirección IP a la máquina servidor.


martes, 2 de agosto de 2011

Cambiar el nombre del pc en Ubuntu


Luego de algunas pruebas con máquinas virtuales, utilizando KVM, para ahorrar trabajo en la creación de los sistemas operativos invitados, comencé a utilizar la opción de clonar una VM, que trae el virt-manager (que por cierto, hace su trabajo impecablemente, valga la propaganda).

Un inconveniente al clonar las VMs, es que, lógicamente, la VM clonada queda con el mismo hostname y usuario(s) de la VM original. Cambiar el hostname es algo realmente sencillo, dejo acá los pasos, a manera de receta.

Lo primero es cambiar el hostname, con el comando hostname:

hostname nuevo_hostname

Luego, hay que editar el archivo /etc/hostname para colocar nuestro nuevo_hostname.

Finalmente editar /etc/hosts para que 127.0.0.1 apunte al nuevo_hostname.