jueves, abril 12, 2012

Paradigmas para la división del trabajo en Arquitectura de Sistemas

Paradigmas para ver y entender la división del trabajo en los sistemas computacionales

IaaS
Infraestructura como servicio
en este modelo el cliente consume recursos de almacenamiento, procesamiento y redes donde alojar y ejecutar aplicaciones

PaaS
Plataforma como servicio
en este modelo el usuario no controla la infraestructura e incluso el proveedor puede definir el herramientas y lenguajes, pero el usuario si controla las aplicaciones o servicios desplegados y algunas variables de entorno

SaaS
Software como servicio
en este modelo el cliente utiliza aplicaciones y servicios del proveedor, y no tiene control de la infraestructura ni de las apps, solo de parámetros de configuración

martes, marzo 20, 2012

Instalación de Oracle 10g Express Edition en Ubuntu 10.04 LTS

Instalación de Oracle 10g Express Edition en Ubuntu 10.04 LTS

Con eso de que he estado publicando sobre Oracle en Ubuntu, me ha faltado publicar respecto al proceso de instalación.

Aunque la versión 10.2 ya esta vieja, es la que tienen en el entorno del trabajo por lo que es la que estoy usando en esta instalación pero probablemente el proceso es similar con versiones más recientes.

Primero lo primero, descargar los archivos .deb, que se pueden obtener de esta página (previo registro):

http://www.oracle.com/technetwork/products/express-edition/downloads/102xelinsoft-102048.html

Respecto a las dependencias se requiere libaio, podemos ver que hay disponible con

$ apt-cache search libaio

libaio-dev - Biblioteca de acceso AIO del núcleo Linux - archivos de desarrollo
libaio1 - Biblioteca de acceso AIO del núcleo Linux - biblioteca compartida
libaio1-dbg - Biblioteca de acceso AIO del núcleo Linux, símbolos de depuración


así que optamos por instalar libaio1

$ sudo apt-get install libaio1


Luego procedemos a la instalación:

$ sudo dpkg -i download/linux/oracle-xe-universal_10.2.0.1-1.0_i386.deb
 (Leyendo la base de datos ...  00%
172182 ficheros y directorios instalados actualmente.)
Preparando para reemplazar oracle-xe-universal 10.2.0.1-1.0 (usando .../oracle-xe-universal_10.2.0.1-1.0_i386.deb) ...
Desempaquetando el reemplazo de oracle-xe-universal ...
Configurando oracle-xe-universal (10.2.0.1-1.0) ...
update-rc.d: warning: /etc/init.d/oracle-xe missing LSB information
update-rc.d: see
Executing Post-install steps...
-e You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.


Procesando disparadores para desktop-file-utils ...
Procesando disparadores para python-gmenu ...
Rebuilding /usr/share/applications/desktop.es_MX.utf8.cache...
Procesando disparadores para man-db ...
Procesando disparadores para ureadahead ...
Procesando disparadores para python-support ...


Ejecutamos lo que indica la salida anterior.

$ sudo /etc/init.d/oracle-xe configure

Indicamos los puertos para el servidor HTTP y para el Motor
Indicamos un password para las cuentas SYS y SYSTEM
Indicamos si queremos que el motor de base datos se inicie al arranque, si optamos por no, podemos arrancarlo a voluntad con el comando

$ sudo /etc/init.d/oracle-xe configure
Oracle Database 10g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 10g Express
Edition.  The following questions will determine whether the database should
be starting upon system boot, the ports it will use, and the passwords that
will be used for database accounts.  Press to accept the defaults.
Ctrl-C will abort.

Specify the HTTP port that will be used for Oracle Application Express [8080]:

Specify a port that will be used for the database listener [1521]:

Specify a password to be used for database accounts.  Note that the same
password will be used for SYS and SYSTEM.  Oracle recommends the use of
different passwords for each database account.  This can be done after
initial configuration:
Confirm the password:

Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]:n

