viernes, 10 de noviembre de 2006

SQL - Medir el tiempo de ejecución de sentencias sql

Algo muy útil para cuando tenemos diversas formas de solucionar un problema en SQL y desconocemos cual de ellas será la más rápida (no necesariamente la más optima) es medir el tiempo de ejecución de cada una de ellas y de esa forma poder seleccionar la solución más rápida.

--Declaracion de la variable que nos permitira medir el tiempo DECLARE @TiempoInicial DATETIME SET @TiempoInicial = GETDATE() -- ------------------------------- SETENCIAS ------------------------------- SELECT * FROM Persona WHERE DATEDIFF(day, FechaRegistro, DATEADD(DAY,-15,GETDATE())) <= 0 -- ------------------------------- SETENCIAS ------------------------------- -- Realizar la diferencia entre el tiempo inicial y final de la ejecución de las sentencias PRINT 'Operacion completada en: ' + RTRIM(CAST(DATEDIFF(ms,@TiempoInicial, GETDATE()) AS VARCHAR(10))) + ' milisegundos'

martes, 7 de noviembre de 2006

SQL - Crear un procedimiento almacenado

En el presente articulo veremos como crear tres tipos de procedimientos almacenados:
  1. Procedimento sin parametros.
  2. Procedimiento con parámetros de entrada.
  3. Procedimiento con parámetros de entrada y de salida. 

Nota: Los procedimientos almacenados definidos por el usuario son creados en la base de datos actual.
Procedimiento sin parámetros.

/* --------------------------------------------------------------------------------
   Autor: Mario Alberto Sanchez Gamboa
   Fecha:
   Descripcion: Procedimiento que realiza la suma de dos numeros y regresa
   el resultado mediante el uso de la sentencia SELECT.
      **Emplea declaracion de variables.
      **Asigacion de valores a variables.
      **Uso de ISNULL.- Remplaza el nulo por el valor especificado.
      **Uso de CAST.- Convierte explicitamente una expresion de un tipo de dato a otro.
      **Concatenacion de cadenas.
   -------------------------------------------------------------------------------- */
CREATE PROCEDURE spSumaSinParametros
AS
   --Declaracion de variables
   DECLARE @Numero1 FLOAT,
      @Numero2 FLOAT,
      @Resultado FLOAT,
      @Operacion NVARCHAR(25)


   --Asignacion de valores iniciales
   SET @Numero1 = 5.55
   SET @Numero2 = 15


   --Operacion.
   --Nota: Se puede hacer uso de SELECT y/o SET para la asignacion de valores a las variables.
   SELECT @Resultado = ISNULL(@Numero1, 0) + ISNULL(@Numero2, 0)
   SET @Operacion = CAST(@Numero1 AS VARCHAR) + ' + ' + CAST(@Numero2 AS VARCHAR) + ' = ' + CAST(@Resultado AS VARCHAR)


   --Realizar un select con el resultado de la operacion.
   SELECT @Numero1 AS Numero1, @Numero2 AS Numero2, @Resultado AS Resultado, @Operacion AS Operacion

GO
Para ejecutar el procedimiento almacenado empleamos la siguiente sentencia:

   EXECUTE spSumaSinParametros

Resultado:

Numero1 Numero2 Resultado Operacion
-------------------- ---------- --------------------- --------------------
5.5499999999999998 15.0 20.550000000000001 5.55 + 15 = 20.55

(1 row(s) affected)
Procedimiento con parámetros de entrada.

/* --------------------------------------------------------------------------------
   Autor: Mario Alberto Sanchez Gamboa
   Fecha:
   Descripcion: Procedimiento que realiza la suma de dos numeros
      los cuales recibe mediante parametros de entrada
      y regresa el resultado mediante el uso de la sentencia SELECT.
      **Emplea declaracion de variables.
      **Asigacion de valores a variables.
      **Uso de ISNULL.- Remplaza el nulo por el valor especificado.
      **Uso de CAST.- Convierte explicitamente una expresion de un tipo de dato a otro.
      **Concatenacion de cadenas.
   -------------------------------------------------------------------------------- */
CREATE PROCEDURE spSumaConParametros
      @Numero1 FLOAT,
      @Numero2 FLOAT
AS
   --Declaracion de variables
   DECLARE
      @Resultado FLOAT,
      @Operacion NVARCHAR(25)


   --Operacion.
   --Nota: Se puede hacer uso de SELECT y/o SET para la asignacion de valores a las variables.
   SELECT @Resultado = ISNULL(@Numero1, 0) + ISNULL(@Numero2, 0)
   SET @Operacion = CAST(@Numero1 AS VARCHAR) + ' + ' + CAST(@Numero2 AS VARCHAR) + ' = ' + CAST(@Resultado AS VARCHAR)


   --Realizar un select con el resultado de la operacion.
   SELECT @Numero1 AS Numero1, @Numero2 AS Numero2, @Resultado AS Resultado, @Operacion AS Operacion
