2010/12/27

Máquina virtual en VirtualBox como servidor

Tengo un máquina virtual con Debian servida desde "Windows XP" con VirtualBox 3.2. Quiero tener accesibles servicios lanzados en la máquida huesped (el Debian) que sean sólo desde la máquina windows.

La solución es hacer Port Forwarding como explican aquí. En mi caso particular con jetty, para acceder a servicios en el puerto 8080 hice:

C:\...\Orable\VirtualBox> VBoxManage.exe setextradata "VM Name Here" \
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/jetty/Protocol" TCP

C:\...\Orable\VirtualBox> VBoxManage.exe setextradata "VM Name Here" \
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/jetty/GuestPort" 8080

C:\...\Orable\VirtualBox> VBoxManage.exe setextradata "VM Name Here” \
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/jetty/HostPort" 9999


Todo esto con la máquina parada. Antes de iniciarla, en la configuración la red tuve que marcar "pcnet" porque sino daba un error relacionado con la obtención de la MAC.
       
   

2010/07/29

Usar editor externo en postgresql

Aunque pgAdmin es un programa bastante cómodo e intuitivo para administrar bases de datos postgres, el cliente en línea de comandos es realmente potente y ágil.

En algunas ocasiones es verdad que para programar sobre la base de datos, hacer consultas muy complejas o realizar otras operaciones trabajar en el terminal es algo engorroso. En el terminal no es tan sencillo editar y no tienen tantas ayudas como en un programa de edición de textos o un IDE.

Existe la posibilidad de usar un editor externo para editar una consulta concreta.

El comando
 \e 

permite abrir un editor con el "Query Buffer" actual. La primera vez que se ejecuta este comando '\e' te pregunta qué programa externo usar; emacs con su sql-mode puede que sea el mejor ;). Admite como parámetro un fichero también.
 \e [FILE]


Si quieres editar una función concreta, puedes utilizar:
 \ef [FUNCTION_NAME] 

que si ejecutas sin parámetros te genera una plantilla básica para empezar a programar.

En ocasiones puede pasar lo siguiente si queremos editar/ver una función:


#\ef dropgeometrycolumn
ERROR: more than one function named "dropgeometrycolumn"


Esta función es de PostGIS y existe un conflicto de nombres debido a que es posible aplicar "polimorfismo". Si miramos la firma de las funciones:


# \df dropgeometrycolumn

Schema | Name | Result data type | Argument data types | Type
--------+--------------------+------------------+---------------------+--------------
public | dropgeometrycolumn | text | character varying, character varying | normal
public | dropgeometrycolumn | text | character varying, character varying, character varying| normal
public | dropgeometrycolumn | text | character varying, character varying, character varying, character varying | normal
(3 rows)


Para poder editar una de esas funciones concretas habría que espedificar los argumentos:


# \ef addgeometrycolumn(character varying, character varying, integer, character varying, integer)
       
   

2010/07/06

Error con DBF en OpenOffice 3.2

Con Ubuntu 10.4 cuando intentaba abrir o guardar un fichero DBF en OpenOffice Calc me daba el siguiente mensaje de error:

General Error.
General Input/Output Error.

Pensé que podía ser, que como pasa en las nuevas versiones de Office de Microsoft, que han dejado de dar soporte a este formato "clásico". Pero no, buscando un poco encontré la solución que parece que dio la lata a más de uno.

Hay que instalar openoffice.org-base y todo arreglado.
       
   

2010/02/02

Baixar videos de agalega.info

Con GNU/Linux non son quen de ver os videos de agalega.info nin con Firefox nin cun video player usando mms.

A solución foi baixar o arquivo usando o seguinte comando:

 mplayer mms://url -dumpstream -dumpfile foo.wmv 
       
   

2010/01/27

Copiando todo con los permisos

Esto es un uso de tar simple que conviene tener a mano para cuando tienes que hacer un backup y necesitas que mantenga los permisos de los ficheros y directorios.

 tar -pczf foo_backup.tar.gz foo/ 

Este comando creará (-c) un nuevo fichero foo_backup.tar.gz (-f), comprimido con gzip (-z) guardando todos los permisos (-p).

Actualización:

En caso de tener que volcarlo en un disco externo este post puede ser interesante para evitar el mensaje "File too large"... :)

Todo junto quedaría:

 tar -to-stdout -pcz foo/ | split -b3500m - foo_backup.@


Y cortesía de fpuga un par de links interesantes para usar la opción -L de tar y otras cosas más:
       
   

2009/11/18

Where do you want to fetch from today?

Tras un tiempo sin usar un repositorio de código me pasó lo siguiente:
$git pull
fatal: Where do you want to fetch from today?
Y no conectaba!!!
- ¿Cómo se pudo resolver el problema?

- Pues haciendo memoria... y recordando que era un repositorio Subversion y no git al que accedía mediante git-svn.

;)


       
   

2009/10/22

Claves primarias en SQLite

SQLite es una base de datos muy interesante. Entre sus características hay cosas que puede resultar extrañas para las personas acostumbradas a otros gestores de base de datos. Por ejemplo, un campo que sea de tipo INTERGER puede almacenar un STRING; esto es consecuencia del tipado dinámico de SQLite.

Otra cosa a comentar es que no se comprueban las restricciones de PRIMARY KEY, teniendo que hacerlo manualmente a través de triggers en caso de que sea necesario. Si necesitas saber cuales son los campos con clave primaria una forma de hacerlo puede ser mediante la siguiente sentencia:
PRAGMA table_info(tablename)
Esto devuelve una tabla con un campo pk con valor 1 cuando el atributo tiene esta CONSTRAINT.