Starting Oracle Net Listener...Done
Configuring Database...Done
Starting Oracle Database 10g Express Edition Instance...Done
Installation Completed Successfully.
To access the Database Home Page go to "http://127.0.0.1:8080/apex"


Para parar el servicio

$ sudo service oracle-xe stop

Para habilitar

$ sudo service oracle-xe enable

Para arrancar el servicio

$ sudo service oracle-xe start

Para consultar el status

$ sudo service oracle-xe status

Basicamente, con esto ya tenemos un motor oracle edición express up and running.

lunes, marzo 19, 2012

Oracle XE 10.2 documentation links

all books
http://www.oracle.com/pls/db102/portal.all_books

sqlplus user's guide and reference
http://docs.oracle.com/cd/B19306_01/server.102/b14357/toc.htm

Usando oracle express edition 10.2 (XE) con ubuntu 10.04 LTS

Usando oracle express edition 10.2 (XE) con ubuntu 10.04 LTS

(using oracle express edition XE with ubuntu)

Primero vamos a indicar las carencias y defectos que se presentan una vez desempacado e instalado el software

El paquete de oracle server xe contiene una utilidad de conección en modo consola la que se denomina sqlplus, sin embargo el sistema no queda configurado adecuadamente para encontrar este programa, y para ejecutarlo se requiere llamar a otros scripts que se supone que han sido escritos por profesionales de una compañia tan grande como Oracle, sin embargo dejan mucho que desear.

Como podemos ver por el acceso directo que crea la instalación:

el software se instala en:

/usr/lib/oracle/xe/app/oracle/product/10.2.0/server

y el script que corre para abrir sqlplus es:
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/scripts/runsqlplus.sh

if [ -f /usr/bin/gnome-terminal ]
then
    /usr/bin/gnome-terminal -t "SQL*Plus" -e "/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/scripts/sqlplus.sh"
else
    /usr/bin/xterm  -T "SQL*Plus" -n "SQL*Plus" -e "/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/scripts/sqlplus.sh"
fi

el cual lo único que hace es escoger el programa de terminal a utilizar, dando preferencia si esta presente a gnome-terminal sobre xterm, y fijando el título de la ventana para invocar a:
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/scripts/sqlplus.sh


ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export ORACLE_HOME
ORACLE_SID=XE
export ORACLE_SID
NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
export NLS_LANG
PATH=$ORACLE_HOME/bin:$PATH
export PATH
sqlplus /nolog


este otro lo que hace es fijar adecuadamente las variables
ORACLE_HOME
ORACLE_SID
NLS_LANG
PATH
y finalmente arrancar el sqlplus sin log

lo feo del caso es que el script
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/nls_lang.sh
contiene un error en la linea 108 y 110, al evaluar una condición

originalmente esta así:
if [[ -n "$LC_ALL" ]]; then
  locale=$LC_ALL
elif [[ -n "$LANG" ]]; then
  locale=$LANG
else
  locale=
fi


pero se puede corregir simplemente cambiandolo para que quede así:
if [ -n "$LC_ALL" ]; then
  locale=$LC_ALL
elif [ -n "$LANG" ]; then
  locale=$LANG
else
  locale=''
fi


para que ahora si podamos correr con toda confianza en nuestra terminal
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/scripts/sqlplus.sh

lo cual nos dará un prompt como este:

SQL*Plus: Release 10.2.0.1.0 - Production on Lun Mar 19 16:22:22 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL>



¿y luego que se hace?

Primero nos tenemos que conectar usando un comando connect (nos podemos conectar a un motor oracle ya sea local o remoto), para ello tenemos que saber el usuario y password

en este caso nos conectamos a un server local (127.0.0.1)

como un usuario normal, ej. username
 
SQL> connect username@127.0.0.1

(sqlplus connect as sys)
si queremos conectarnos como DBA hay que agregar:


SQL> connect sys@127.0.0.1 as sysdba