GO
Para ejecutar el procedimiento almacenado empleamos la siguiente sentencia:

   EXECUTE spSumaConParametros 5.55, 15

Resultado:

Numero1 Numero2 Resultado Operacion
-------------------- ---------- --------------------- --------------------
5.5499999999999998 15.0 20.550000000000001 5.55 + 15 = 20.55

(1 row(s) affected)
Procedimiento con parámetros de entrada y salida.

/* --------------------------------------------------------------------------------
   Autor: Mario Alberto Sanchez Gamboa
   Fecha:
   Descripcion: Procedimiento que realiza la suma de dos numeros y regresa
      el resultado mediante el uso un parametro de salida y una sentencia SELECT.
      El valor son recibidos con parametros de entrada, y el resultado es regresado
      mediante un parametro de salida, asi como de una sentencia SELECT.
      **Emplea declaracion de variables.
      **Asigacion de valores a variables.
      **Uso de ISNULL.- Remplaza el nulo por el valor especificado.
      **Uso de CAST.- Convierte explicitamente una expresion de un tipo de dato a otro.
      **Concatenacion de cadenas.
   -------------------------------------------------------------------------------- */
CREATE PROCEDURE spSumaConParametroDeSalida
      @Numero1 FLOAT,
      @Numero2 FLOAT,
      @Resultado FLOAT OUTPUT

AS
   --Declaracion de variables
   DECLARE @Operacion NVARCHAR(25)


   --Operacion.
   --Nota: Se puede hacer uso de SELECT y/o SET para la asignacion de valores a las variables.
   SELECT @Resultado = ISNULL(@Numero1, 0) + ISNULL(@Numero2, 0)
   SET @Operacion = CAST(@Numero1 AS VARCHAR) + ' + ' + CAST(@Numero2 AS VARCHAR) + ' = ' + CAST(@Resultado AS VARCHAR)


   --Realizar un select con el resultado de la operacion.
   SELECT @Numero1 AS Numero1, @Numero2 AS Numero2, @Operacion AS Operacion
GO
Para ejecutar el procedimiento almacenado empleamos la siguiente sentencia:

   DECLARE @ParamResultado FLOAT    DECLARE @EjecucionParametro INT    EXECUTE @EjecucionParametro = spSumaConParametroDeSalida 5.55, 15, @ParamResultado OUTPUT    SELECT @ParamResultado AS Resultado, @EjecucionParametro AS EjecucionParametro

Resultado:

Numero1 Numero2 Resultado Operacion
-------------------- ---------- --------------------- --------------------
5.5499999999999998 15.0 20.550000000000001 5.55 + 15 = 20.55

(1 row(s) affected)

Resultado EjecucionParametro
--------------------- --------------------
20.550000000000001 0

(1 row(s) affected)
Si se desea comprobar la existencia de un procediento se puede hacer uso de las siguientes sentencias.

--Verificamos si el procedimiento que vamos a crear existe en la base de datos,
--en caso de que exista se procede a eliminar dicho procedimiento.
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'spSumaSinParametros' AND type = 'P')
   DROP PROCEDURE spSumaSinParametros
GO
En este ejemplo verificamos si ya existe el procedimiento spSumaSinParametros, en caso de que exista se procede a eliminarlo.

SQL - Conocer si un procedimiento, tabla, etc. existe en la base de datos

Para conocer si un objeto (procedimiento almacenado, constraint, llave foranea, etc.) existe en nuestra base de datos, podemos hacer uso de la tabla del sistema de la base de datos sysobjects en la cual se registran todos los objetos que hemos creados.
A continuación se detalla el diseño de la tabla sysobjects. 
   
Nombre de la columnaTipo de DatoDescripción
namesysnameNombre del objeto.
IdintNúmero de identificación del objeto.
xtypechar(2)Tipo de objeto. Puede ser alguno de los siguientes:

C = CHECK constraint
D = Default or DEFAULT constraint
F = FOREIGN KEY constraint
L = Log
FN = Scalar function
IF = Inlined table-function
P = Stored procedure
PK = PRIMARY KEY constraint (type is K)
RF = Replication filter stored procedure
S = System table
TF = Table function
TR = Trigger
U = User table
UQ = UNIQUE constraint (type is K)
V = View
X = Extended stored procedure

uidsmallintIdentificador del usuario propietario del objeto.
infosmallintReservado. Para uso interno solamente.
statusintReservado. Para uso interno solamente.
base_schema_
ver
intReservado. Para uso interno solamente.
replinfointReservado. Para uso por replicación.
parent_objintNúmero de identificación del objeto padre.
crdatedatetimeFecha en que el objeto fue crado.
ftcatidsmallintIdentifier of the full-text catalog for all user tables registered for full-text indexing, and 0 for all user tables not registered.
schema_verintNúmero de Version la cual es incrementada cada vez que cambia el esquema para un tabla.
stats_schema_
ver
intReservado. Para uso interno solamente.
typechar(2)Tipo de objeto. Puede ser alguno de los siguientes valores:

C = CHECK constraint
D = Default or DEFAULT constraint
F = FOREIGN KEY constraint
FN = Scalar function
IF = Inlined table-function
K = PRIMARY KEY or UNIQUE constraint
L = Log
P = Stored procedure
R = Rule
RF = Replication filter stored procedure
S = System table
TF = Table function
TR = Trigger
U = User table
V = View
X = Extended stored procedure

userstatsmallintReservado.
sysstatsmallintInternal status information.
indexdelsmallintReservado.
refdatedatetimeReservado para uso futuro.
versionintReservado para uso futuro.
deltrigintReservado.
instrigintReservado.
updtrigintReservado.
seltrigintReservado.
categoryintUsado para publicación, identitis (identity) y constraints.
cachesmallintReservado.
 
Ejemplo de uso:

--Verificamos si el procedimiento que vamos a crear existe en la base de datos,
--en caso de que exista se procede a eliminarlo.

IF EXISTS (SELECT name FROM sysobjects WHERE name = 'spProcedimientoABuscar' AND type = 'P' < /FONT > )
   DROP PROCEDURE spProcedimientoABuscar

SQL - Devolver errores y advertencias desde un procedimiento almacenado de SQL Server

En diversas situaciones requerimos poder regresar advertencias o errores personalizados desde un procedimiento almacenado, en el presente articulo veremos como lograrlo.
Si se genera un error en SQL donde su gravedad sea igual o menor a 10 solo se lanza una advertencia sin generar una excepción, sin embargo, si la gravedad fue igual o mayor a 11 es lanzada una excepción y es probable que el procedimiento almacenado sea anulado. Es importante contar también con un manejo de transacciones para que se ejecute o no completo nuestro stored.


/* --------------------------------------------------------------------------------
   Autor: Mario Alberto Sanchez Gamboa
   Fecha:
   Descripcion: Procedimiento que lanza un error personalizado.
   Actualizacion:
   -------------------------------------------------------------------------------- */
ALTER PROCEDURE spTemporal
   @param1 BIT
AS
BEGIN

   IF @param1 = 1
   BEGIN
      RETURN 0
   END
   ELSE
   BEGIN
      RAISERROR ('Error personalizado al momento de ejecutar el procedimiento.', 11, 1)
      RETURN -1
   END

END

Si ejecutamos el stored anterior con un valor de diferente a 1 será lanzado el error personalizado.

EXEC spTemporal 0

Resultado:
Server: Msg 50000, Level 11, State 1, Procedure spTemporal, Line 18
Error personalizado al momento de ejecutar el procedimiento.

SQL - Generar números de filas haciendo uso de Tablas Temporales

En el presente ejemplo veremos como enumerar el resultado de un consulta, la cual normalmente difiere de nuestros identificadores o claves internas en la base de datos. Esto lo podemos lograr haciendo uso de la función IDENTITY y de Tablas temporales.

IDENTITY

Nos permite generar valores secuenciales, con base en los parámetros que se establezcan SELECT IDENTITY(TipoDato, ValorInicial, Incremento) AS ID_Num

  • TipoDato .- puede ser cualquiera de la categoría de los enteros (excepto BIT).
  • ValorInicial .- indica el valor inicial del cual se generarán los valores.
  • Incremento.- define el incremento que habrá entre los valores generados.

Esta sentencia la podemos utilizar solo cuando SELECT contiene la clausula INTO.

Tablas Temporales

Para hacer uso de la clausula INTO creamos una tabla temporal de la siguiente forma:

SELECT IDENTITY(INT, 1, 1) AS ID, CustomerID, CompanyName, ContactName, Country INTO #TMP_CUSTOMER FROM Customers ORDER BY Country SELECT * FROM #TMP_CUSTOMER DROP TABLE #TMP_CUSTOMER

En este ejemplo obtenemos los clientes de la tabla Customers ordenados por su campo Country de la base de datos Northwind y parte del resultado obtenido es:

IDCustomerIDCompanyNameContactNameCountry
1CACTUCactus Comidas para llevarPatricio SimpsonArgentina
2OCEANOcéano Atlántico Ltda.Yvonne MoncadaArgentina
3RANCHRancho grandeSergio GutiérrezArgentina
4PICCOPiccolo und mehrGeorg PippsAustria
5ERNSHErnst HandelRoland MendelAustria
6MAISDMaison DeweyCatherine DeweyBelgium
7SUPRDSuprêmes délicesPascale CartrainBelgium
8RICARRicardo AdocicadosJanete LimeiraBrazil
9TRADHTradição HipermercadosAnabela DominguesBrazil

Ahora, si la tabla de la cual vamos a obtener la información contiene una columna IDENTITY, el motor encontrará que hay 2 columnas INDENTITY en la tabla a generar, produciendo un error.

Para solucionar este problema es necesario convertir la columna IDENTITY de la tabla que causa el problema al mismo tipo de dato (lo que hacemos es quitarle el IDENTITY)

