Archivo para Febrero, 2009

Backup completo en SQL 2005 Express

27 de Febrero de 2009

La versión Express de SQL no dispone de ninguna herramienta para programar copias de seguridad automatizadas. Aunque sí se pueden realizar cópias manualmente ya sea por la interfaz de SQL Server Management Studio Express o  por el comando de T-SQL backup database

Para poder mantener unas copias de un sistema SQL 2005 Express de forma automática podemos crear un procedimiento que ejecute el comando de backup sobre cada una de las bases de datos del sistema y guarde los archivos en el disco duro.

La creación del procedimiento de copia sería algo así:

USE [master]
GO

CREATE Proc [dbo].[spBackupsSQL]  As
DECLARE @nombreBBDD varchar(255),
        @nombreArchivoBackup varchar(255),
        @comandoBorrado varchar(300),
        @fecha varchar(255),
        @existe int

EXEC sp_configure 'show advanced options',1
RECONFIGURE
EXEC sp_configure xp_cmdshell,1
RECONFIGURE

DECLARE miCursor CURSOR
FOR
select name from sys.databases where name <> 'tempbd'

OPEN miCursor

    FETCH miCursor INTO @nombreBBDD

WHILE(@@FETCH_STATUS =
0)
    BEGIN        

    SET @fecha = CONVERT(varchar(255),DATEPART(d,GETDATE()));
    SET @fecha = @fecha +'_'+CONVERT(varchar(255),DATEPART(m,GETDATE()));
    SET @fecha = @fecha +'_'+CONVERT(varchar(255),DATEPART(yyyy,GETDATE()));

    SET @nombreArchivoBackup = 'C:\'+@nombreBBDD+'_'+@fecha+'.bak'

    -- Miramos si existe el archivo   
    EXEC xp_fileexist @nombreArchivoBackup, @existe output

    SET @comandoBorrado = 'del '+@nombreArchivoBackup

    IF @existe = 1
    EXEC xp_cmdshell @comandoBorrado

    backup database @nombreBBDD to Disk=@nombreArchivoBackup

    FETCH miCursor INTO @nombreBBDD
    END
CLOSE miCursor
DEALLOCATE miCursor

EXEC sp_configure xp_cmdshell,0
RECONFIGURE
EXEC sp_configure 'show advanced options',0
RECONFIGURE

El código anterior crea un procedimiento almacenado que carga las bases de datos con la select de la tabla sys.databases en un cursos que recorremos y vamos generando un archivo .bak de cada una de las bases de datos.

Además, verificamos que no exista el archivo antes, en el caso de existir, elimina el archivo para crear el nuevo. El proceso de borrado se realiza con el comando del y por ello activamos la ejecución de comandos con sp_configure xp_cmdshell.

Automatización con .bat

Para poder decir que realmente hemos automatizado todo esto, nos hace falta que el procedimiento se ejecute periodicamente, ya que por sí solo no es posible. Lo podemos realizar con un archivo .bat, contendrá lo siguiente:

SQLCMD -q "Exec spBackupsServidorSQL" -Uusername -Ppassword -Sservername

Recuerda que spBackupsSQL es el nombre del procedimiento que queremos ejecutar.

Por último, con el programador de tareas de Windows ejecutamos el .bat

Psicología del Diseño

16 de Febrero de 2009

La tarea de diseñar un sitio web es un ejercicio en la promoción de una marca o idea en una forma atractiva al mismo tiempo que intenta obtener emociones y comportamientos humanos específicos.  El diseñador debe saber cómo lograr estos objetivos dentro de una serie de limitaciones, incluidas las presentadas por el medio, el espacio físico, las características específicas del cliente, el entorno social, y el contenido y la finalidad del sitio.

Al igual que hay formas en que un compositor puede comunicar tristeza o enojo en la música, al igual que un pintor puede comunicar confusión sobre el lienzo, o un actor puede comunicarse sin hablar, el diseñador web se puede comunicar con forma, color y diseño.

