lunes, 21 de febrero de 2011

APEX PLUGINS


Navegando por Internet de lo que uno se entera y hoy me toco toparme con los Plug-Ins para APEX, Que es esto?

Pues muchas veces en vez de desarrollar una complicada herramienta para nuestro sistema, debemos darnos la oportunidad de revisar si lo que queremos hacer ya lo hizo alguien mas y es ahí donde entran los plugins que oracle ya a liberado muchas herramientas para que tus aplicaciones sean aun mas completas con un par de clics extra, por ejemplo:

Agregarle el Boton Me gusta de Facebook , cambiar tu estatus en tweeter o agregar la funcionalidad del captcha de google a tu aplicación.

En el siguiente link encontraran una lista de los Plug-Ins que Oracle recomienda, así como los links a el repositorio de Plug-Ins:

Oracle APEX Plug-Ins

Sitio Oficial de Plug-Ins APEX

Espero les sean de utilidad.


domingo, 20 de febrero de 2011

Oracle, Where is the bug ?

Existen ocasiones donde nos encontramos con bugs dentro de nuestros programas y no podemos mostrar la salida de nuestro programa para ir dándonos una idea de donde ocurre el error, para ese tipo de situaciones Oracle nos brinda herramientas como el trace y a este aplicarle el famoso tkprof sin embargo no siempre tenemos a la mano el acceso al servidor por shell o simplemente no tenemos a un dba de cabecera ( yo sigo sin tener el mio y eso que en este proyecto hay 2 ) bueno pues para estas ocaciones lo que yo uso normalmente es un procedimiento que escribe en una tabla y me va dejando una pista te lo que ocurre en mi código.

El script de instalación es el siguiente:

CREATE SEQUENCE XXX_DEBUG_S;

CREATE TABLE "XXX_DEBUG_TAB"

( "ID" NUMBER,

"IDENTIFIER" VARCHAR2(50),

"CHAR_TIME" VARCHAR2(50),

"TEXT" VARCHAR2(4000) );

CREATE OR REPLACE PROCEDURE "XXX_DEBUG_TXT" (pIdentifier In Varchar2, pText In Varchar2) Is pragma autonomous_transaction;

Begin Insert into XXX_debug_tab

(id, identifier, char_time, text)

values

(XXX_DEBUG_S.nextval, pIdentifier, to_char(SYSTIMESTAMP, 'DD/MM/YYYY HH24:MI:SS FF6'), pText);

commit;

End; /


Ahora y esto para que nos sirve, pues es muy sencillo el procedimiento de arriba se encarga de insertar a una tabla cada ves que lo llaman, algo asi:

begin

XXX_DEBUG_TXT('DEPURA','AQUI ESTOY:'||VAR1);

end;


Que tiene esto de practico? Pues que lo puedes meter en cualquier parte de tu código y no altera tu procesamiento natural, ya que al utilizar la sentencia "pragma autonomous_transaction" este procedimiento se ejecuta dentro de una sesión diferente y su commit no afecta tu programa natural permitiendo que tu transacción continúe como si nada hubiese pasado y tu puedes seguir monitoreando desde otra sesión.

Y si ocurre algun error tu puedes ir guardando tus variables o datos que te puedan ayudar a identificar los bugs de tus programas o aquellos programas que te toque revisar.

Espero les sea útil y felices compilaciones ¡¡¡