jueves, septiembre 22, 2011

Compiling PHP5 with MS SQL Server support

Compilando PHP5 con soporte para MS SQL Server

Primero hay que obtener el código fuente del sitio de ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz

En esta ocasión voy a proceder a poner los comandos del proceso de instalación:

cd /dev/shm
wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
mkdir /build
cd /build
tar zxvf /dev/shm/freetds-stable.tgz
cd freetds-0.82/
./configure --prefix=/usr/local/freetds --exec-prefix=/usr/local/freetds
make
sudo make install

con lo anterior hemos terminado de compilar e instalar freetds en nuestro linux
ahora a compilar el php con dicho módulo

cd /build
cd php-5.2.6/
'./configure' '--with-apxs2=/usr/local/apache2/bin/apxs' '--with-pgsql=/usr/local/pgsql' '--with-zlib' '--enable-mbstring' '--with-gd' '--with-jpeg-dir=/usr/lib' '--with-mssql=/usr/local/freetds'

aquí nos marca un error que se resuelve como los amables usarios de php indican en
http://www.php.net/manual/en/mssql.installation.php
ya que al parecer hay algunos archivos que el php supone que existen para verificar la existencia de tds, pero que la distro de tds ya no incluye

sudo touch /usr/local/freetds/include/tds.h
sudo touch /usr/local/freetds/lib/libtds.a

luego regresamos a intentar

'./configure' '--with-apxs2=/usr/local/apache2/bin/apxs' '--with-pgsql=/usr/local/pgsql' '--with-zlib' '--enable-mbstring' '--with-gd' '--with-jpeg-dir=/usr/lib' --with-mssql=/usr/local/freetds
make
sudo make install

reiniciamos el apache y corremos un .php que muestre phpinfo() para comprobar que ya se encuentre el soporte, debe aparecer una sección mssql, esto indica que el php ya tiene dicho soporte

sudo service httpd restart
google-chrome http://localhost/pru.php


Como paso adicional es necesario modificar el archivo de configuración de tds para agregar nombres de servidores sql que se utilizarán en php para conectarse a los motores de base de datos.

sudo gvim /usr/local/freetds/etc/freetds.conf

añadimos una sección por cada servidor (no es necesario reiniciar el httpd) por ej.

[google_vm_altair]
host = 192.168.10.70
port = 1433
tds version = 7.0

miércoles, septiembre 21, 2011

MS Sql Server Backup / Restore sql commands

Con MS SQL Server es posible realizar backups (respaldos) mediante querys (consultas) sql, a través de una conexión a la base de datos usando nuestra herramienta favorita con la que acostumbramos hacer querys (en mi caso Aqua Fold Datastudio).

Respaldar en el directorio por defecto (backup directory in MSSQL directory) con nombre prueba.bak

BACKUP DATABASE pru
TO DISK='prueba.bak';

Restaurar de un backup que se encuentra en el directorio default
Nota: la base de datos que se quiere restaurar no debe estar en uso.

RESTORE DATABASE pru
FROM DISK='prueba.bak';

Restaurar de un backup hacia una base de datos distinta a la original

RESTORE DATABASE pru2
FROM DISK='prueba.bak'
esto lanza el error siguiente
-- [Error] Script lines: 1-3 --------------------------
-- The file 'c:\mssql2005\MSSQL.1\MSSQL\DATA\pru.mdf' cannot be overwritten.  It is being used by database 'pru'.
--
-- More exceptions ... File 'pru' cannot be restored to 'c:\mssql2005\MSSQL.1\MSSQL\DATA\pru.mdf'. Use WITH MOVE to identify a valid location for the file.

Así que necesitamos ver el contenido del backup para ello usamos:

RESTORE FILELISTONLY
FROM DISK='prueba.bak'
esto muestra algo como lo siguiente:

LogicalName PhysicalName Type FileGroupName Size MaxSize FileId CreateLSN DropLSN UniqueId ReadOnlyLSN ReadWriteLSN BackupSizeInBytes SourceBlockSize FileGroupId LogGroupGUID DifferentialBaseLSN DifferentialBaseGUID IsReadOnly IsPresent <br /> -------------- ------------------------------------------- ------- ---------------- ------- -------------- --------- ------------ ---------- ------------------------------------ -------------- --------------- -------------------- ------------------ -------------- --------------- ---------------------- ------------------------------------ ------------- ------------ <br /> pru c:\mssql2005\MSSQL.1\MSSQL\DATA\pru.mdf D PRIMARY 2293760 35184372080640 1 0 0 DB89AE8F-4F86-4633-9063-7BE019ABF8E9 0 0 1441792 512 1 (null) 17000000041200037 8683BDA0-FDA1-4281-B887-5FEE5FD1CC0D false true <br /> pru_log c:\mssql2005\MSSQL.1\MSSQL\DATA\pru_log.LDF L (null) 573440 2199023255552 2 0 0 A9C91979-20E6-4A67-BAEC-48FC68C3E6B6 0 0 0 512 0 (null) 0 00000000-0000-0000-0000-000000000000 false true <br />

Así que usamos la información anterior para hacer la restauración indicando donde queremos colocar los archivos de la base y el log, para ello usamos el Logical name

RESTORE DATABASE pru2
FROM DISK='prueba.bak'
WITH
MOVE 'pru' TO 'c:\mssql2005\MSSQL.1\MSSQL\DATA\pru2.mdf'
,MOVE 'pru_log' TO 'c:\mssql2005\MSSQL.1\MSSQL\DATA\pru2_log.LDF'

<br /> <br /> -- ALGUNOS EJEMPLOS APLICADOS<br /> <br /> BACKUP DATABASE pru<br /> TO DISK='\\10.0.2.2\buzon\pru.bak'<br /> <br /> RESTORE FILELISTONLY<br /> FROM DISK='\\10.0.2.2\shm_altair\plantilla.bak'<br /> <br /> <br /> RESTORE DATABASE altair_plantilla<br /> FROM DISK='\\10.0.2.2\shm_altair\plantilla.bak'<br /> WITH<br /> STATS=10<br /> ,MOVE 'plantilla_Data' TO 'c:\mssql2005\MSSQL.1\MSSQL\DATA\altair_plantilla.mdf'<br /> ,MOVE 'plantilla_Log' TO 'c:\mssql2005\MSSQL.1\MSSQL\DATA\altair_plantilla_log.ldf'<br /> <br />



=========================================================
BACKUP DATABASE pru
TO DISK='C:\bk\pru.bk';

es tan simple como lo anterior, pero hay que asegurarnos de que la cuenta con la que corre el proceso de sql server tiene permiso de escritura en el path donde queremos guardar el archivo de backup, por lo que hay que darle permiso en las propiedades de seguridad a la carpeta, en mi caso el sqlserver corre con la cuenta NETWORK SERVICE y al darle permiso ya no saldra un error como este:

Cannot open backup device 'C:\bk\pru.bk'. Operating system error 5(Access is denied.)

Si el backup es muy grande, podemos agregar lo siguiente para recibir notificación sobre el progreso, en este caso solicitamos notificación cada 10%  (WITH STATS=10) y el comando quedaría así:

BACKUP DATABASE pru

TO DISK='C:\bk\pru.bk'
WITH STATS=10;

Restore sql


Restoringaoeu

Más información:

http://technet.microsoft.com/en-us/library/ms186865(SQL.90).aspx

martes, septiembre 20, 2011

configuring several ips on the same network interface (card)

(creating or setuy virtual ethernet devices on a single physical device)
(creating or setup virtual IP address on a single interface)

now our interface is binded to the three IPs

if you want to check with your eyes, run

ifconfig

and you will see something like this

eth0      Link encap:Ethernet  direcciónHW 00:04:75:ab:cd:ef  
          Direc. inet:192.168.1.50  Difus.:192.168.1.255  Másc:255.255.255.0
          ACTIVO DIFUSIÓN MULTICAST  MTU:1500  Métrica:1
          Paquetes RX:0 errores:0 perdidos:0 overruns:0 frame:0
          Paquetes TX:0 errores:0 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:1000 
          Bytes RX:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupción:20 Dirección base: 0xe000 

