miércoles, marzo 02, 2005

algunos comandos de postgresql

Bien tratando ded aprender un poco mas, instale postresql "el mejor gestor de base de datos GPL" ( ami gusto), una vez mas solo presento las experiencias que tengo mientras aprendo.

Una de las formas de aprender mas rapido quizas sea un entorno con dibujitos asi como les gusta a los windozeros, bueno pueden usar en este caso el pgadmin, un aexcelente herramienta visual.

Una vez instalado sabemos que el puerto de conexion de postgresql es 5432, bien para
crear una base ded datos es:

crear base de datos

createdb base_de_datos_a_crear -U usuario_de_postgressql
ejemplo
createdb internacional -U augusto

luego colocas el password que te pide y voila

conectarse a postregsql

psql base_de_datos -U usuario_postgres
ejemplo
psql ccolegio -U augusto

subir un archivo sql generado por postgres

psql -f archivo.sql base_de_datos -u
ejemplo
psql -f colegio.sql colegio -u
luego colocas el password que te pide y voila

http://www.trhex.com/csharp

lunes, diciembre 20, 2004

configurar named con 2 dominios

MANUAL DE DNS


El articulo siguiente es salido de la experiencia y una vez mas, no pretende ser un documento oficial, de igual manera es didactico y funcional.


Sistemas operativos testeados:


Fedora Core 2

WhiteBox

Red Hat Enterprise


con esos los probe y funciona, con los demas distribuciones se asume que tambien, al final los RFC son los mismos que se usan, solo cambian deetalles como ubicacion de archivos y nombres de los mismos


Temario.


1.-Introduccion ( Teoria de DNS )

2.-Instalacion de paaquetes necesarios

3.-Configuracion de NAMED


1.-Introduccion



2.-Instalacion de paquetes necesarios



3.-Configuracion de NAMED


Una vez instalados paquetes necesarios, procedemos.


3.1.-Caso de Uso.

Se compro 2 dominios, trhex.com y linuxcomowebeando.com la idea era ponerlos a funcionar, y tener funcionando los host con sus nombres normales como www.trhex.com , www.linuxcomowebeando , ftp.trhex.com, etc, etc ,etc.


3.2.-Configuracion

Para lograr nuestrro cometido conseguimos IP publicos en un numero de 3 unidades, 200.60.90.235 , 200.60.90.236 , 200.60.54.65 .


Necesitamos configurar en proveedor de dominios, es decir quien nos vendio los dominios ( www.solo10.com ) los name servers, es decir los nombres de dominio y sys respectivos IP que seran al final nuestros propios servidores.

ns1.trhex.com ---> 200.60.90.235

ns2.trhex.com ---> 200.60.
90.236

esos dos seran nuestros servidores de dominio. la siguiente imagen ilustra mejor el tema.




como ven asignamos los name server nuestros, los que iremos a crear



este es el primer paso.


Seguido manipulamos los archivos de configuracion.


/etc/named.conf

