martes, 8 de diciembre de 2009

Acceder usuario Administrador en Vista o Windows 7.

Simplemente ejecutamos msdos en modo administrador. Para abrirlo tenemos dos opciones:
  • Buscar por windows cmd.
  • o en Inicio > Todos los programas > Accesorios > Simbolo del sistema.
En cualquier caso, antes de abrirlo le damos con el segundo boton al icono y abrir en modo administrador.

Y ejecutamos el siguiente comando, para activarlo. Con ello conseguiremos que salga el icono del administrador al arrancar windows:

net user administrador /active:yes


Y el siguiente para desactivarlo.

net user administrador /active:no


Si te da el siguiente error "Error del sistema 5. Acceso denegado", es que has abierto el programa de linea de comandos sin permisos de administrador.

SQLSERVER error 26: -Error al buscar el servidor o instancia especificado

Si al intentar iniciar sesión con nombreEquipo\SQLEXPRESS da el siguiente error:




Si tienes instalado el SQLSERVER EXPRESS con Visual Estudio, Prueba a instalarte SQLSERVER DEVELOPER 2005.

Y prueba a iniciar sesión sin escribir SQLEXPRESS.




Si continua apareciendo el mismo error, prueba los siguientes casos:

ACTUALIZA EL SQLSERVER PARA QUE FUNCIONE CON VISTA.

Microsoft® Visual Studio® 2005 Express Editions Service Pack 1

Visual Studio 2005 Service Pack 1 Update for Windows Vista

Esta es la página general.
http://msdn.microsoft.com/en-us/vstudio/aa948853.aspx?lcid=3082

DAR PERMISOS AL USUARIO DEL VISTA.

Inicio > Todos los programas > SQL Server 2005 > Herramientas de configuración > Configuración de superficie de SQLSERVER.

Pasar los usuarios de windows que teneis a la izda, pasarlos a la derecha.



ACTIVAR CONEXIONES REMOTAS

Inicio > Todos los programas > SQL Server 2005 > Herramientas de configuración > Configuración de superficie de SQLSERVER > Dentro de esa pantalla cliqueais en la opción "Configuración de superficies para servicios y conexiones".


Y activais lo siguiente. Para que se tengan en cuenta los cambios deberas matar los procesos o reiniciar el ordenador.





FIREWALL DE WINDOWS, PORQUE NO?

Inicio > Panel de Control > y en el apartado de Seguridad pulsar sobre "Dejar pasar un programa a través del firewall"

En la siguiente ventana en Agregar programa y en la siguiente en examinar y seleccionais la siguiente ruta:
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe



Y luego fijaros si en la ventana de "en medio" esta activado el servidor de sqlserver.

Con todo esto, debereis intentar conectaros poniendo como nombre del servidor sólo el nombre del equipo y debería funcionar ;).


miércoles, 14 de octubre de 2009

Crear base de datos en mysql (debian)

Para crear una base de datos en mysql.

Abrimos la consola y escribimos mysql (entrará dentro del mysql en línea de comandos).

debian:/home/alumno# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.0.32-Debian_7etch11-log Debian etch distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>


Después indicamos el archivo.sql donde se encuentra la sintaxis de nuestra base de datos. Ojo! en ese archivo si no creais la base de datos internamente tendreis que hacerlo antes de lanzarlo, y se hace asi:

mysql> create database nombre;
mysql> use nombre;

mysql> \. /home/alumno/Desktop/BD1CreateBD.sql

Y se abrá creado la base de datos, con el comando show tables, nos tiene que mostrar todas las tablas de la base de datos.

mysql> show tables;
+-----------------------+
| Tables_in_proveedores |
+-----------------------+
| inventario |
| linped |
| pedido |
| pieza |
| preciosum |
| vendedor |
+-----------------------+
6 rows in set (0.00 sec)

Dev C++ 4.9.9.1 Linker error undefined references to '__cpu_features_init'

Si al compilar un programa en Dev C++ os aparece el siguiente error
Linker error undefined references to '__cpu_features_init'


Se soluciona de la siguiente forma:

Herramientas > Opciones del compilador > Directorios (Sección Bibliotecas) - Eliminar la entrada que hay a esa biblioteca.

Probamos a compilar un programa en C.

#include < stdio.h >
#include < stdlib.h >

int main()
{
printf("Soy un programador de primera \n\n");
system("PAUSE");
return 0;
}

jueves, 3 de septiembre de 2009

Las firmas siguientes no se pudieron verificar porque su llave pública no está disponible: NO_PUBKEY 9AA38DCD55BE302B

Cuando al actualizar los repositorios con sudo aptitude update, nos salen los siguientes errores:

W: GPG error: http://security.debian.org etch/updates Release: Las firmas siguientes no se pudieron verificar porque su llave pública no está disponible: NO_PUBKEY 9AA38DCD55BE302B
W: GPG error: http://ftp.fr.debian.org etch Release: Las firmas siguientes no se pudieron verificar porque su llave pública no está disponible: NO_PUBKEY 9AA38DCD55BE302B
W: Tal vez quiera ejecutar 'apt-get update' para corregir estos problemas

La solución es la siguiente: Escribir por consola las siguientes instrucciones.

debian:/home/alumno# gpg --keyserver wwwkeys.eu.pgp.net --recv-keys 9AA38DCD55BE302B
debian:/home/alumno# gpg --armor --export 9AA38DCD55BE302B | sudo apt-key add -
OK
debian:/home/alumno# aptitude update

lunes, 31 de agosto de 2009

Patrones, en powert point e Impress

Para las diapositivas de powert point e impress podemos diseñar un patrón, que son unas características comunes para todas las transparencias. En ella se puede utilizar texto y gráficos así como el fondo y todo...

Para diseñar el patron con Powert point nos vamos a:

Ver > Patrón > Patrón de Diapositivas

Para diseñar el patron con Impress nos vamos a:

Ver > Fondo > Patrón de Diapositivas o Patrón de notas

sábado, 29 de agosto de 2009

Cambiar el autor de los documentos de OpenOffice.

Para cambiar el autor de cualquier documento de OpenOffice, abrimos cualquiera de sus programas y nos situamos en HERRAMIENTAS > OPCIONES (Ficha: Datos del usuario)
y ahí mismo veremos la opción para cambiar el nombre y apellidos.

Al cambiarlo una vez, se cambia para todas las aplicaciones de openoffice.

viernes, 14 de agosto de 2009

Cambiar el idioma a windows vista.

Toda la információn utilizada para cambiar el idioma en windows vista la he sacado de aquí: http://www.froggie.sk/es/download.html

Aqui expondré un pequeño resumen de los pasos que yo realicé.

DESCARGA PAQUETE MUI
1.-Descargarse un paquete MUI. Para ello tenemos que tener encuenta 2 cosas:
Tipo de Sistema : 32 bits o 64 bits.
Service Pack : SP1, SP2, o RTM (si no tiene SP).

Para ello os situais sobre INICIO > PANEL DE CONTROL > SISTEMA y podreis comprobar estas características, si no especifica nada de SP1 y SP2 es que estais en el caso de RTM.

Para la descarga del paquete os dirigis a la página siguiente, y escogeis el MUI que se ajusta a vuestro sistema operativo.
http://www.froggie.sk/es/download.html

Ojo: Una vez descargado no deis doble click sobre el archivo que os habeis, que lo utilizaremos con el siguiente programa que describo en el punto2.

DESCARGA VISTALIZATOR
2.- Para la instalación del idioma, hay que descargarse un programa de apoyo, el Vistalizator.
http://www.froggie.sk/download/Vistalizator.exe

3.- En la siguiente dirección se encuentra las capturas de como utilizar el programa Vistalizator con el archivo MUI que nos hemos descargado en el punto 1.
http://www.froggie.sk/es/screens.html

4.- Reiniciar el equipo, y se habrá cambiado el idioma ;).

martes, 3 de marzo de 2009

mysql - ERROR 1442 (HY000) - trigger recursivo