eth0:1    Link encap:Ethernet  direcciónHW 00:04:75:ab:cd:ef  
          Direc. inet:192.168.1.100  Difus.:192.168.1.255  Másc:255.255.255.0
          ACTIVO DIFUSIÓN MULTICAST  MTU:1500  Métrica:1
          Interrupción:20 Dirección base: 0xe000 

eth0:2    Link encap:Ethernet  direcciónHW 00:04:75:ab:cd:ef  
          Direc. inet:192.168.1.200  Difus.:192.168.1.255  Másc:255.255.255.0
          ACTIVO DIFUSIÓN MULTICAST  MTU:1500  Métrica:1
          Interrupción:20 Dirección base: 0xe000

related info:


http://itsecureadmin.blogspot.com/2007/02/creating-virtual-ip-addresses-on-linux.html

lunes, septiembre 19, 2011

find command modifier to locate only directories

find . -type d -iname "*_vti_*"

VirtualBox port forwarding from HOST to GUEST

Accesing a virtualbox virtual machine's network services from the host operating system

When running a VirtualBox VirtualMachine(VM), the networking inside the VM by default is in a private network in NAT, generaly 10.0.2.x, so the GUEST can access the HOST network services, but the HOST and the outside world is unable to reach the GUEST network services.

According to the VirtualBox Manual, there are different modes of network emulation, by default the NAT mode.

A way to map (forward) a HOST port to a GUEST port exists and is posible to configure from the command line (the VM should not be running):

$ VBoxManage modifyvm windows-server --natpf1 "iis,tcp,,8080,,80"

In this case:
windows-server is the name of the VM
iis is the name of the rule
tcp the protocol, could be udp also
the host IP is left blank
the hostport is 8080
the guest IP is left blank
the guestport is 80

The restriction with this approach is that all the inbound traffic is reverse NATed so the GUEST VM will see the origin IP as 10.0.2.2.

jueves, septiembre 15, 2011

como convertir .nrg a .iso in linux

(how to convert from .nrg image to .iso image)

los archivos .nrg son images de un CD o DVD creadas con el software de grabación NERO Burning, sin embargo es de más utilidad tener el archivo de imagen en formato .iso, el cual es un estandar y es el más aceptado por las aplicaciones y podemos arrancar las maquinas virtuales desde un .iso

así que hay que convertirlo y en linux no hay mayor problema, solo tenemos que instalar el paquete nrg2iso

$ sudo apt-get install nrg2iso

luego para convertir

$ nrg2iso file.nrg file.iso

y listo!!! ya podemos utilizar la imagen con mucho más software sin requerir el ñero

jueves, septiembre 08, 2011

Convertir secuencia de imagenes a video

$ ffmpeg -f image2 -r 1 -i cuadro%04d.png -r 25 video.avi

La opción -f image2 le indica a ffmpeg que la entrada es una secuencia de imagenes.

Se puede facilmente con el comando ffmpeg %04d indica que los nombres de imágenes son a 4 digitos 0000 hasta el 9999.
Si las imagenes tienen nombres con 2 digitos usaríamos %02d, y si solo tienen el número sin mascara (1, 2,3, ... 9, 10, ..., 21) solo utilizamos %d.

La primera -r indica cuantas imagenes van por cada segundo.

La segunda -r indica el número de cuadros por segundo del video.

video.avi es el nombre del archivo de salida

martes, septiembre 06, 2011

Compiling PHP 5 with GD support

To compile php apache module from sources, with GD library support in ubuntu 10.04 LTS, you need to run:

$ sudo apt-get install libgd2-xpm-dev libjpeg62-dev

running configure

$ ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pgsql=/usr/local/pgsql8.1 --with-zlib --enable-mbstring --with-gd --with-jpeg-dir=/usr/lib