posteriormente pregunta el password y lo proporcionamos para obtener acceso


y saldrá un mensaje que dice:

Conectado.
SQL >



Podemos desconectarnos usando

SQL> disconnect

¿y luego que se hace?


podemos mostrar ayuda para un comando utilizando el comando help

SQL> help connect


Otros comandos a probar son:


help
help accept
help index


Sin embargo seguramente te estas preguntando como se le hace para correr un script sql?


Pues basicamente una vez conectados ya podemos escribir nuestros querys sql


SQL> create table t ( a int ) ;
Tabla creada.

Podemos definir nuestro editor favorito para invocarlo desde sqlplus:


SQL> define _EDITOR = gvim
o
SQL> define _EDITOR = gedit



Luego ya podemos editar un archivo mediante


SQL> edit filename


Esto abrira nuestro editor con el archivo filename.sql
Para correr los comandos en dicho archivo podemos usar:

SQL> start filename

o
SQL> @filename


Para guardar la salida de la ejecución en un archivo podemos usar:

SQL> spool output_filename append


append es opcional pero es recomendable para no borrar datos previos que haya en el archivo,

para guardar la salida en el archivo es necesario detener el spool

SQL> spool off



Con la información anterior ya nos es posible editar y ejecutar scripts, así como guardar la salida de ejecución, por lo que hasta aquí voy a dejar esta introducción a la linea de comandos de oracle sqlplus, esto para los que preferimos usar una linea de comandos a la interface html, que es un poco impractica.

Podeís encontrar mas información usando este link:
http://docs.oracle.com/cd/B19306_01/server.102/b14357/pt2.htm









Fuentes:
http://docs.oracle.com/cd/B19306_01/server.102/b14357/ch3.htm

Setting Aquafold Datastudio with Oracle Database

(configurar aquafold datastudio para usarlo con motor de base de datos Oracle)

A diferencia de otros motores requerimos más parametros para configurar por ej. para configurar un postgresql requerimos ip, usuario, password, puerto y database

en el caso de oracle, el equivalente a database puede ser el SID, en el caso de oracle express editon, el SID que se requiere es XE

hay un parametro del tipo de conección que puede ser ( normal | SYSOPER | SYSDBA ) y que tenemos que poner en SYSDBA cuando nos estemos conectando con la cuenta SYS o SYSTEM

así quedarían los parametros de la configuración a un motor oracle, como en la imagen

jueves, marzo 15, 2012

Remover secuencias de escape de terminal usando un comando

How to remove ANSI escape sequences from a text file: e.g. remove escape sequences from the output of 'script':
I needed this functionality just now and I thought 'Why not share it?'. So, here it is:
Add to your $HOME/.bashrc
alias stresc='sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"'
You may replace 'stresc' by whatever you prefer, just make sure it is not an already existing command or alias.
This effectively creates your own personal 'strip escape' command.
To use it in a terminal
stresc filename
or
stresc filename > other-file-name

fuente: http://crunchbanglinux.org/forums/topic/15321/how-to-remove-ansi-escape-sequences-from-a-text-file/

domingo, febrero 19, 2012

y dicen que el perro viejo no aprende trucos nuevos

pero no es cierto, hoy aprendí 2 nuevos comandos

watch
    para monitorear otro comando que se corre periodicamente y monitorear cambios en su salida, notar que esta ejecutando el comando cada n segundos y mostrando su salida sobrepuesta

ej.
    cuando estamos descargando un archivo o copiando uno grande y queremos ver el tamaño del archivo como va cambiando cada 5 segundos
watch -n 5 ls -lh growingfile.bin


script
    para guardar en un archivo toda la salida y entrada de una sesion interactiva de terminal, o que otro usuario vea lo que estamos haciendo en la terminal

ej. para guardar la salida a un archivo de nombre log
script -f log

ej. para mostrar a otro lo que se va haciendo cuando ambos están logueados en un server
on term1:
    mkfifo fifo; script -f fifo
