miércoles, 30 de abril de 2008

Bloqueo de teclas en aplicaciones Web

Amigos,

Les paso algunos script que les pueden servir si quieren poner algunas restricciones en sus páginas.

1. Para que el usario no imprima el contenido de la página con la tecla "Impr pant":

function clp_clear()
{
var content=window.clipboardData.getData("Text");
if (content==null){window.clipboardData.clearData();}
setTimeout("clp_clear();",1000);
}


Nota: Este método invocarlo desde el evento onload de la página.

2. Para bloquear el menú que parece cuando presionamos con el derecho del mouse, y para que el usuario no utilice el mouse para seleccionar el contenido de nuestra página colocar las siguientes instrucciones en el BODY de la página:

oncontextmenu="return false" ondragstart="return false" onselectstart="return false"

Atte. Nelcy

jueves, 24 de abril de 2008

DES. Obtener la URL de la página anterior

Si quieren obtener la URL de la página anterior pueden usar document.referrer

miércoles, 23 de abril de 2008

Funciones C# en SQL Server 2005

Hola:

Si no te alcanza con las funciones que te da SQL Server 2005 para realizar alguna consulta podes hacer lo siguiente
  1. Crear un proyecto biblioteca de clases (.Net 2.0 )
  2. Crear la funcion que necesitas con el algoritmo complicado
  3. adicionar la biblioteca a la base de datos
  4. llamar la funcion desde la consulta como cualquier funcion incorporada SQL
Ejemplo:

una función para separar el campo "gbagenomb" (nombre del cliente) en primer nombre, apellido y segundo apellido y otra para mostrar el nombre de manera capitalizada (solo la primera mayuscula)

las funciones en C# serían algo como:

public class StringFunctions
{
[Microsoft.SqlServer.Server.SqlFunction]
public static string Capitalize(string value )
{

if (value != null)
{
if (value.Length == 0)
return value;

StringBuilder result = new StringBuilder(value);
result[0] = char.ToUpper(result[0]);
for (int i = 1; i <>
{
if (char.IsWhiteSpace(result[i - 1]))
result[i] = char.ToUpper(result[i]);
else
result[i] = char.ToLower(result[i]);
}
String res = result.ToString().Trim();
if (res.EndsWith("De"))
{
result.Replace("De", "de", res.Length - 2, 2);
res = result.ToString().Trim();

}
return res;
}
else
return null;
}
[Microsoft.SqlServer.Server.SqlFunction]
public static string NamePart(string value, int part)
{

if (value != null)
{
if (value.Length == 0)
return value;
List nameParts = new List();
value = value.Trim();
StringBuilder result = new StringBuilder();

for (int i = 0; i <>
{
if (char.IsWhiteSpace(value[i]))
{
if (result.ToString().Trim() != "")
{
nameParts.Add(result.ToString());
result = new StringBuilder();
}
}
else
result.Append(value[i]);
}
if (result.ToString().Trim() != "")
nameParts.Add(result.ToString());
if (part <>
return nameParts[part];
return "";

}
else
return null;
}

}

una vez compilamos y obtenemos la dll simplemente copiamos este archivo a un compartido del servidor de base de datos

ahora para incluir la biblioteca y registrar las nuevas funciones ejecutamos (ojo con coincidir el namespace de las funciones):

CREATE ASSEMBLY [bga]
AUTHORIZATION [dbo]
FROM 'E:\sergio\BGASqlFunctions.dll'
WITH PERMISSION_SET = SAFE

GO
CREATE Function Capitalize(@Cadena NVARCHAR(MAX))
RETURNS NVARCHAR(MAX)
EXTERNAL NAME bga.StringFunctions.Capitalize

GO
CREATE Function NamePart(@Cadena NVARCHAR(MAX), @Part int)
RETURNS NVARCHAR(MAX)
EXTERNAL NAME bga.StringFunctions.NamePart



Listo! ahora una consulta para probar las nuevas funciones:

Select dbo.Capitalize(gbagenomb) as nombreCompleto,
dbo.Capitalize(dbo.NamePart(gbagenomb,2) +' '+ dbo.NamePart(gbagenomb,3)) AS nombre,
dbo.Capitalize(dbo.NamePart(gbagenomb,0)) AS ape1,
dbo.Capitalize(dbo.NamePart(gbagenomb,1)) AS ape2
FROM GBAGE

resultado:
Mendoza Escalante Gustavo Gustavo Mendoza Escalante
Paz Rea Jaime Eduardo Jaime Eduardo Paz Rea
Antelo Salmon Luis Fernando Luis Fernando Antelo Salmon
Ballivian Cordova Jerges Jerges Ballivian Cordova
Matadero Frigorifico Santa Cruz S.a. Santa Cruz Matadero Frigorifico
Ardaya Vaca Luis Luis Ardaya Vaca
Pena Gutierrez Edgar Alan Edgar Alan Pena Gutierrez
Pena Carmen Hasbun de Hasbun de Pena Carmen


miércoles, 16 de abril de 2008

De vital Importancia

Estoy copiando este articulo porque no puedo permitir que IBM lo saque de su sitio (es poco probable pero puede pasar) y tambien estoy uncluyendo el link

Restablecimiento de una contraseña de root desconocida
El procedimiento siguiente describe la manera de recuperar el acceso a los privilegios de usuario root cuando la contraseña de usuario root del sistema no está disponible o es desconocida.
El procedimiento siguiente requiere que el sistema permanezca inactivo durante un corto periodo de tiempo. Si es posible, planifique el momento de la parada del mismo cuando el impacto en la carga de trabajo sea mínimo, como medida de protección ante una posible pérdida de datos o de funcionalidad.
La información de este procedimiento se ha probado utilizando versiones específicas de AIX. Los resultados que obtenga pueden variar significativamente dependiendo de la versión y el nivel de AIX.
1.- Inserte en la unidad apropiada el soporte de almacenamiento del producto para la misma versión y nivel que la instalación actual.
2.- Encienda la máquina.
3.- Cuando aparezca la pantalla de iconos, o cuando escuche un pitido doble, pulse la tecla F1 repetidamente hasta que aparezca el menú Servicios de gestión del sistema.
4.- Seleccione Multiarranque.
5.- Seleccione Instalar desde.
6.- Seleccione el dispositivo en el que se encuentre el soporte de almacenamiento del producto y seleccione Instalar.
7.- Seleccione el icono de la versión de AIX.
8.- Defina el sistema actual como la consola del sistema pulsando la tecla F1 y a continuación pulse Intro.
9.- Seleccione el número correspondiente al idioma preferido y pulse Intro.
10.- Seleccione Arrancar modalidad de mantenimiento para la recuperación del sistema escribiendo 3 y pulse Intro.
11.- Seleccione Acceder a un grupo de volúmenes raíz. Se visualiza un mensaje explicando que, si se cambia el grupo de volúmenes raíz en este momento, no será posible volver a los menús de Instalación sin rearrancar la máquina.
12.- Escriba 0 y pulse Intro.
13.- Escriba el número del grupo de volúmenes apropiado de la lista y pulse Intro.
14.- Seleccione Acceder a este grupo de volúmenes e iniciar un shell escribiendo 1 y pulse Intro.
15.- En el indicador # (almohadilla), escriba el mandato passwd en el indicador de la línea de mandatos para restablecer la contraseña del usuario root. Por ejemplo: # passwd

Cambiando contraseña para "root"
Nueva contraseña de root:
Entre la nueva contraseña otra vez:

16.- Para grabar cualquier dato del almacenamiento intermedio en el disco duro y rearrancar el sistema, escriba lo siguiente:

sync;sync;sync;reboot


Cuando aparece la pantalla de inicio de sesión, la contraseña que se ha establecido en el paso 15 deberá ahora permitir el acceso a los privilegios de usuario root.

Salu2

lunes, 14 de abril de 2008

DES. Error de memoria en .net 2003


Señores:

Alguna vez les salió este error mientras programaban en .net 2003?
No se si es el .net o la memoria, ya que el .net 2003 que tengo instalado es original.










miércoles, 9 de abril de 2008

DES. Información para desarrolladores

Señores:

Encontré esta información en el sitio de Microsoft, hay varios temas cuyo contenido es gratis.


http://www.microsoft.com/latam/entrenamiento/desarrolladores/default.mspx