El trabajo de diseño con más éxito proviene de proyectos con el máximo grado de confianza entre cliente / diseñador. La confianza es un valor de gran peso para cualquier proyecto de diseño.

No hay una segunda oportunidad para dar una primera impresión

Página Principal

Habida cuenta de la realidad sobre las primeras impresiones, el índice de un sitio web es claramente el más importante de su página. De todas las páginas del sitio, la página de índice que tiene el mayor trabajo.

En un sentido muy general, el objetivo de la página de índice es convencer a los visitantes que deben aventurarse mucho más en el sitio. La página de índice no debe tratar de volcar todo el contenido del sitio en los ojos del espectador de una sola vez. Por el contrario, la página debe ser concisa y limpia para una primera buena impresión.

Por ejemplo, el prólogo o primer capítulo de una novela no cuenta toda la historia del libro, sino que presenta una característica concisa y convincente de la historia que invita al lector a mantener el interés.

Páginas interiores

Una vez que el visitante ha visto la página principal del sitio y se ha interesado lo suficiente como para aventurarse en el, el contenido de la presentación se convierte en objetivo principal de las páginas. Después de todo, el visitante llega al sitio en busca de algo para ver, leer, escuchar, o las tres de estas cosas. En el interior el diseño de páginas y diseño en general debe ser un esclavo de ese hecho y se trata de presentar el contenido sin distracción.

En consecuencia, el interior de las páginas suelen tener un diseño y disposición que difiere de la página de índice. Concedido el aspecto debe ser coherente y el mensaje debe llegar muy bien a estas páginas de tal manera que hacer hincapié en el contenido. Además, debe haber una clara sugerencia (o dos o tres) de “a dónde ir desde aquí” en cada una de estas páginas. En cualquier caso, las páginas interiores tienen que ser igual de convincentes como la página de índice.

En blanco

Un tipo de comentario que me han llegado al hacer un diseño inicial de composiciones es algo como, “hay mucho espacio perdido en la página” o “Me gusta el color, pero no podemos poner algo mas?”  Hay que intentar convencer al cliente de no llenar cada centímetro de la página. Utilizando apropiadamente el blanco nos ayuda a mantener la página concisa, sencilla, cómoda y centrada.

Es cierto que podría recortar el blanco y poner más contenido en la página, pero el contenido podría ser mucho menos eficaz. Además, los seres humanos por lo general no responden bien al desorden, como podemos ver en otros ejemplos en la vida.

Sala de respiración y Contexto

En un sentido muy general, un contexto incompatible, el desorden y el hacinamiento tienden a fomentar una falta de interés, mientras que el espacio abierto y un contexto en el medio ambiente tiende a estimular el interés y la apertura a la sugestión. Parte de este tipo de respuesta tiene que ver con la forma en que el espacio abierto va asociado con la comodidad emocional o física.

Ojo de flujo

El camino de visión debe ser cuidadosamente planificado. El diseño debe estar integrado y establecido de tal manera que influya en los ojos de los espectadores y los llevemos por el camino deseado.

Por lo tanto, parte del trabajo del diseñador es diseñar y establecer las páginas del sitio para que los ojos del visitante vayan a determinadas áreas y hacerlo en un orden predeterminado. Dependiendo del tipo de contenido que va a ocupar una página web, esta tarea de dirigir los ojos de los espectadores  puede ser un asunto sencillo o difícil. Aquí vemos el porque un buen diseño puede ser tan poderoso y un mal diseño tan inútil.

La pantalla / web tiene su propio conjunto de la visualización y los diseñadores deben mantenerse al día con los últimos datos de pruebas de utilidad. Es importante entender cómo el público en general tiende a mirar en las páginas web y lo que generalmente tienden a esperar de ellas en términos de diseño e interacción. Así pues, en manos de un diseñador competente todos los fundamentos de la dirección del flujo del ojo (el arte) son templados por este tipo de información.