on term2:
    cat fifo
entonces toda la salida y entrada de term1 se replica en term2

comandos en solaris

mach

martes, febrero 14, 2012

Configurar apt-get a traves de proxy autenticado

Editar /etc/apt/apt.conf
y añadir esta linea:

Acquire::http::proxy "http://DOMAIN\USER:PASSWORD@PROXY_IP:PORT";

o si no requiere DOMINIO

Acquire::http::proxy "http://USER:PASSWORD@PROXY_IP:PORT";

por ej:

Acquire::http::proxy "http://google\sergey:password@10.0.0.1:8080";

o si no requiere dominio
Acquire::http::proxy "http://sergey:password@10.0.0.1:8080";

o si no requiere autenticación
Acquire::http::proxy "http://192.168.1.253:8080";

Esto me ha funcionado, pero si es un poco inseguro porque el password queda a la vista.
Al menos podemos hacerlo no legible salvo para root o sudoers con esto
sudo chmod 700 /etc/apt/apt.conf

martes, noviembre 29, 2011

Añadiendo soporte en ubuntu para driver de ethernet card Atheros AR8152 en Toshiba Satellite Pro C650

Añadiendo soporte en ubuntu para driver de ethernet card Atheros AR8152 en Toshiba Satellite Pro C650

de acuerdo con:

lspci | grep Ethernet
01:00.0 Ethernet controller: Atheros Communications AR8152 v1.1 Fast Ethernet (rev c1)

por alguna razón ubuntu 10.04 LTS en esta ocasión si detecta la interface wireless y la ethernet no la detecta, gogleando encontre que se puede añadir driver para esta tarjeta compilandolo

es necesario descargar el fuente de
http://linuxwireless.org/download/compat-wireless-2.6/

yo descargue el más reciente en este momento
http://linuxwireless.org/download/compat-wireless-2.6/compat-wireless-2011-11-22.tar.bz2

luego, poniendonos en el directorio donde descargamos:

tar -xjvf compat-wireless-2.6.tar.bz2
cd compat-wireless*
scripts/driver-select atl1c
make
sudo make install

luego reiniciamos y en teoría ya debemos tener el soporte

si no cargo el driver automagicamente probar

sudo modprobe atl1c

miércoles, noviembre 23, 2011

Resize ubuntu live usb persistence storage space

Warning: Block file size must be less than < 4096 MB on a fat32 formatted flash drive due to the 4GB file size limitation of a fat32 partition. Creating a NEW larger casper-rw loop file The following method will create a NEW casper-rw file that will replace the old one. If you want to resize an existing image see the next section. After your up and running in Linux, insert the flash drive that contains your casper-rw loop file Open a terminal Type the following into the terminal window and press enter dd if=/dev/zero of=casper-rw bs=1M count=1024 (replacing 1024 with the "size in MB" you wish to use for saving changes persistently) Type the following into the terminal and press enter mkfs.ext3 -F casper-rw Copy the new casper-rw file to your USB flash drive Restart your computer, booting from the USB flash drive and enjoy using the larger casper-rw loop block file you have just created. Resize an existing casper-rw loop file The following method will allow you to resize your existing casper-rw image (expand casper-rw). You should create a backup just in case before proceeding. After your up and running in Linux, insert the flash drive that contains your casper-rw loop file Open a terminal and change directory (CD) to the location of your casper-rw file Type the following into the terminal window and press enter dd if=/dev/zero bs=1M count=1024 >> casper-rw

(replacing 1024 with the size in MB you wish to increase the original size by)

Type the following into the terminal window and press enter
resize2fs casper-rw

If all goes well, you should now have a larger casper-rw loop file to use for saving your persistent changes.

lunes, noviembre 07, 2011

compartir usb o sd o tarjeta con windows desde ubuntu linux

(problema de permisos compartir desde linux mediante samba(carpetas compartidas) archivos en la SD o USB)

(ubuntu linux samba sharing permission problem)


