Tablas importantes en SQL Server

System Table
Description

sysforeignkeys
Resides in each database and stores information about the foreign keys in that database.

sysindexes
Contains a row for each index within a database. Specifies the table with which the index is associated, whether its clustered or nonclustered, the number of keys, and so on.

sysindexkeys
Stores information on the keys or columns in an index. Specifies the table ID, the index ID, the column, and the position of the column in the index.

sysobjects
Contains a row for each database object such as a user table, system table, check constraint, default constraint, foreign key, log, stored procedure, primary key, trigger, and new or extended stored procedure. This table is the hub of all the system tables and provides information about these objects, including name, object ID, the owner object, and creation date.

syspermissions
Stores information about the permissions granted and denied to users, groups, and roles for the objects in a database.

systypes
Contains a row for each datatype in the current database. Datatypes detailed in this table include the SQL Server standard datatypes as well as user-defined datatypes.

syscolumns
Contains a row for each column in a table or each parameter in a stored procedure. This table maintains the specifics for each column, including name, datatype, length, precision, scale, and nullability. The ID field specifies the table or stored procedure with which the column or parameter is associated.

syscomments
Contains a row for each stored procedure, view, rule, default, trigger, or check constraint. The rows in this table store details about each of these objects, including the actual text of the object.

sysconstraints
Each database has a sysconstraints table with a row for each constraint. Specifies the table and column with which the constraint is associated as well as the type of constraint: primary key, foreign key, unique constraint, check constraint, or default constraint.

sysdatabases
Contains information on each database residing on the server and is part of the master system database. Includes the database name, ID, status, the database owner, and the date it was created.

sysdepends
Contains object dependencies for views, stored procedures, and triggers in the current database.

Database Link y Drop Column

DATABASE LINK: ————– Como trabajando, es como se aprende, pues he aprendido cosas … jejeje. Bueno lo primero y muy util : crear una conexion entre dos bases de datos oracle. En mi caso me hacia falta generar resultados en una base de datos Oracle ‘tirando de otra base de datos’. Para ello tienes que tener claro una cosa: si te quieres conectar a otra base de datos la m�quina servidora que alberga la conexion, debe tener en el tnsnames.ora el servicio/alias de la base de datos a conectarse. Me explico. Si tenemos base de datos A, base de datos B a la que me quiero conectar. La maquina en la que esta A debe de tener la instancia, el servicio o el alias ( como se llame eso que se hace con el Net Easy Configuration ) que apunte a B. Una vez hecho esto mandanmos esta sentecia por sql CREATE [PUBLIC] DATABASE LINK Nombre_Link CONNECTO TO UsuarioB IDENTIFIED BY passwordB USING ‘InstanciaB’; Lo de public es opcional. Nombre_link : El nombre que uno quiera UsuarioB,PasswordB: Usuario y password de un usuario real de la base de datos B a la que nos conectaremos. ‘InstanciaB’ : Nombre del servicio o alias que identifica la conexion a la base de datos B. Una vez hecho esto podemos hacer : SELECT * FROM TABLA@CONEXIONB; Y se hara una select de una tabla de la base de datos de B. Evidentemente esto es mas lento que ejecutarlo en la base de datos original. DROP COLUMN: ———— Lo que siempre se nos ocurre y nunca se puede hacer. Eliminar una columna de una tabla. Pues hasta la version 8i de Oracle esto no se podia hacer. Ahora si y la sintaxis es algo asi como esto: ALTER TABLE Nombre_Tabla DROP COLUMN Nombre_Columna; Otra forma que se usaba antes era hacerse una tabla temporal, pasar los datos a esta tabla temporal y borrar la original

Exportar a Oracle con Access

Manejando peque�as bases de datos con Access, muchas veces es �til trabajar con Oracle por su potencia.

As� que ocurre que nos encontramos con la necesidad de exportar tablas de Access a Oracle.

Para exportar las tablas tenemos que ir una a una, selecionandolas y nos vamos al menu archivo, guardar como o exportar. Seleccionamos en tipo de archivo ODBC y seguidamente el nombre con el que vamos a llamar a la tabla. Seguido seleccionamos un ODBC previamente configurado como nosotros hemos querido y ya est�.

Problema: existe un problema por el cual al exportar guarda los nombres de los campos con comillas en vez de guardarlos de forma normal, por lo que a simple vista parece que est� todo pero no tenemos acceso a los campos. Por lo menos esto sucede con Access 97. Como solucion, crearnos otra tabla dentro de oracle y volcar esos datos con los nombres de columnas correctamente escritos.

Programacion segura en web (2/10/2004)