ERROR MYSQL
ERROR 1442 (HY000): Can't update table 'docencia' in storedfunction/trigger because it is already used by statement which invokedthis stored function/trigger.

Esto se debe a que si se crease el trigger se harian llamadas recursivas infinitas.

Por ejemplo.
+---------+--------+---------+
cod_pro cod_asp creditos
+---------+--------+---------+
1 1 10
+---------+--------+---------+

Si quiero hacer que si se modifican los creditos, vaya a la tablaprofesores (cod_pro) y le modifique el número de créditos que imparte.

Con un trigger con mysql, no podría hacerlo porque, cada vez que yolance un update, se lanza el trigger y dentro del trigger hay unupdate sobre la misma tabla, por lo que también se lanzaría de nuevoel trigger...y así sucesivamente.

Ejemplo de trigger
delimiter //
CREATE TRIGGER total_creditos3
AFTER UPDATE ON docencia
FOR EACH ROW
BEGIN
IF OLD.creditos != NEW.creditos then
UPDATE docencia SET creditos=creditos + (new.creditos -old.creditos)
wherecod_pro=old.cod_pro;
END IF;
END;//
delimiter ;

lunes, 16 de febrero de 2009

perl-ldap

Si queremos utilizar los script de perl para ldap. Debemos instalar los siguientes paquetes.

libnet-ph-perl
libdbd-ldap-perl

Una vez instalado, podemos almacenar nuestra carpeta perl_ldap en cualqueir parte del disco duro
y ejecutarla.

Por ejemplo:

debian:/isp/openldap/ldap_perl# ./ldap_management_ies.sh ADD user54 domain usuario54 apellido54 user54
uid= user54,ou=Alumnos, dc=iesperemaria, dc=comdebian:/isp/openldap/ldap_perl#

IO::Socket::INET: connect: Conexión rehusada at ./ldap_add.pl line 70,

Si al intentar introducir una entrada desde perl, en el árbol de directorios de ldap, sale el siguiente error:

debian:/isp/openldap/ldap_perl# ./ldap_management_ies.sh ADD user54 domain usuario54 apellido54 user54
IO::Socket::INET: connect: Conexión rehusada at ./ldap_add.pl line 70, <DATA> line 225.
uid= user54,ou=Alumnos, dc=iesperemaria, dc=comsystem ./ldap_add.pl user54 domain usuario54 apellido54 user54 failed: 28416 at ./ldap_management_ies.sh line 30.

Posiblemente es que no hayas iniciado el servicio ldap.

Comprobamos si está iniciado ( y comprobamos que no).

debian:/isp/openldap/ldap_perl# ps -ef | grep slapd
root 9581 9195 0 14:09 pts/1 00:00:00 grep slapd


Arrancamos el servicio, bien desde /etc/init.d.... o si lo hemos instalado desde los fuentes, de la siguiente forma:
debian:/isp/openldap# /isp/openldap/libexec/slapd -f /isp/openldap/etc/openldap/slapd.conf

Si probamos a insertar de nuevo, vemos que nos deja:
debian:/isp/openldap/ldap_perl# ./ldap_management_ies.sh ADD user54 domain usuario54 apellido54 user54
uid= user54,ou=Alumnos, dc=iesperemaria, dc=comdebian:/isp/openldap/ldap_perl#



Instalar .bin en Linux

Me situo en la carpeta donde se encuentra el archivo.bin
#chmod a+x archivo.bin
# ./ archivo.bin

viernes, 13 de febrero de 2009

ldap-utils

Crear la raíz del árbol
Establecemos tanto la raíz dc=iesperemaria,dc=com, como el administrador de LDAP, Manager.
Tanto la raíz como el administrador deben estar definidos en slapd.conf

---archivo inicial.ldif

dn: dc=iesperemaria, dc=com
objectclass: dcObject
objectclass: organization
o: IESPEREMARIA
dc: iesperemaria

dn: cn=Manager,dc=iesperemaria, dc=com
objectclass: organizationalRole
cn:Manager

---- fin archivo inicial.ldif