/var/named/*


3.2.-/etc/named.conf





include "/etc/named.custom";


include "/etc/rndc.key";


zone "0.0.127.in-addr.arpa" {

type master;

file "/var/named/0.0.127.in-addr.arpa";

};


zone "90.60.200.in-addr.arpa" {

type master;

file "/var/named/90.60.200.in-addr.arpa";

};


zone "54.60.200.in-addr.arpa" {

type master;

file "/var/named/54.60.200.in-addr.arpa";

};


zone "trhex.com" {

type master;

file "/var/named/trhex.com.zone";

allow-query { any; };

allow-transfer { slaves; }; #Permite transferir a slaves(200.60.54.65)

};


zone "linuxcomowebeando.com" {

type master;

file "linuxcomowebeando.com.zone";

allow-query { any; };

allow-transfer { slaves; }; #Permite transferir a slaves(200.60.54.65)

};


#XXXXXXXX A C L XXXXXXXXXXXX


acl "slaves" {

200.60.54.65;

}


#=================FIN DE ARCHIVO =================


zone "0.0.127.in-addr.arpa" {

type master;

file "/var/named/0.0.127.in-addr.arpa";

};



Para todas aquellas lineas parecidas a esta:

zone "0.0.127.in-addr.arpa" {

zone--->
especifica que es una zona, seguido de

"0.0.127.in-addr.arpa"---> especidica el nombre de la zona (recuerde encerralas entre comillas)

{ ---> abre la llave para colocar dentro las definiciones de zona

} ---> cierra la llave de la definicion de zona


Para todas aquellas lineas parecidas a esta:

type master;

type
---> palabra clave tipo

master; ---> especifica que es del tipo primario o maestro, el servidor de dominios tambien pued ser slave


zone "0.0.127.in-addr.arpa" {

type master;

file "0.0.127.in-addr.arpa";

};


Para todas aquellas lineas parecidas a esta:

file "/var/named/0.0.127.in-addr.arpa";

file
---> palabra clave archivo [y ubicacion]

"/var/named/0.0.127.in-addr.arpa"; ---> especifica la ubicacion y nombre del archivo para la zona


nota.- no se olvide las comillas y del punto y coma


zone "trhex.com" { ---> explicado

type master;
---> explicado

file "/var/named/trhex.com.zone";
---> explicado

allow-query { any; };



};


zone "trhex.com" { ---> explicado

type master;
---> explicado

file "/var/named/trhex.com.zone";
---> explicado

allow-query { any; }; ---> Permitir consultas de dominio a todos del ingles any

allow-transfer { slaves; }; ---> Permitir transferir las zonas al ACL llamado slaves


Si se fija bien en el /etc/named.conf existe un parrafo al final cono un comentario ACL, este especifica los IPs que seran parte del ACL slaves, que es en realidad el Host qque sera esclavo del maestro, este es unico permitido al cual se le puede transmitir las zonas, allow-transfer { slaves; }; #Permite transferir a slaves(200.60.54.65)


acl "slaves" {

200.60.54.65;

}


nota.- named asi como linux es sencible a las mayusculas y minusculas, esto es importante al momento de hacer los archivos de configuracion y nombrarlos.


3.3.- /var/named/*


En el directorio /var/named se colocan los archivos de zona que se especificaron el el archivo de configuracion /etc/named.conf, por ejemplo tenemos trhex.com.zone




ahora mostramos el archivo de linuxcomowebeando.com



http://www.trhex.com/csharp

sábado, diciembre 18, 2004

Scripts en shell

Shell Scripting

Saludos nuevamente a todos aquellos que andan buscando en la red algo nuevo que aprender.

Me toco aprender shell scripting, asi que me puse a averiguar unas cuantas cosillas.

Lo primero:
Este pequeño manual esta basado en mis experiencias y no pretende ser un manual oficial, pero si te sirve pues mejor =)
Lo segundo:
Estos scripts funcionan en Linux (a los fanaticos del click windows no les servira de nada, quedednse con su click no ma y compren software para hacer mas rico a Moco$oft)
Lo tercero:
estos escript fueron desarrollados en BASH ( Bourne Again Shell ) si es que funcionan en otro interprete de comandos pues no tengo idea, asumo que si, pero por todo el usado hoy en dia es el BASH, asi que para gente normal asumo que va a funcionar, para saber si estas usndo el interprete bash escribe...

echo $SHELL

y si como resultado te sale

/bin/bash

entonces esta bueno, si tienes bash.

Bueno comencemos. ;)

Condiciones:
- Se asume que el usuario lector tiene conocimientos basicos de linux en consola
- Se asume que el usuario lector esta empeñado en aprender asi que cuando no pueda hacer algo porque se equivoco en digitar seguira adelante contra todo, y no se cansara hasta terminar este tutorial.

Un script es un conjunto de lineas con una secuencia logica el cual es interpretado por algun programa manager, este lee cada linea y la reconoce como una sentencia a ejecutar, y si esta linea posee la sintaxis normal estipulada por el programa manger entoncecs la ejecuta, caso contrario te envia un error, porsupuesto te dice cual es el error y en que linea se encuentra, asi que no te vais a desesperar cuando algo no te salga, solo LEE el error, buscalo y enmendalo.
Cuando me refiero a interpretado tambien quiero decir que este programa script no es compilado, es decir no se crea en ningun momento un programa binario que se refiera a nuestro script.

Tenemos algunos lenguajes interpretados populares en el planeta como son
  • PHP ---> paginas web
  • JAVASCRIPT ---> paginas web
  • SIRC ---> script para IRC :)
  • y varios otros.
para crear un script necesitamos un editor simple, yo use el "vi" usa el que desees.

toda linea en un script comienza por el interprete de comando, de la siguiente manera

#!/bin/bash

esto especifica el interprete y su ruta absoluta de donde se encuentra el inteprete.
ojo, no equivocarse aqui de lo cotrrario daria un error aun que el escript este bien hecho.

entonces, nuestro primer script

1.- Hola mundo

creamos un archivo con nombre script1.sh, copiamos ( si usamos "vi": vi script1.sh )

#!/bin/bash
echo "HOLA MUNDO";

salimos y grabamos ( si usamos "vi": presionamos la tecla ESC, luego :wq enter )
ahora lo unico que necesitamos es darle permisos de ejecuacion

chmod a+x script1.sh

ahora solo ejecutamos usando

sh script1.sh

o

./script1.sh

cualquiera de la 2 funciona

2 .- variables
Las variables estan presedidas por el signo $ , solo se especifica el dolar cuando la variable ya posee valor ejemplo

#!/bin/bash
valor="Esta es una variable";
echo $valor;

3.- ejecutando comandos
Los comando de consola son capaces de ser ejecutados aqui, ejemplo

#!/bin/bash
clear;
ls -al;
echo "FFFFFFFFFFFFIIIIIIIIIIIIIIIIIINNNNNNNNNNNNNNNNNN";
ifconfig | mail -s "desde mi script" aehmc@hotmail.com

como puedes ver ejecutamos 4 comandos y todos dentro del script.

4.- Operadores y expersiones

+ Suma
- Resta
/ Division
\* Multiplicacion

Posibles expresiones para condicionales
Para ficheros:
-r Es Verdadero si el fichero existe y se puede leer
-w Es Verdadero si el fichero existe y se puede escribir en el
-x Es Verdadero si el fichero existe y es ejecutable
-f Es Verdadero si el fichero existe
-d Es Verdadero si es un directorio
-s Es Verdadero si el fichero existe y tiene un tamaño mayor que cero.
-b fichero - Verdadero si fichero existe y es un block especial.
-c fichero - Verdadero si fichero existe y es un character special.
-e fichero - Verdadero si fichero existe
-g fichero - Verdadero si fichero existe y es un set-group-id.
-k fichero - Verdadero si fichero tiene su ``sticky'' bit set.
-L fichero - Verdadero si fichero existe y es un symbolic link.
-p fichero - Verdadero si fichero existe y es un named pipe.
-S fichero - Verdadero si fichero existe y es un socket.
-t [fd] - Verdadero si fd está abierto en un terminal. Si fd es omitido, su defecto es 1 (standard output).
-u fichero - Verdadero si fichero existe y su set-user-id bit is set.
-O fichero - Verdadero si fichero existe y es un owned by the effective user id.
-G fichero - Verdadero si fichero existe y es un owned by the effective group id. fichero1 -nt fichero2 - Verdadero si fichero1 es
mas nuevo (according to modification date) que fichero2.
fichero1 -ot fichero2 - Verdadero si fichero1 is mas viejo que fichero2. fichero1
-ef fichero2 - Verdadero si fichero1 y fichero2 tienen el mismo numero de device and inode.
-z string - Verdadero si la longitud de string es 0.
-n string - Verdadero si la longitud de string no es 0.
string1 = string2 - Verdadero si los strings son iguales
string1 != string2 - Verdadero si los strings no son iguales.
! expr - Verdadero si expr es falso.
expr1 -a expr2 - Verdadero si expr1 y expr2 son verdaderos.
expr1 -o expr2 - Verdadero si expr1 o expr2 es verdadero.
arg1 OP arg2 - OP es uno de -eq, -ne, -lt, -le, -gt, or -ge.

4.- estructuras de control
las estrtucturas de control son parte importante dentro de la programacion
nota. los comentarios van precedidos del signo #
otra nota. el nombre de los scripts lo pondre en la segunda linea de cada script

IF

#!/bin/bash
#if1.sh
echo "Inserte un valor";
read valor;
if [ -z $valor ] ;then
echo "La cadena es vacia";
else
echo "El valor ingresado es $valor";
fi

en el ejemplo anterior la linea read lee un valor desde la consola y la recibe como parametro
-z quiere nos devuelve un valor true o false dependiendo si $valor posee algun valor ingresaso desde "read" , si es verdadero, imprime "La cadena es vacia", de lo contrario imprime el valor de la variable valor.

un ejemplo mas.

#!/bin/bash
#if2.sh
fichero=$1
if [ -s $fichero ] ; then
echo "El fichero existe y su contenido es";
echo "...................................";
sleep 3;
cat $fichero;
else
echo "El fichero $fichero no existe o tiene tamano 0 o no se puede leer";
fi

para hacer funcionar este ejemplo ejecute ./if2.sh /etc/fstab
fichero=$1 ---> $1 captura el primer parametro de la linea anterior "./if2.sh /etc/fstab", es decir captura "/etc/fstab" entonces la variable fichero constiene "/etc/fstab"
if [ -s $fichero ] ; then ---> -s es verdadedo si el fichero existe y tiene un tamaño mayor que cero
sleep 3; ----> retarda la ejecucion del script en 3 segundos
cat $fichero; ----> imprime en pantalla el archivo /etc/fstab

otro ejemplo

SELECT CASE

#!/bin/bash
echo "ingrese un numero de dia";
read numero;
case $numero in
1) echo "Lunes";;
2) echo "Martes";;
3) echo "Miercoles";;
4) echo "Jueves";;
5) echo "Viernes";;
6) echo "Sabado";;
7) echo "Domingo";;
*)echo "Opcion no valida";;
esac

Sabemos que el case es como tener una serie de if cosecutivos, en este caso

read numero; ----> lee un valor numerico de dia de la semana
case $numero in ----> evalua la variable $numero en los casos
1) echo "Lunes";; ----> si es 1 entoncecs imprimimos Lunes
2) echo "Martes";; -----> si es 2 entoncecs imprimimos Martes
3) echo "Miercoles";; ----> asi sucesivamente ( fijate bien en los 2 ;; ( puntos y coma))
4) echo "Jueves";;
....
*)echo "Opcion no valida";; ---> evalua si el valor ingresado cualquier otro
esac -----> cierra la intruccion

FOR - WHILE

for
sintaxis
for ; do
senetencia1
senetencia2
senetencian
done


#!/bin/bash
#for.sh
echo "Imprimiendo ";
for num in `seq 1 10`; do
echo "Contado:$num";
done

ojo con el simbolo ---> ` <---- que no es --> ' <---apostrofe ni comilla
for num in `seq 1 10`; do --->
num---> sera la variable contador
`seq 1 10` ---> secuencia desde el 1 hastta el 10

mas ejemplos
tambien se puede hacer for tipo C,

#!/bin/bash
#for2.sh
for i in $(ls);do
echo "item:$i";
done

for i in $(ls);do --->
i ----> es la variable contador que contendra cada item resultante del comando "ls"
$(ls) ----> variable limite de iteracion cuya fuente o valor es el resultado del comando "ls"

while





http://www.trhex.com/csharp

lunes, noviembre 15, 2004

postgresql y .NET

Bien , como estan por alla, la verdad estaba en mis narices pero no me di cuenta el asunto es que no podia conectar .NET con postgresql el problema era que no tenia el llamdo proveedor (del ingles provider) de postgresql y no podia conectarme, encontrre una herramienta que me parecio buena pero, que mal, porque ademas de no tener dinero por ahora la licencia de este programa que me instalaba el soporte para postgresql sobre .NET tenia su costo, saben cuanto? , jejeje nada mas que cerca de $100, en fin asi que desisti de usarlo, chesu, ahora que hago, regreso a mi VB6.0 no mas y ya?, nooooo ta huaman dije, asi que me puse a buscar y buscar y no me di cuenta que lo habia encontrado (el provider y soporte para usar postgresql en .NET), para quienes tengan el mismo problema alli les van las direciones, no voy a ser tan explicito asi que tienen que razonar un poco pe.

Aquí la documentación:
http://gborg.postgresql.org/project/npgsql/cvs/co.php/Npgsql/docs/UserManual.htm

Aquí el proveedor de datos:
http://gborg.postgresql.org/project/npgsql/projdisplay.php

en la documentacion explica ( en la parte final ) como instalar Npgsql.dll, me preguntaba ademas que cosa queria decir con la palabra "gac" y no habia sido mas que un programa que registra librerias, en fin tienes que leerlo. ejemplo

C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\gacutil.exe -i D:\installs\postgreSQL\Npgsql\bin\ms\Npgsql.dll

el otro vinculo es para que te bajes la libreria procura bajarte el aquel que tenga el patron de texto bin ( ya esta compilado y todo eso)

solo tienes que seguir las instrucciones, si de algo te sirve tambien te paso lo que acabo de avanzar, bueno, algo es algo no?

private void pg_connect(string server, int port, string user_id,
string password, string dbname) {
try
{
string pc=";";
string cadena_de_conexion= "Server="+server+pc;
cadena_de_conexion+="Port="+port+pc;
cadena_de_conexion+="User Id="+user_id+pc;
cadena_de_conexion+="Password="+password+pc;
cadena_de_conexion+="Database="+dbname+pc;

MessageBox.Show(cadena_de_conexion);
NpgsqlConnection coneccion = new NpgsqlConnection(cadena_de_conexion);
coneccion.Open();
coneccion.close();

}
catch (Exception pg_exp)
{
MessageBox.Show(pg_exp.Message);
}
}

private void Form1_Load(object sender, System.EventArgs e)
{
pg_connect("192.168.1.2",5432,"augusto","estaesmicontraseñajejeje","inter");
//pp();
}


este pequeño block es para que aquellos que como yo tuvieron ese problema.

nos vemos... y recuerden que.

con la misma bara que mides.... seras medido.

http://www.trhex.com/csharp

domingo, noviembre 14, 2004

Escuchar el puerto 5432 en postgresql

Holas masrcianos, esta es una pequeña guia para que vyan viendo a quienes les interese algo dee postgreSQL

no puedes conectrate a postgresql?
Bien por defecto postgresql no escucha TCP en el puertyo 5432, asi que tienes que hacer unas cunatas manipulaciones en la configuracion, te explico...

ve a
cd /var/lib/pgsql/data/
ediata el archivo postgresql.conf y fijate uan de las lineas que coincida con lo siguiente

tcpip_socket=true

si te fijas le saque el comentario y le puse true ( verdadero pe papa)

casi listo, ahora edita pg_hba.conf y le agrgas la linea donde corresponda lo siguiente( para mi caso es como sigue, para tu caso acomodale pe)

# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD


host all all 192.168.1.1 255.255.255.255 trust


ese ip es mi maquina, y esta linea espara que me acepte conexiones, si no coloco esta linea, el server postgresql me manda a volar, asi que no te olvides de colocar eso, ahora solo te queda reinciar tu servicio, no tengo la mas minima idea de cual sera tu distro pero el mio es whitebox(variante de RedHat :P ) y es

service postgres restart

ahora fijate, VOILA!!! ya tienes en escucha el 5432 perteneciente a postgresql.

bueno espero haberte ayudado pe, chau y haber si me comentas pe algo, toy ahuesao aqui y tengop que hacer mi chis de una vez( toy que me me cag... de sueño).

=)
http://www.trhex.com/csharp

php5 (5.0.2) apache (2.0.52)

Instalar php5 (5.0.2) y apache2 (2.0.52)

Este documento esta basado en la experiencia del autor y no pretende ser un documento ofical de instalacion, aunque este documento trata de ser lo mas generico posible, la distribucion usada es WhiteBox Enterprise, si Ud. usa RedHat o fedora es posible que funcione, mas no lo he probado, pero al final Linux sera siempre Linux, repito es un documento que trata de ser lo mas generico posible sin apegarse a ninguna distro.
La idea es tener un PHP 5.0.2 y un apache en este caso el 2.0.52

1.- Obtener las fuentes de sus respectivosPHP5
http://br.php.net/distributions/php-5.0.2.tar.gz
APACHE
http://www.ibiblio.org/pub/mirrors/apache/httpd/httpd-2.0.52.tar.gz
Porsupuesto estos son sus mirror respectivos, si el vinculo falla entonces pruebe las paginas oficiales de PHP y APACHE y bajelo http://www.php.net/ y www.apache.org

2.- Descomprimir .- asumiendo que colocamos los archivos *.gz en el directorio /tmp entonces hacemos

cd /tmp gunzip -c php-5.0.2.tar.tar tar xvf -gunzip -c httpd-2.0.52.tar.gz tar xvf -

3.- makear Apache y compilar, nos ubicamos en el directorio de Apache y lo makeamos :P

cd httpd-2.0.52/
./configure --enable-so
make
make install

hasta aqui deberemos tener ya instalado un apache 2.0.52, para comprobar utilce

/usr/local/apache2/bin/apachectl start

para comprobar si funciona, lo puede hacer de 2 formas, uno.- haciendo http://127.0.0.1/y debera de ver la pagina de apache, la otra forma es verficar el puerto 80 de nuestra maquina, ejecutando comandos en el shell (jamas se olvide de su shell =)

netstat -ant

tiene que ver un linea parecida a estatcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
si tiene dudas ejecute el siguiente comando

netstat -ant awk | '/0.0.0.0:80/{print $0}'

ahora vera solamente la siguiente linea, si no la ve repita el paso 3

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN

bien, detenga apache mientras instalamos php5

/usr/local/apache2/bin/apachectl stop

4.- makear php y compilar, nos ubicamos en el directorio de php y lo makeamos

cd ../php-5.0.2
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-zlib --with-libxml --with-gd --with-ttf --with-openssl-dir --with-pgsql --enable-sockets --enable-gd-native-ttf --with-freetype-dir
make
make install

para poder ver mas configuraciones del ./configure ejecute

./configure --help

si le da algun error mientrras ejecuta ./configure lea el error, aunque a veces es complicado leer ese tipo de errores, es muy posible a que el error sea debido a que no tiene instalado el paquete que intenta añadir al soporte php, entonces quietelo, por ejemplo en mi caso no tenia instaldo ni configrado varias opciones de la siguiente linea y las tuve que reitirar observa ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-zlib --with-libxml --with-gd --with-ttf --with-openssl-dir --with-msql --with-custom-odbc --with-unixodbc --with-pgsql --enable-sockets --enable-gd-native-ttf --with-freetype-dir, advertido quedas

5.- Ubicar el php.ini en su lugar

cp php.ini-dist /usr/local/lib/php.ini

si tiene que configurar algo en php.ini, hagalo despues ok?

6.- Asegurarse de que Apache carga el modulo de php5 y de que en el
archivo /usr/local/apache2/conf/httpd.conf existe la linea (puede hacerlo utilizando el editor vi o cualquier opro editor de texto, no explicamos el manejo de vi porque no es el objetivo de este documento)

LoadModule php5_module modules/libphp5.so -----> esta linea permite que apache2 carge el modulo de php5

AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps

la 3ra linea carga la extencion php y la phtml
la 4ta linea permite ver el codigo php utilizando esa extencion

si no tiene estas lineas agregelas tal como se ve (busquelas bien, asegurese de no repetir lineas en el httpd.conf, porque podria trraerle complicaciones al momento de inicar el servicio)

7..- VOILA!!! ya tiene instalado php5 y apache2, ejecute

/usr/local/apache2/bin/apachectl start

ya deberia verlo funcionando, como pequeño ejemplocree un archivo info.php dentro del directorio/usr/local/apache2/htdocsdentro del archivo coloque el siguiente codigo



ahora ejecute http://127.0.0.1/info.php y vera la configuracion de php y su espectiva configuracion



bueno, hasta alli les acompaño, nos vemos, jejeje, cualquier comentario haganmelo saber porfa, a augustin_hm@yahoo.es
VIVA LINUX !!!

http://www.trhex.com/csharp