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
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
Scripts en shell
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
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
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