En cualquier caso, los diseñadores y sus clientes deberían entender o apreciar el hecho de que la tarea de establecer una página web implica mucho más que presentar el contenido en una forma atractiva. El diseño de la estructura y el contenido debe abordar aspectos específicos que influyen en la manera en que los usuarios enfocan y consumen.

Logotipos e imágenes

Qué tratamos de decir exactamente

Cualquier marca que es una buena marca tiene un estilo de vida, un punto de vista, una cultura, una actitud o todas estas cosas  que se relacionan con ella. Uno de los principales trabajos del diseñador es traducir esa “cosa” en un aspecto y estilo de comunicación para el sitio de la empresa. Cualquier visitante debe percibir de inmediato el mensaje central que encarna la marca con sólo ver el diseño de la página web. Una vez más, los fundamentos del arte son las herramientas para hacerlo.

Sin embargo, debe entenderse que cuando una empresa tiene una marca que no está bien concebida o no se asocia con un estilo de vida, un punto de vista, una cultura o una actitud, el trabajo del diseñador es mucho más difícil.

Una de las solicitudes más frecuentes de los clientes es que el logo sea más grande. Y eso es casi siempre un error. Hay muchas razones para esto, y voy a llegar a un par de ellas enseguida, pero primero pensar en este ejemplo. Cuando Cadillac, Jaguar, BMW o Mercedes Benz (o de cualquier fabricante de automóviles para el caso) pone su firma en una campaña, no hacen esta importante característica de 3 ‘de ancho y 2 “de altura. En lugar de ello, hacen que sea muy pequeño para encajar con elegancia lo más importante – el coche.

Es evidente que, el logotipo no es la característica importante del sitio web y no obtener ningún énfasis. Más bien, es el contenido y la finalidad del sitio lo que debe destacarse. Por consiguiente, el logotipo no debería dominar la página, sino el trabajo sutil de ayudar a prestar a la gravedad, los intereses, y el contexto para el contenido y la finalidad del sitio.

Más información sobre logotipos

El logotipo puede comunicar cosas importantes sobre una empresa y / o un sitio web, pero eso es casi poner el carro delante del caballo. Idealmente, el empleo del logotipo es simplemente la marca el sitio y su contenido. La mayor parte de el valor comunicativo del logotipo debe provenir de un dedicado esfuerzo de comercialización que se presta y el logotipo de la empresa el valor deseado y los valores.

Así pues, no, no hacer el logo más grande. Dejemos que el logotipo haga su sencillo su trabajo en la página web (y en otros lugares) no importa su tamaño. Un resultado de dejar el logo en un tamaño manejable de la página es que puede tener un mayor impacto por el uso de blanco que lo rodea.

Conclusión

Los objetivos y deseos del cliente siempre son pertinentes a un proyecto de diseño web, pero esperemos que la anterior información contribuya a demostrar que las preferencias de cada cliente deben tener a menudo un asiento trasero para demostrar los principios del diseño y las expectativas de los usuarios del sitio.

El diseño web es un esfuerzo en la dirección y la comunicación de la misma manera que lo es el arte y la publicidad. No es algo a lo que uno se pueda dedicar a la ligera y es mejor dejar a los artistas-psicólogos que saben cómo utilizar el diseño para lograr objetivos específicos dentro de todo tipo de limitaciones.

Como añadir contenido a su sitio web