ldapadd ­x ­D "cn=Manager,dc=iesperemaria,dc=com" ­W ­f inicial.ldif


Crear las distintas entradas.
Creamos por ejemplo una organización que sea alumnos, y dentro de ella un alumno.
Hay que dejar una linea en blanco entre cada entrada del árbol

--- archivo nodos.ldif
dn:ou=Alumnos,dc=iesperemaria,dc=com
objectClass: organizationalUnit
ou: Alumnos

dn: uid=alu001 ,ou=Alumnos,dc=iesperemaria,dc=com
objectClass: person
objectClass: inetOrgPerson
objectClass: organizationalPerson
uid: alu001
cn: Alumno 001
givenname: Alumno
sn: 001
mobileTelephoneNumber: 666666666
mail: alu001@gmail.com

----fin nodos.ldif

ldapadd ­x ­D "cn=Manager,dc=iesperemaria,dc=com" ­W ­f nodos.ldif

LDAPMODIFY - AÑADIR ATRIBUTO / MODIFICAR VALOR ATRIBUTO / ELIMINAR ATRIBUTO
Por ejemplo:
1.-Modificar el email
2.-Añadir el atributo código postal.
3.-Eliminar el teléfono.

Me creo un archivo modificar.ldif que contiene:
-----
dn: uid=alu001 ,ou=Alumnos,dc=iesperemaria,dc=com
changetype: modify
replace: mail
mail: alu@gmail.com

dn: uid=alu001 ,ou=Alumnos,dc=iesperemaria,dc=com
changetype: modify
add: postalCode
postalCode: 03503

dn: uid=alu001 ,ou=Alumnos,dc=iesperemaria,dc=com
changetype: modify
delete: mobile
------

debian:/isp/openldap/bin# ./ldapmodify -x -D "cn=Manager,dc=iesperemaria, dc=com" -W -f modificar.ldif
Enter LDAP Password:
modifying entry "uid=acoloma,ou=Profesores,dc=iesperemaria,dc=com"


Para comprobar que las modificaciones se han echo podemos ejecutar:
debian:/isp/openldap/sbin# ./slapcat

LDAPMODIFY - MODIFICAR EL RDN

----rdn.ldif
dn:
uid=alu001,ou=Profesores,dc=iesperemaria,dc=com
changetype: modrdn
newrdn:
uid=Alumno 001
deleteoldrdn:1
----

La opción deleteoldrdn:
Si = 0 --> mantiene la entrada anterior.
Si = 1 --> modifica la entrada.


debian:/isp/openldap/bin# ./ldapmodify -x -D "cn=Manager,dc=iesperemaria, dc=com" -W -f rdn.ldif

LDAPDELETE
Elimina una entrada del directorio.

debian:/isp/openldap/bin# ./ldapdelete -W -D "cn=Manager,dc=iesperemaria,dc=com" uid=alu002,ou=Alumnos,dc=iesperemaria,dc=com
Enter LDAP Password:

Si ejecutamos slapcat comprobamos que el alumno alu002 ha sido eliminado del árbol de directorio.




ldap_bind: Invalid credentials (49)

debian:/isp/openldap/bin# ./ldapadd -x -D "cn=Manager, dc=iesperemaria,dc=com" -W -f personas.ldif
Enter LDAP Password:
ldap_bind: Invalid credentials (49)

Posiblemente sea error de la contraseña. Debes configurar en /etc/openldap/slapd.conf lo siguiente:

#Con esto, estoy asignado al usuario Manager como administrador. (ese usuario no tiene porque existir en el sistema Linux, le pongo ese nombre como otro cualquiera).
rootdn "cn=Manager,dc=iesperemaria,dc=com"

#Luego nos faltaría asignarle una contraseña.
#PRIMERA OPCIÓN: ASIGNARLE UNA CONTRASEÑA PLANA.
#Esto quiero decir que la contraseña será la palabra secret
rootpw secret

#SEGUNDA OPCION: ASIGNALE CONTRASEÑA ENCRIPTADA.
#con pasword-hash le indico el tipo de encriptación
#con rootpw y el tipo de encriptación, le añado la clave encriptada.
password-hash {MD5}
rootpw {MD5}5XJsaCEF5IJSIJkJjIbXBA==