Por ejemplo, la tabla Products de la base de datos Northwind tiene definida la propiedad IDENTITY en la columna ProductID.

SELECT IDENTITY(INT, 1, 1) AS ID, CAST(ProductID AS INT) AS ProductID, ProductName INTO #TMP_PRODUCTS FROM Products SELECT * FROM #TMP_PRODUCTS DROP TABLE #TMP_PRODUCTS

Parte del resultado de este ejemplo es el siguiente:

IDProductIDProductName
117Alice Mutton
23Aniseed Syrup
340Boston Crab Meat
460Camembert Pierrot
518Carnarvon Tigers
61Chai
72Chang
839Chartreuse verte
94Chef Anton's Cajun Seasoning
105Chef Anton's Gumbo Mix

Información técnica en español - MSDN

El MSDN es un recurso esencial para aquellos desarrolladores que utilizan las herramientas de desarrollo y las tecnologías de Microsoft, ya que cuenta con una gran cantidad de información técnica acerca de la programación e incluye código de ejemplo, documentación, artículos técnicos y guías de referencia A continuación se listan las direcciones donde podran encontrar documentación de SQL Server, VisualSource Safe y Visual Studio 2005. MSDN en españolhttp://msdn2.microsoft.com/es-es/library/default.aspx Documentación de SQL Server 2005 en español - MSDNhttp://msdn2.microsoft.com/es-es/library/ms203721.aspx Documentación de Visual SourceSafe 2005 en español - MSDNhttp://msdn2.microsoft.com/es-es/library/ms299291(VS.80).aspx Documentación de Visual Studio en español - MSDNhttp://msdn2.microsoft.com/es-es/library/ms269115(VS.80).aspx

domingo, 30 de julio de 2006

Sitio Smart-Solutions Developers

Los invito a que accedan al nuevo sitio que hemos creado Iris Suarez, Sergio Villaneda y un servidor, en el cual estaremos publicando articulos sobre las diversas tecnologias que trabajamos o hemos trabajado. Esperamos verlos pronto y recibir una retroalimentacion de su parte!! El sitio se llama Smart-Solutions Developers y la dirección es www.Smart-Solutions.com.mx

domingo, 23 de julio de 2006

TIP - JavaScript - Evitar el back de páginas Web

En muchas ocaciones nos encontramos con la problemática de evitar que los usuarios hagan un back o retroceso en nuestras aplicaciones Web. Ya sea que este back lo hagan haciendo uso de los botones del navegador, de botones del mouse u otras tantas opciones que hay. Realmente no hay forma de deshabilitar el retroceso (aunque ocultemos las diferentes barras existen otras formas en que se puede realizar un back en las páginas). Existe un truco con JavaScript, el cual lo que realiza es siempre forzar la página a que vaya a su siguiente elemento, de esta forma, si ponemos la siguiente instrucción en todas nuestras páginas (desde la página inicial), siempre haremos que el usuario vaya a la última página visitada, aún si el usuario se regresará a la primera página haciendo uso del historial. /**************************************************************** Evita el back de las paginas. ****************************************************************/ window.history.forward(1); Espero y les ahorre algunos dolores de cabeza.

JAVA - Agregar un Servidor de aplicaciones en Eclipse

A continuación veremos como agregar un Servidor de aplicaciones Web en Eclipse. Para este ejemplo se hará uso de Apache Tomcat 4.1. Pre-Requisitos:
  • Instalar JDK.
  • Instalar un Servidor Web de aplicaciones para Java como por ejemplo Apache Tomcat.
  • Instalación de Eclipse.
Para agregar el servidor de aplicaciones damos clic en File - New - Other. JAVA - Agregar un Servidor de aplicaciones en Eclipse Seleccionamos la carpeta Server, la opción Server y damos clic en el botón Next. JAVA - Agregar un Servidor de aplicaciones en Eclipse Ahora seleccionamos la carpeta Apache y la opción Tomcat v4.1 Server y clic en el botón Installed Runtimes... JAVA - Agregar un Servidor de aplicaciones en Eclipse A continuación nos abrirá otra ventana. En esta nueva ventana damos clic en el botón Add... JAVA - Agregar un Servidor de aplicaciones en Eclipse En esta nueva ventana damos clic en el botón Next. JAVA - Agregar un Servidor de aplicaciones en Eclipse En esta ventana le damos un nombre a nuestro Servidor y buscamos el directorio donde se encuentra instalado el servidor, así mismo seleccionamos el JRE que deseamos utilice el servidor y eclipse para la ejecución de los proyectos, y damos clic en el botón Finish. JAVA - Agregar un Servidor de aplicaciones en Eclipse Regresamos a una pantalla anterior y damos clic en el botón OK y nos regreserá a la pantalla de New Server. JAVA - Agregar un Servidor de aplicaciones en Eclipse Nos regresa a una pantalla previa (Ventana de New Server) y damos clic en el Next y nos mostrará la siguiente ventana. Si tenemos aplicaciones previas, aquí nos aparecerían para agregarlas y que se ejecute con este servidor. Ahora damos clic en el botón Finish, se cerrará esta última ventana y regresaremos a la pantalla principal de Eclipse. JAVA - Agregar un Servidor de aplicaciones en Eclipse Una vez que terminamos con la configuración podremos ver que el servidor fue agregado a Eclipse. JAVA - Agregar un Servidor de aplicaciones en Eclipse Listo!! ya hemos agregado nuestro servidor de aplicaciones Web a Eclipse!!