16 de Febrero de 2009
  • Métase en la mente del visitante. Escriba su contenido como si estuviera sentado junto a el explicando su producto.
  • No utilice palabras complicadas que la gente  tendría que buscar en el diccionario. Lo que quiere es que se comprenda claramente de que trata su sitio.
  • Transmita emoción. La gente que navega a menudo va con prisa, así que tendrá que apelar a sus emociones para evitar ese clic que los lleve a otra página. Use historias, incluya testimonios o experiencias de los demás. Esto añade credibilidad y confianza, 2 factores esenciales para hacer negocios en línea.
  • Comunique rápida y eficazmente. Los usuarios tienden a fijar su vista por partes en lugar de leer todo lo que hay en la página. Los párrafos deben ser sólo de 2-5 líneas, los párrafos largos hacen que sea difíciles de leer.
  • Cree espacios en blanco. El diseño de su página web debe incluir un montón de espacio en blanco. Incluya espacios en blanco entre partidas, sub partidas y apartados.
  • Uso de gráficos con moderación. Ha oído decir, “una imagen vale más que 1000 palabras. “Eso es cierto, pero sólo si la fotografía apoya su contenido. No exagere los gráficos.
  • Usted puede impresionar a sus visitantes en un principio, sin embargo para mantenerlos interesados necesita de alta calidad contenido.
  • Cree contenido de alta calidad. Deje claros los puntos con cada párrafo que escribe. Cada párrafo debe basarse en el anterior, de modo que usted esté tirando de su visitante a través de su página. Esto los coloca en un marco natural para comprar (a diferencia de muchos sitios que sólo tienen fotos de los productos y un carrito de la compra).
  • Uso del fondo. Elija bien el color de fondo para que su texto no sea difícil de leer. Si usa un fondo asegúrese de que la imagen complementa el tema de su sitio web.
  • Correcta utilización de fuentes. Mucha gente utiliza principalmente “Times New Roman”. Esto funciona bien en forma impresa, pero no en línea. Sans Serif,  Arial, Helvetica y Verdana son las mejores fuentes en línea para facilitar la exploración.
  • Colores de fuente. Los mejores colores para la lectura en línea son texto en negro sobre blanco. Si desea utilizar múltiples colores hágalo con un máximo de 3. Para hacer hincapié en el texto puede utilizar la negrita o cursiva.
  • Compruebe la ortografía y la gramática. Ejecute un corrector ortográfico en su procesador de textos para su página. La mala ortografía y errores gramaticales transmiten una mala impresión.
  • Navegación simple. El objetivo principal de la navegación es hacer más fácil a sus visitantes encontrar el camino alrededor de su sitio.
  • Obtener una crítica. Pídale a  alguien que haga una revisión de su página web. Esto le ayudará a definir mejor lo que ha escrito y hacer un llamamiento a un público más amplio.

Envíar páginas HTML en Gmail y Hotmail a nuestros usuarios

13 de Febrero de 2009

Poder envíar una página en HTML por correo electrónico a nuestros usuarios nos ofrece una vía para mantener el contacto con nuestros usuarios a la vez que podemos anunciar nuevos productos, servicios y novedades.

El correo electrónico sin colores ni imágenes quedó atrás y la mayoria de gestores de correo modernos (Outlook, ThunderBird, Evolution…) soportan HTML y estilos CSS. El problema es que no todos nuestros usuarios visualizan sus correos vía estos programas y lo realizan con sus navegadores Web conectados directamente a sus proveedores, es decir, vía webmail.

Los proveedores de webmail, por lo general, acotan y restringen la carga de elementos HTML en los mensajes que sus usuarios envían y reciben, por lo que, de estilos CSS más bien nos podemos olvidar para ser compatibles con los webmail más comunes.  ¿Qué solucion nos queda? Sigue leyendo, no está todo perdido.

Para Gmail

  1. Ignora todo los estilos dentro de los tags <styles></styles>  Da lo mismo si está en el <head> o en el <body>. Los elimina
  2. Permite la carga de estilos “inline” es decir,  escritos en cada elemento, con la excepción de las imágenes de fondo y de altos específicos (height).
  3. No muestra ninguna imagen por defecto, el usuario debe activar la opción de “Mostrar las imágenes externas del mensaje” para poder visualizarlas
  4. Para poder visualizar fondos, hay que hacerlo especificando en un <td> la propiedad “background”. Así: <td background=”imagen.gif”>
  5. Ignora los fondos de <body>