Programacion Segura
http://www.dwheeler.com/secure-programs/
http://www.isecom.org/projects/spsmm-es.shtml

SQL Injection
http://www.nextgenss.com/papers/advanced_sql_injection.pdf
http://www.nextgenss.com/papers/more_advanced_sql_injection.pdf

http://www.securiteam.com/securityreviews/6H00C1535K.html
http://www.securiteam.com/securityreviews/5TP0J1P6KC.html

Programando PHP seguro
http://www.linuxjournal.com/article.php?sid=6061
http://www.developer.com/lang/article.php/918141
http://www.developer.com/lang/article.php/922871
PHP remote format string overflow vulnerability (Exploit code)
http://www.securiteam.com/exploits/6B00B150MM.html

XSS – Cross Site Scripting, Detection and Prevention
http://www.securiteam.com/securityreviews/6D0030A8KI.html

Password de router Zyxel

Resetear el Router

Este tutorial sirve para akellos q hos hallais cargado el rom, para los q no sepais la configuracion q lleva o hayais olvidado el password

es sencillo pero hay q seguir los pasos tal por su orden

1- Conectamos el cable del la consola al router desde el puerto del PC
2- Ejecutamos el HyperTerminal
3- Configuramos el HyperTerminal a 9600bps, 8N1, y el puerto COM al q hayamos conectado el cable consola
4- Encendemos el router y vemos como se inicia el router en la pantalla del HyperTerminal
5- Tecleamos “Debug mode” cuando veamos en la pantalla el mensaje de “Enter debug mode in 3 secons…”
6- Tecleamos “ATUR3” para empezar la subida
7- Usaremos el Protocolo X-modem para transferir la ROM. Cuando selecciones “ENVIAR” en el menu del HyperTerminal, tenemos q elegir X-Mode en la ventana
8- Despues de terminar la subida pulsamos “ATGO” para resetear el router

ahora tendremos el router puesto de fabrica

con la ip 192.168.1.1

El nombre de usuario: admin
y la contrase�a: 1234

esta informacion esta obtenida de la pagina oficial de zyxel y traducida por FunFrock para www.adslayuda.com

System Error &H80004002 (-2147467262)

Parece ser que este error es otra cagada de microsoft. Como a muchos otros he desintalado y reinstalado para nada.

Este error aparece al ir a a�adir controles, empieza a dar errores y errores y no se puede a�adir ningun control al proyecto.

Para solucionarlo :

desregistrar comcat.dll ( regsvr32 /u comcat.dll )
borrarlo
copiarlo del cd de instalacion
volverlo a registrar ( regsvr32 comcat.dll )

y funciona
para mas informacion a microsoft :

http://support.microsoft.com/default.aspx?scid=kb;EN-US;q183370

Calculo del dia de la semana en Modula 2

(* Calculo del mes usando la congurencia Zeller , mas rapida y menos carga de m�quina *)
MODULE Zeller;
(* Read a list of dates, and determine the day of the week for each.
List is terminated with 0 *)

PROCEDURE WeekDay (D, M, Y : INTEGER) : INTEGER;
(* Returns the Weekday on which a day D of a given month M of a given
year Y falls using Zeller’s Congruence *)
VAR
C : INTEGER (* century (almost) *);
BEGIN
IF ((M > 0) AND (M < 13) AND (D < 32)) THEN
M := (M + 9) MOD 12 + 1;
IF M >= 11 THEN DEC(Y) END (* Regard Jan and Feb as 11,12 of previous year *);
C := Y DIV 100;
Y := Y MOD 100;
RETURN ((26 * M – 2) DIV 10 + D + Y + Y DIV 4 + C DIV 4 – 2 * C + 7777) MOD 7
END;
END WeekDay;

VAR
Day, (* day of interest *)
Month, (* January through December *)
Year : INTEGER (* year of interest *);

BEGIN (* Zeller *)
WriteLn(‘A program for finding the day of the week’);
LOOP
Read(‘Supply Day [0.. 31] (0 stops), Month [1..12], Year ‘, Day);
IF Day = 0 THEN EXIT END;
Read(Month, Year);
Write(Day: 1, ‘/’, Month: 1, ‘/’, Year: 1, ‘ fell on ‘);
CASE WeekDay(Day, Month, Year) OF
| 0 : WriteLn(‘Sunday’)
| 1 : WriteLn(‘Monday’)
| 2 : WriteLn(‘Tuesday’)
| 3 : WriteLn(‘Wednesday’);
| 4 : WriteLn(‘Thursday’)
| 5 : WriteLn(‘Friday’)
| 6 : WriteLn(‘Saturday’);
END
END
END Zeller .

Programacion 1 Sistemas – practica 1 (12/10/2002)