pinche linux, a veces hay cosas sencillas que da mucha lata poderlas realizar

como es el caso de querer compartir con máquinas windows (mediante samba) archivos que están en una usb o en una memoria SD en el lector de tarjetas

aquí la historia:

1. metes la memoria al lector, y bueno, todo bien, lo monta en /media/ALGO (donde algo es el label del sistema de archivos en la memoria) y puedes ver los archivos sin bronca, así que supones que modificando la configuración del /etc/samba/smbd.conf agregando:

[ALGO]
path = /media/ALGO
browseable = yes
writeable = no
guest ok = yes
force user = nobody
force group = nogroup

lo anterior funciona bien ya que desde la máquina windows puedes ver la carpeta compartida algo, pero cuando intentas ver su contenido te marca un error de permisos

revisando los permisos con ls -lh nos damos cuenta de que los permisos de la carpeta están como

root root rwxr-xr-x

y como es un directorio requiere permisos para el grupo y otros usuarios como rwrrwxrwx así que hay que cambiarlos, pero usando chmod no lo permite porque el sistema de archivos es vfat y no tiene dichos permisos

así que la solución esta en desmontar el sistema de archivos y montarlo a mano para poder indicar el usuario y grupo con el cual montarlo

primero tomamos nota de donde se monto en automático

$ mount | grep /media/algo

/dev/sdc1 on /media/algo .....

tomamos nota de que el sistema esta en /dev/sdc1

$ sudo umount /media/algo

creamos el punto de montaje nuevo

$ mkdir ~/algo

montamos manualmente

$ sudo mount -o uid=nobody,gid=nogroup /dev/sdc1 ~/algo

modificamos el /etc/samba/smb.conf

[ALGO]
path = /home/YOUR_USER/algo
browseable = yes
writeable = no
guest ok = yes
force user = nobody
force group = nogroup

si es necesario le damos un restart al samba

$ sudo service smbd restart

de esta forma ya no debemos tener problema para ver los archivos desde la máquina con windows
mediante el path por ej.

\\192.168.10.70\algo

martes, noviembre 01, 2011

notas sobre desarrollo con android desde linea de comandos

usando el SDK de android


Como revisar las plataformas que hay instaladas (targets)
$ androd list targets




Come crear los estructura base y archivos que conforman un proyecto para una aplicación
$ android create project -t 1 -n hello -k com.pkg -a hello -p .


Como modificar una aplicación incluida en los samples del SDK para generar el build.xml
$ android update project -n NOMBRE -t 1 -p android-sdk/samples/sampleX


Como compilar la aplicación en modo de depuración
$ ant debug



Como compilar la aplicación usando firma para poder subirla al market
$


se crea un emulador usando el GUI que contiene el programa
$ android
seguir la GUI, lo importante aquí es tomar nota del nombre que le ponemos al emulador ya que este nombre se utiliza para arrancarlo


Como arrancar el emulador, se le puso de nombre avd1
$ emulator -avd avd1



Como listar los emuladores que están en ejecución
$ adb devices


Con el emulador corriendo, como instalar una applicación
$ adb install archivo.apk

como usar un solo mouse y teclado para controlar varias computadoras

como compartir un mouse y teclado con o para varias computadoras



las computadoras pueden tener diversos sistemas operativos, por ejemplo OS X, linux o windows

es bastante sencillo y practico usando el programa adecuado, en este caso se trata de 

synergy

en distribuciones basadas en .deb lo instalamos usando apt
$ sudo apt-get install synergy

para los otros sistemas operativos podemos descargarlo de la página de la app
http://synergy-foss.org/download/

luego es necesario correr el server en la máquina donde tenemos el teclado y mouse que queremos usar para controlar las otras compus, pero hay que crear un archivo de configuración como este de ejemplo:

.synergy.conf
================================

section: screens
google:
petit:
inv1:
end

section: aliases
        google:
                192.168.10.70
        petit:
                192.168.10.38
        inv1:
                192.168.1.71