sábado, 22 de julio de 2006

JAVA - Cear un Servlet en Eclipse

Cear un Servlet y leer un parámetro de la URL haciendo uso de Eclipse

A continuación veremos como crear un Servlet en un proyecto Web haciendo uso del IDE Eclipse. Pre-Requisitos:
  • Instalar JDK.
  • Instalar un Servidor Web de aplicaciones para Java como por ejemplo Apache Tomcat.
  • Instalación de Eclipse.
  • Creación de un proyecto Web con Eclipse (para mayor información ver el artículo JAVA - Cear una aplicación Web con Eclipse).
Una vez que contamos con lo anterior, procedemos a abrir nuestro proyecto Web y damos clic con el botón secundario del mouse sobre él, seleccionamos la opción New y posteriormente clic en la opción Servlet. Cear un Servlet y leer un parametro de la URL en Eclipse Ahora nos aparecerá la siguiente ventana, en la cual se nos solicita el nombre del Servlet que deseamos crear, así como el paquete en el cual estará contenido. Para nuestro ejemplo, el nombre del servlet es ServletPrueba y se encontrara en el paquete sanchez_soft. A continuación damos clic en el botón Next. Crear un Servlet y leer un parametro de la URL en Eclipse A continuación nos aparecerá la siguiente pantalla, en la cual indicaremos con que nombre o alias queremos hacer referencia a este servlet desde nuestro sitio Web, generalmente se deja el mismo nombre de la clase Servlet que creamos. Damos clic en el botón Next. Cear un Servlet y leer un parametro de la URL en Eclipse En la siguiente pantalla se nos brinda la opción para que Eclipse cree de manera automática algunos métodos. Damos clic en el botón Finish. Cear un Servlet y leer un parametro de la URL en Eclipse Eclipse creerá el esqueleto de nuestro Servlet, ahora nos corresponde agregar un poco de código para poder visualizar algo de información cuando ejecutemos el servlet. En el seguiente código podemos leer un parámetro recibido por URL llamada usuarioNombre y posteriormente desplegar un mensaje de Bienvenida con el valor del parámetro recibdo. package com.sanchez_soft; import java.io.PrintWriter; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class for Servlet: ServletPrueba * */ public class ServletPrueba extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { private static final String CONTENT_TYPE = "text/html; charset=windows-1252"; public ServletPrueba() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String usuarioNombre = ""; try { usuarioNombre = request.getParameter("usuarioNombre"); } catch(Exception e) { e.printStackTrace(); } response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); out.println(""); out.println(""); out.println(""); out.println("

Bienvenido " + usuarioNombre + "!!

"); out.println(""); out.close(); } }
Una vez que hemos escrito algo a visualizar, ejecutaremos nuestro Servlet como se muestra en la siguiente imagen. Cear un Servlet y leer un parametro de la URL en Eclipse Atención: un error sumamente común es tener el servidor de aplicaciones corriendo he intentar ejecutar nuestra aplicación Web con Eclipse, si realizamos esto nos aparecerá un mensaje de error indicandonos que el servicio ya esta iniciado y que no se puede hacer otra petición en los mismos puertos. Cear un Servlet y leer un parametro de la URL en Eclipse Para solucionar esto y evitar que esto nos ocurra constantemente, debemos apagar nuestro servidor y configurar para que el encendido sea manual y no automático. Para ello seguir las siguientes instrucciones: Acceder a la Administración de Servicios. Cear un Servlet y leer un parametro de la URL en Eclipse Seleccionar el servicio de Apache Tomcat (o el del server que esten ejecutando). Damos clic en él con el botón secundario del mouse y clic en la opción de Propiedades. Cear un Servlet y leer un parametro de la URL en Eclipse En la ventana de propiedades Seleccionamos el tipo de inicio como Manual y paramos el servicio dando clic en el botón Stop, y finalmente damos clic en el botón Ok. Cear un Servlet y leer un parametro de la URL en Eclipse Ahora si regresamos a nuestra aplicación y la ejecutamos. Cear un Servlet y leer un parametro de la URL en Eclipse Una vez ejecutado nuestro servlet, nos aparecerá una pantalla similar a la siguiente: Cear un Servlet y leer un parametro de la URL en Eclipse Modificamos la url para pasarle un valor al parámetro usuarioNombre, el cual leemos en nuestro servlet, y la pantalla que visualizariamos sería una similar a la siguiente. Cear un Servlet y leer un parametro de la URL en Eclipse Listo!! Ya hemos creado un Servlet y realizado la lectura del valor de un parámetro que recibimos por URL.

JAVA - Cear una aplicación Web con Eclipse

Eclipse es un IDE de Java el cual se encuentra basado en plugins. Eclipse lo podemos descargar desde el sitio oficial de Eclipse (Descargar la última versión de Eclipse). Eclipse no requiere instalación, solo hay que descomprimirlo donde se nosotros requieramos y listo. Para ejecutar Eclipse ejecutamos el archivo que se llama eclipse (para el caso de windows es eclipse.exe). Al ejecutarlo nos aparece una pantalla donde se nos pregunta la ubicación para establecer nuestro sitio de trabajo, seleccionamos el directorio donde queremos que Eclipse guarde nuestros proyectos. Para crear aplicaciones Web con Eclipse, tenemos que descargar el plugin (WebTools) o también podemos descargar todo el kit que incluye Eclipse y todo lo necesario para desarrollar nuestra aplicaciones Web. Para descargar la última versión lo podemos hacer desde aquí. La versión que yo utilice para este ejemplo es la de Eclipse 3.2 con WebTools 1.5.0 la cual podemos acceder desde esta dirección. Descargamos el archivo para nuestro sistema operativo el cual se encuentra en la sección WebTools Platform; All-in-one, por ejemplo, para Windows sería wtp-all-in-one-sdk-R-1.5.0-200606281455-win32.zip. No hay que olvidar instalar nuestro servidor de aplicaciones como por ejemplo Apache Tomcat. Así mismo también es recomendable descargar el JDK de Java que necesitemos desde el sitio de Sun http://java.sun.com/. Puedes utilizar la 1.4, 1.5 y 1.6 dependiendo de nuestras necesidades. Recuerda tener presente que no es lo mismo JRE(Java Runtime Environment) que JDK(Java Development Kit o Herramientas de Desarrollo Java). Después de esta breve introducción a Eclipse, y una vez que ya hemos instalado lo necesario para crear y ejecutar nuestras aplicaciones Web procedemos a crear nuestra aplicación. Clic en el menú principal. File - New - Project... Crear nuevo proyecto. Ahora nos aparece un nueva ventana, damos clic en la carpeta Web y seleccionamos la opción Dynamic Web Project, ahora oprimimos el botón Next. Crear nuevo proyecto. En esta nueva ventana establecemos el nombre de nuestro proyecto y seleccionamos el Servidor Web (ver el artículo Java - Dar de alta un servidor Web en Eclipse). Para nuestro ejemplo el nombre del proyecto es Testing y vamos a hacer uso del servidor Apache Tomcat 4.1. Damos clic en el boton Next. Crear nuevo proyecto. En esta otra ventana se nos indican las versiones que se utilizarón como por ejemplo, se nos indica que se hará uso de la versión 1.4 de Java. Clic en el botón Next. Crear nuevo proyecto. A continuación, se visualiza la pantalla de configuración final para nuestra aplicación Web. Aquí se nos indica el directorio donde se almacenarán nuestros archivos, así como el Contexto con el que haremeos referencia a nuestra aplicación, para nuestro ejemplo el Contexto es Testing con ello, para hacer referencia a nuestra aplicación en el servidor local, lo podremos hacer de la siguiente manera: http://localhost/Testing/ Damos clic en la botón Finish. Crear nuevo proyecto. Si es la primera ocación que hacemos uso de Eclipse, nos aparecerá un mensaje indicandonos si queremos utilizar la perspectiva J2EE para nuestro proyecto, mi recomendación es seleccionar el checkbox y dar clic en el botón Yes para que no nos aparezca esta pregunta cada ocación que realicemos un proyecto Web. La perspectiva es la forma en que se organizará Eclipse para visualizar la lista de archivos, el código fuente, la ayuda, la consola, etc. Crear nuevo proyecto. Listo!! ya hemos creado nuestro proyecto Web, ahora ya estamos listos para agregar nuestras páginas, servlets, imagenes, etc. Si deseas probar el proyecto, te recomiendo que crees un jsp o servlet de prueba, para ello puedes ver el artículo JAVA - Cear un Servlet en Eclipse.

domingo, 9 de julio de 2006

ColdFusion - Consumir Servicios Web (Consuming Web Services)


Proceso para consumir un Servicio Web desde ColdFusion.
Existen diversas formas para acceder a un servicio web, a continuación se muestran algunas de ellas:
Forma 1
<!--Invoca el método para obtener la equivalencia entre monedas de 2 paises --> <cfinvoke webservice="http://www.xmethods.net/sd/2001/CurrencyExchangeService.wsdl"  method="getRate"  returnvariable="aRate"> <cfinvokeargument name="pais1" value="united states "> <cfinvokeargument name="pais2" value="mexico"/> </cfinvoke> 1 USD : <cfoutput>#aRate#</cfoutput> Pesos Mexicanos <br />
Descripción: Pegar el código arriba visualizado en su página cfm, con ello obtendra acceso al servicio WEB de equivalencia de monedas. Para este punto tu necesitaras reemplazar el valor del atributo value de los parametros pais1 y pais2 con los nombres de los paises que deseas usar para la conversion entre monedas. Para ver la lista de los paises disponibles ver http://www.xmethods.net/ve2/ViewListing.po?key=uuid:D784C184-99B2-DA25-ED45-3665D11A12E5.
 
Forma 2
<!--Invoca el método para obtener la equivalencia entre monedas de 2 paises --> <cfobject webservice="http://www.xmethods.net/sd/2001/CurrencyExchangeService.wsdl" name="ces"> <cfset aRate = ces.getRate("united states ", "mexico")> 1 USD: <cfoutput>#aRate#</cfoutput> Pesos Mexicanos
Descripción: Crea un objeto llamado ces el cual hace referencia al servicio web. Posteriormente se invoca al método getRate del objeto ces pasandole como parametros el pais1 y pais2 para que el servicio web nos obtenga la equivalencia de las monedas entre el Mexico y Estados Unidos, y el resultado se asigna a la variable aRate. Nota: Pegar el código arriba visualizado en su página cfm, con ello obtendra acceso al servicio WEB de intercambio de monedas.
 
Forma 3
<!--Invoca el método para obtener la equivalencia entre monedas de 2 paises --> <cfscript>  ces = createObject("webservice", "http://www.xmethods.net/sd/2001/CurrencyExchangeService.wsdl"); aRate = ces.getRate("reemplazarPorPais1", "reemplazarPorPais2"); </cfscript>

Descripción: Si esta haciendo uso de CFScript, puedes llamar el servicio web usando la función createObject(). Crea un objeto llamado ces el cual hace referencia al servicio Web. Posteriormente se invoca al método getRate del objeto ces pasandole como parametros el pais1 y pais2 para que el servicio web nos obtenga la equivalencia entre las monedas del pais1 y del pais2, y el resultado se asigna a la variable aRate. El primer parámetro de la función createObject() indica a ColdFusion que llame un servicio web. El segundo parámetro especifica la URL absoluta al archivo WSDL del servicio Web o el nombre del servicio Web registrado en el administrador de ColdFusion. Nota: Pegar el código arriba visualizado en su página cfm, con ello obtendra acceso al servicio WEB de autenticación por directorio activo.

miércoles, 5 de julio de 2006

Herramientas libres (free)

A continuación listo algunas herramientas de libre distribución y/o gratis las cuales son de gran utilidad para el proceso de desarrollo de software.

Navegadores Web

  • FireFox (http://www.mozilla.com/firefox/).- Excelente navegador. Podemos descargar skins o temas los cuales permiten cambiar la apariencia del navegador para agradar a la vista del usuario, permite abrir diversas páginas web sin necesidad de abrir una nueva ventana, así mismo se pueden descargar diversos plugins o extensiones con los cuales podemos leer desde nuestros emails hasta apoyarnos para el desarrollo de nuestras aplicaciones web. Algunas de las extensiones recomendadas son las siguientes: Web Developer, Console, JavaScript Debugger.
  • Internet Explorer. Si actualmente usas o deseas utilizar Microsoft Internet Explorer y eres desarrollador de aplicaciones Web te recomiendo descargar la versión Beta Internet Explorer Developer Toolbar el cual es muy similar a la extensión Web Developer para FireFox. Acceder a la siguiente dirección http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&displaylang=en o realizar una búsqueda en google (download Internet Explorer Developer Toolbar)

IDEs para Desarrollo Java

  • Eclipse (http://www.eclipse.org/).- Excelente IDE para desarrollo en diversos lenguajes como Java, C++, PHP. Cuenta con una gran cantidad de plugins lo cual permite ampliar en gran medida su potencial para el desarrollo de aplicaciones. Cuenta con plugins para realizar modelos UML, reportes, AJAX, etc.
  • JDeveloper (http://www.oracle.com/technology/products/jdev/).- Herramienta libre proporcionada por Oracle para el desarrollo de aplicaciones Java y PHP.
  • NetBeans (http://www.netbeans.org/downloads/).- IDE para el desarrollo de aplicaciones con el lenguaje Java, C++.

Administradores para base de datos

  • Oracle SQL Developer (http://www.oracle.com/technology/products/database/sql_developer/).- Herramienta gráfica para el desarrollo con base de datos Oracle para SQL. Esta herramienta nos permite la búsqueda de objetos, correr sentencias y scripts SQL, editar y debugear declaraciones PL-SQL. Hay diversas versiones para sistemas operativos Linux, Windows y Mac OSX.
  • Aqua Data Studio (http://www.aquafold.com/).- Herramienta administrativa que permite a los desarrolladores crear, editar y executar script SQL, así como visualizar y modificar estructuras de la base de datos de manera muy fácil.

Herramientas XML

  • XML Spy (http://www.altova.com/download.html).- Herramienta para el ambiente de desarrollo para el modelado, edición, transformación y debugeo para tecnologías relacionadas a XML.

Estas son solo algunas de las muchas herramientas que podemos encontrar en internet, las cuales son gratuitas y que cuentan con una excelente calidad.

miércoles, 28 de junio de 2006

JAVA - Crear un archivo JAR

Crear un archivo Jar Si deseas crear una libreria como por ejemplo con tus clases mas usadas, entonces lo recomendable es crear un archivo jar. Con ello podremos incluir la libreria en nuestros proximos proyectos de una manera muy sencilla. Hasta cierto punto, podriamos decir que los archivo .jar son algo similar a una dll. El comando para crear un archivo jar es:
  • jar cf arvhivo.jar archivo(s)-de entrada
  • jar cf mycompany.jar mycompany/*.class

Argumentos que se pueden utilizar con el comando jar:

  • La opción c indica que quieres crear un fichero JAR.
  • La opción f indica que quieres que la salida vaya a un archivo en vez de a stdout.
  • Archivo es el nombre que quieres para el archivo JAR resultante. Puedes utilizar cualquier nombre de archivo. No es obligatorio que el archivo JAR contenga la extensión .jar, aunque se recomienda que asi sea.
  • El argumento archivo(s)-de entrada es una lista delimitada por espacios de uno o más archivos que deben ser situados dentro de tu archivo JAR. Este argumento puede tener simbolo del comodín *. Si alguno de los archivo(s)-de entrada, es un directorio, el contenido de dicho directorio se añadirá al archivo JAR recursivamente.

Las opciones c y f pueden aparecer en cualquier orden, pero no debe existir ningún espacio entre ellas.

Este comando generará un archivo comprimido y lo colocará en el directorio actual.

También se puede añadir cualquiera de las siguientes opciones:

  • v - produce un salida en stderr (en versión 1.1) o stdout (en versión 1.2) mientras se construye el archivo. La salida te dice el nombre de cada archivo añadido al archivo JAR.
  • M - indica que no se debería producir el archivo de manifiesto (META-INF/MANIFEST.MF) por defecto.
  • m - utilizada para incluir información de manifiesto desde un archivo de manifiesto existente.
  • 0 - indica que no quieres que el archivo JAR sea comprimido.

Ejemplo:

C:\jdev1012\jdk\bin>jar cvf Company.Autentica.jar Company

Busca la ubicacion de tu jdk, en mi caso no eh instalado el jdk pero como estoy trabajando con jdeveloper, ubico la direccion del jdk y accedo al directorio bin. Una vez aqui, copio el directorio que contiene las clases y archivos que deseo integrar al archivo jar, y entonces procedo a ejecutar el comando arriba mencionado. Una vez ejecutado el comando se genera el archivo Company.Autentica.jar y ahora si, ya lo podemos incluir como una libreria en otros proyectos.

Directorio que contiene los archivos a integrar en nuestro .jar

Archivo .jar generado.

sábado, 20 de mayo de 2006

AJAX - Google Web Toolkit

AJAX es una tecnologia combinada de JavaScript, XML y HTML, lo cual resulta en aplicaciones web mucho mas dinamicas que las conocidas actualmente. Google ha implementado una herramienta en Java la cual soluciona diversas problematicas del desarrollo con AJAX como los son los distintos navegadores Web. El nombre de esta herramienta es Google Web Toolkit y al momento de escribir este blog se encuentra disponible en version Beta. Google Web Toolkit tambien conocido como GWT es una herramienta gratuita la cual crea codigo con soporte para los navegadores FireFox, Internet Explorer, Mozilla, Safari y Opera. GWT funciona con todas las herramientas de desarrollo para Java y permite disenyar pequenyas porciones de codigo que pueden ser reutilizadas y compartidas con otros desarrolladores. Basicamente consiste en escribir codigo en Java y el compilador de GWT convierte las clases Java a JavaScript y HTML. Si desean conocer mas de esta herramienta pueden visitar el siguiente sitio: http://code.google.com/webtoolkit/

domingo, 23 de abril de 2006

Mi primer blog

Bienvenidos, Este es mi primer blog que creo, en el cual voy a tratar temas principalmente de tecnologia, ingeniera de software y lenguajes de programacion. En el presentare articulos y opiniones personales referentes a estos temas. Las tecnologias, lenguajes de programacion y temas que tratare principalmente son los siguientes:
  • Patrones de diseno y Arquitectura
  • Java
  • .NET 2003 y 2005 (aspx y C#)
  • SQL
  • UML
  • XML
  • AJAX y JavaScript
  • CSS/CSS2
  • HTML
  • Tips
Ademas de estos temas, tambien se trataran algunas herramientas que apoyen a la productividad, y no se descarta hablar acerca de otros temas. Sin mas por el momento, me despido de ustedes y espero recibir sus comentarios y sugerencias para enriquecer este blog, saludos!!