Para Hotmail

  1. Ignora todo lo que exista en <head></head>, incluyendo el tag <style></style>, pero permite cargar <style> dentro de <body>.
  2. Carga los estilos “inline” excepto:  los margenes, fondos, altos específicos.
  3. Al igual que en Gmail, podemos cargar fondos de forma tradicional vía la propiedad de un <td>
  4. Los anchos y altos especificos también se deben aplicar como propiedad y no como estilo.

Tal y como podemos ver, aunque es funcional, nos limita bastante a la hora de crear un html complejo. Con estos consejos claros desde el principo podremos empezar sobre seguro en la tarea de confeccionar un HTML para envíar por correo.

Uso de cursores en Transact SQL

6 de Febrero de 2009

En T-SQL (Transact SQL) podemos definir una variable que nos permite recorrer un conjunto de resultados obtenidos a través de una SELECT fila a fila, ha esta variable se le denomina Cursor

Cuando trabajemos con cursores debemos seguir los siguientes pasos:

  • Declarar el cursor, utilizando DECLARE
  • Abrir el cursor, utilizando OPEN
  • Leer los datos del cursor, utilizando FETCHINTO
  • Cerrar el cursor, utilizando CLOSE
  • Liberar el cursor, utilizando DEALLOCATE

Ejemplo de cursor T-SQL– Declaración del cursor

DECLARE <nombre_cursor> CURSOR
FOR
<sentencia_sql>
-- apertura del cursor
OPEN <nombre_cursor>
-- Lectura de la primera fila del cursor
FETCH <nombre_cursor> INTO <lista_variables>
WHILE (@@FETCH_STATUS = 0)
BEGIN
    -- Lectura de la siguiente fila de un cursor
    FETCH <nombre_cursor> INTO <lista_variables>
    ...
END -- Fin del bucle WHILE
-- Cierra el cursor
CLOSE <nombre_cursor>
-- Libera los recursos del cursor
DEALLOCATE <nombre_cursor>

Usos de un cursor

Utilizar un cursor es muy práctico ya que nos permite por ejemplo, trabajar con los datos de una fila, operar sobre esos datos y por ejemplo, actualizar el registro, con el resultado de las operaciones. Para dar un mejor ejemplo, para realizar una actualización de unos registros que deben tomar el valor calculado en función de otros datos del mismo registro.

DECLARE @fechaInicio varchar(30),  /*Declaramos variables*/
	@fechaFin varchar(30),
	@idFactura int,
	@fechaCalculos datetime
SET @fechaInicio = '1/1/2005'; /*Seteamos variables*/
SET @fechaFin = '1/1/2006';
DECLARE miCursor CURSOR
FOR
/*Especificamos la select*/
select id,fecha as fechaCalculos from FACTURAS_CLIENTES
where fecha >= CONVERT(DATETIME,@fechaInicio,103)
AND fecha <= CONVERT(DATETIME,@fechaFin,103)
OPEN miCursor  /*Abrimos el cursor*/
	FETCH miCursor INTO @idFactura, @fechaCalculos 

/*Asignamos cada columna de la SELECT
a una variable definida arriba*/
WHILE(@@FETCH_STATUS = 0)
BEGIN
  SET @fechaCalculos = @fechaCalculos + 10 -- OPERACION
 -- Mostramos el resultado
 PRINT 'FECHA CALCULOS:'+ CAST(@fechaCalculos  as varchar)
/*Importante volver a hacer el FETCH*/
FETCH miCursor INTO @idFactura, @fechaCalculos  

END
CLOSE miCursor
DEALLOCATE miCursor

Conclusión

Aunque en un principio parezca algo difícil de entender es sencillo si se sigue correctamente la estructura del cursor. Así además evitamos fallos en la sintaxis.

Usar un cursor nos puede simplificar mucho la tarea de programar un script en otro lenguaje de programación para acabar haciendo lo mismo que con un cursor programador directamente sobre T-SQL, que además se ejecutará más rápido.