end

section: links
        google:
                left = petit
        petit:
                right = google
                left = inv1
        inv1:
                right = petit
end


================================

la sección links es declarativa y cada máquina declara lo que tiene alredodor
google
    tiene a la izquierda a petit
petit
   tiene a la derecha a google
   tiene a la izquierda a inv1
inv1
   tiene a la derecha a petit



luego, ya con dicho archivo de configuración en la máquina donde esta el teclado y mouse principal corremos un synergy server

por default synergys busca el archivo .synergy.conf en nuestro $HOME, con la opción --config podemos especificar un archivo distinto
--config synconf2.conf

Lanzamos el servidor de synergy para que este listo para compartir teclado y mouse
$ synergys -f





por otro lado las máquinas que queremos controlar se tienen que entregar voluntariamente, o sea tenemos que ejecutar el cliente de synergy indicando el servidor que las controlara

$ synergyc -f google
o por ip
$ synergyc -f 192.168.10.70


tanto synergys como synergyc corren en modo background, la opción -f es para que corran en foreground, cuando ya se acostumbren a usarlo es recomendable eliminar dicho parametro a menos que quieran dejar una terminal para monitoreo


viernes, octubre 28, 2011

Compras en USA y la ineficiente economía Mexicana

Este post lo hago como parte de un review a este producto que compre en Amazon el cual salio en promoción por tan solo 30 dolares (click en la imagen para ver el producto en amazon)



Soy de la Ciudad de México y antes que nada vean que tambíen compramos cosas originales y no solo material pirateado en Tepito, cuyas copias de DVD tienen una pésima calidad (material y técnica para realizar la copia) y los supuestos clones de DVD no lo son ya que generalmente los DVD originales vienen en doble capa y contienen en promedio 6Gb o más de datos, los supuestos clones los hacen en el DVD de a 1 peso y les reducen calidad para que entren en 4Gb, además de que le quitan material extra y audio en otros idiomas (que son muy utiles para aprender idiomas). Es decir lo pirata realmente es pus, ni siquiera es una piratería bien hecha, el disco no esta serigrafiado, y ni siquiera los dan en una caja para su protección y conservación si usarán DVD de buena calidad y doble capa tendrían que vender en 40 pesos cada DVD en lugar de los 6 pesos a los que los venden.

Las grandes discográficas tienen que considerar la diferencia de ingresos en los países jodidos como México ya que no puede ser que los precios en México sean superiores a los precios que ofrecen en países con niveles de ingreso más altos.

Es increible que sea más barato comprar a través de amazon que en las tiendas locales físicas o web, ya que se supone que ellos pueden ofrecer un mejor precio porque compran de mayoreo, sin embargo sale más barato importarlo de manera individual (y uno también paga el impuesto de importación), lo cual no tiene lógica económica, esto solo refleja que los empresarios mexicanos son muy aborazados para obtener altas tasas de ganancia, es decir la economía mexicana no es eficiente.

Yo considero que el precio de equilibrio adecuado para un país como México es entre 40 y 60 pesos para los DVD de películas, la industria discográfica debe considerar este tipo de estrategias de precios como la manera más eficiente de combatir la piratería y no las tontas propuestas que vemos aparecer en los titulares como esta noticia de Diario TI

Respecto al review del producto no hay mucho que decir, es un material de excelente calidad, claro si te gusta la serie de Harry Potter, sino, pues no.

jueves, octubre 06, 2011

Como saber desde donde están entrando a nuestro sitio con PHP

Solución escrita usando PHP

<?php

header("Content-Type: text/html; charset=utf8;");

echo "Has llegado a esta página ";

if (isset($_SERVER['HTTP_REFERER']) ){
    echo " por una referencia desde [<b>";
    echo $_SERVER['HTTP_REFERER'];
    echo "</b>]";
} else {
    echo "<b>usando el url directamente.</b>";
}

?>

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