------- /Fin de modificaciones en slapd.conf

Para gener una clave encriptada hacemos:

/usr/sbin/slappasswd -h {tipo de encriptacion}

Por ejemplo:
debian:/isp/openldap/sbin# ./slappasswd -h {MD5}
New password:
Re-enter new password:
{MD5}5XJsaCEF5IJSIJkJjIbXBA==


Este es la contraseña encriptada que añadiremos al slapd.conf


Puedes ver los archivos de logs para comprobar los errores
cat /var/log/messages
cat /var/log/syslog

ldap_add: Server is unwilling to perform (53)

Comprueba el archivo .ldif, que posiblemente esté indicando mal al árbol de directorios.
Fijate si, dn: dc=iesperemaria, dc=com, se corresponde con el dc del /etc/openldap/ slapd.conf

Puedes ver los archivos de logs para comprobar los errores
cat /var/log/messages
cat /var/log/syslog

miércoles, 4 de febrero de 2009

Restricción CHECK

USO CHECK: Restringir los valores que puede tomar un campo en concreto de la tabla.

Ejemplos:
check (id between 1 and 20) : Que el id solo pueda tomar valores entre 1 y 20
check (turno in ('Mañanas','Tardes')): Que el campo turno solo pueda tomar valores Mañanas o Tardes.

Ejemplo práctico POSTGRESQL:

#Creamos una tabla
postgres=# create table prucheck(
postgres(# id bigint,
postgres(# nombre varchar(20),
postgres(# check (id between 1 and 20),
postgres(# check (nombre in ('Lunes','Martes')));
CREATE TABLE

Probamos a insertar valores válidos
postgres=# insert into prucheck (id, nombre) values (1,'Lunes');
INSERT 29781 1

Probamos a insertar valores no válidos
postgres=# insert into prucheck (id, nombre) values (21,'Martes');
ERROR: el nuevo registro para la relación "prucheck" viola la restricción check "$1"

Ejemplo práctico MYSQL:
CREATE TABLE `tablacheck3` (
`id` INT NOT NULL,
`semana` VARCHAR(20) NOT NULL,
check (id between 1 and 20),
check (semana in ('Lunes','Martes'))
)
ENGINE = myisam;

PERO NO FUNCIONA EL CHECK--> deja insertar valores que no cumplen la restricción.

INSERT INTO `tablacheck3` ( `id` , `semana` )
VALUES (
'1', '''Lunes'''
), (
'221', '''hola'''
);


ANOTACIÓN: Esta probado bajo myisam, posiblemente con innodb si que se cumpla la restricción.

MYSQL no cumple las claves ajenas!!.

EJEMPLO.

Tenemos la tabla cantantes que tiene como clave primaria titulo y cantante, y como clave ajena cantante.

mysql> describe cd;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| titulo | varchar(30) | NO | PRI | | |
| cantante | int(11) | NO | PRI | | |
| coste | int(11) | YES | | NULL | |
| copias | int(11) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+

INSERCIÓN QUE CUMPLA LA RESTRICCIÓN.

Si realizamos una insercion de un cantante que existe en la tabla de cantantes nos deja --> cumple la restricción de integridad.

mysql> insert into cd (titulo,cantante) values ('kk',10);
Query OK, 1 row affected (0.33 sec)

INSERCIÓN QUE NO CUMPLA LA RESTRICCIÓN.

Si realizamos una inserción de un cantante que no existe en la tabla de cantantes, nos debería decir que viola la restriccion de integridad.

mysql> insert into cd (titulo,cantante) values ('kk',103233);
Query OK, 1 row affected (0.00 sec)

PROBLEMA

No nos sirve de nada mantener una base de datos, que no nos asegura las relaciones entre tablas.
No nos va a permitir tener una base de datos consistente.


SOLUCIÓN.

Debemos crear las tablas como innoDB.
Ejemplo:

CREATE TABLE cd(
titulo varchar(30) NOT NULL,
cantante int NOT NULL,
coste int,
copias int,
PRIMARY KEY (titulo, cantante),
FOREIGN KEY(cantante) REFERENCES artista(cif) ON UPDATE CASCADE
)TYPE=INNODB;


Si realizamos una insercción de un cantante que no existe sobre la tabla cantantes, nos dará un error.

mysql> insert into cd (titulo,cantante) values ("titulo 1", 987);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`musicainnodb/cd`, CONSTRAINT `cd_ibfk_1` FOREIGN KEY (`cantante`) REFERENCES `artista` (`cif`) ON UPDATE CASCADE)



CONCLUSION

Como puede ser que el motor de almacenamiento por defecto de MySQL, sea MyISAM, y este no soporte ninguna regla de integridad referencial???..

No tiene sentido que por defecto no se cumpla ni las claves ajenas, y ademas! que me deje meter como clave primaria un vacio!!.

psql: FATAL: la autentificación Ident falló para el usuario

ERROR AL CREAR USUARIO E INTENTAR ACCEDER A POSTGRESQL
Si creamos un usuario en postgreSQL e intenamos acceder, nos da el siguiente error:

//Creamos el usuario dentro de psql (también podriamos crearlo fuera)
postgres=# create user usuario22 with password 'usuario22';
CREATE ROLE

//Salimos de psql, e intentamos entrar.
El -W es para que nos pida la contraseña.
El -d es para especificarle el nombre de la base de datos.

postgres@debian:/home/dani$ psql -U usuario22 -W -d alumnos;
Contraseña para usuario usuario22:

2 tipos de errores

//ERROR 1

psql: FATAL: la autentificación Ident falló para el usuario «usuario22»;

Este error es porque no existe ningun usuario en el archivo pg_hba.conf

También puede ser porque el método de cifrado de contraseña es erróneo.

//ERROR 2

psql: FATAL: No se encuentra pg_hba.conf o el archivo es incorrecto
HINT: Vea el registro del servidor para obtener más detalles.

Este error es porque aún existiendo usuario en pg_hba.conf no se encuentra usuario22.


SOLUCION

Debemos editar el pg_hba.conf

debian:/home/dani# gedit /etc/postgresql/8.1/main/pg_hba.conf

Y en él, debemos incluir a los usuarios que queramos que puedan acceder desde psql.

local all user22 md5
# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all user22 127.0.0.1/32 md5

Reiniciamos el servicio y debe funcionar!.
debian:/home/dani# /etc/init.d/postgresql-8.1 restart

INTENTAMOS ACCEDER

postgres@debian:/etc/postgresql/8.1/main$ psql -U user22 -W -d alumnos;
Contraseña para usuario user1:
Bienvenido a psql 8.1.11, la terminal interactiva de PostgreSQL.

Digite: \copyright para ver los términos de distribución
\h para ayuda de comandos SQL
\? para ayuda de comandos psql
\g o or termine con punto y coma para ejecutar una consulta
\q para salir

alumnos=#

viernes, 16 de enero de 2009

Autoincrementable en PostgreSQL

Solo tenemos que crear el campo que queramos que se autoincremente como Serial.

Ejemplo:

CREATE TABLE foo (
id serial,
name character varying(8) NOT NULL
);

Si insertamos 3 tuplas:

postgres=# insert into foo(name) values ('a');
INSERT 21591 1
postgres=# insert into foo(name) values ('b');
INSERT 21592 1
postgres=# insert into foo(name) values ('c');
INSERT 21593 1
postgres=# select * from foo;
id | name
----+------
1 | a
2 | b
3 | c

Comprobamos que se autoincrementa sola!.

Si consultamos la tabla foo, vemos que postgreSql genera el código interno para que se autoincremente.

postgres-# \d foo
Tabla "public.foo"
Columna | Tipo | Modificadores
---------+-------------------+-----------------------------------------------------
id | integer | not null default nextval('public.foo_id_seq'::text)
name | character varying |


Comprobado sobre postgreSQL 7.4
palyginti kainas