(*****************************************************
*NOMBRE: #Jorge#
*PRIMER APELLIDO: #Senin#
*SEGUNDO APELLIDO: #xxxxxxx#
*DNI : #xxxxxxxxx#
******************************************************)
MODULE PractUno;
FROM InOut IMPORT WriteString, WriteLn , ReadCard ;
CONST
MAXLADO = 20 ;
MINLADO = 1 ;

TYPE
RangoRombo = [MINLADO..MAXLADO];

PROCEDURE PreguntarLado () : CARDINAL ;
(* Pregunta el lado y lo devuelve de tipo cardinal *)
(* Si no es valido devuelve 0 *)
VAR Lado: CARDINAL;

BEGIN

WriteString (“Escriba el valor del lado : “);
ReadCard (Lado);

IF (Lado < MINLADO) OR (Lado > MAXLADO) THEN
Lado := 0;
END;

RETURN Lado;
END PreguntarLado;

PROCEDURE QuePuntoDibujo ( x, z , lado : CARDINAL ) : CHAR ;
CONST
PUNTOSROMBO = 4;
VAR
PuntosRombo: ARRAY [0..PUNTOSROMBO-1] OF CHAR;
caracter : CHAR ;
BEGIN

PuntosRombo[1] := “@”;
PuntosRombo[2] := “.”;
PuntosRombo[3] := “o”;
PuntosRombo[0] := “.”;
caracter := ‘ ‘; (* NO SE PUEDE DEJAR VACIO ” *)

(* Hay que hacer que la figura sea simetrica asi que distinguimos entre
el lado izquierdo y el derecho segun sea igual o mayor del valor
de x con respecto del tama�o de lado *)
IF x <= lado THEN
(* La formula es para contar las posiciones a escribir en la que
el primer punto escrito es 1 , el segundo 2…. asi sucesivamente
Se hace el modulo por que nos da valores de rango 0..Puntosrombo-1
y asi sacamos el caracter a imprimir *)
caracter := PuntosRombo[(x-(lado – z)) MOD PUNTOSROMBO];
ELSIF x > lado THEN
(* Esta formula es lo mismo pero se hace para el lado contrario
con lo cual se realiza al reves dando valores 3 2 1 … *)
caracter := PuntosRombo[ ((z )-(x-lado)) MOD PUNTOSROMBO ];
END;

RETURN caracter;
END QuePuntoDibujo;

PROCEDURE DibujarRombo ( Lado : CARDINAL ) ;
VAR x,y,z,ancho, alto: CARDINAL ;

BEGIN

ancho := Lado; (* el alto y el ancho valen lo mismo *)
alto := Lado;

z:= 1; (* al principio 1 punto *)
(* z lleva el numero de caracteres a rellenar a izquierda y derecha *)

(* Las lineas de alto*)
FOR y:= 1 TO (alto * 2) -1 DO

(* Linea horizontal entera 2*ancho -1 *)
FOR x:= 1 TO (ancho * 2) -1 DO
(*Blancos de la izquierda*)
(* ancho – z es el espacio que queda en blanco *)
IF x <= (ancho – z ) THEN
WriteString (” “);
(*Blancos de la derecha*)
(* (ancho – 1) + z es si supera la parte rellena *)
ELSIF x > ((ancho – 1) + z) THEN
(* WriteString (” “);*)
(* zona a rellenar, el crrector no admite espacios en blanco*)
ELSE
WriteString (QuePuntoDibujo(x,z,Lado));

END;
END;
(* fin lineas horizontales *)

WriteLn;

(* LA PRIMERA VALE 1 Y PARTIR DE LA PRIMERA EMPIEZA A CONTAR*)
IF y < alto THEN
z := z + 1; (* el crecimiento siempre es de 1 por linea y lado*)
(* el lado de la izquierda crece en 1 = que la derecha *)
ELSE
z := z – 1; (* decrece igual a mitad para hacer la forma de rombo*)
END;

END;
(* fin vertical *)

END DibujarRombo;

(* Programa principal *)
VAR Lado : CARDINAL;
BEGIN

Lado := PreguntarLado() ; (* Preguntamos y validamos el valor *)
WriteLn ;
WriteLn ;
IF Lado <> 0 THEN
(* Dibujamos el rombo *)
DibujarRombo ( Lado );(* tiene el mismo tama�o de alto que ancho *)
END
END PractUno.

DLink Print Server: DP-300U

He conseguido configurar correctamente una impresora HP Color LaserJet
2500 con un servidor de impresin DLink DP-300U.

La configuracin debe de ser la siguiente:

socket://ip_print_server:9100
Driver: raw

imprime correctamente a color.