Activar ejecución a través de cron

abril 16th, 2011

La especificación del cron manifiesta los siguiente

*     *     *   *    *        comando
-     -     -   -    -
|     |     |   |    |
|     |     |   |    +----- dia de la semana (0 - 6)
|     |     |   +------- mes (1 - 12)
|     |     +--------- dia del mes (1 - 31)
|     +----------- hora (0 - 23)
+------------- minuto (0 - 59)

Por lo que al especificar

45     *     *   *    *        comando

El comando corre cada minuto 45 de cada hora, que es distinto que corra cada 45 minutos, para especificar eso se debe especificar de la sigiente forma

*/45     *     *   *    *        comando

Crear JOB en Oracle

abril 16th, 2011

Este código crea un JOB en Oracle que se ejecuta cada 1 hora

BEGIN
DBMS_JOB.isubmit (
job => 99,
what => 'procedimiento(''soy un parametro'');',
next_date => SYSDATE,
interval => 'SYSDATE + 1/24 /* 1 Hour */');

COMMIT;
END;

Ejemplos de uso de ADT para compilar AIR para Android

abril 16th, 2011

Luego de crear una aplicacion para AIR a para Android, existieron una serie de pasos que tuve que hacer para la instalación de la aplicación en el amulador del dispositivo, estos fueron:

Instalar el Runtime

adt -installRuntime -platform android -platformsdk path\android-sdk-windows -package path\Runtime.apk

Compilar la aplicacion cuando ya se tiene el SWF que se compila con flex

adt -package -target apk -storetype pkcs12 -keystore myKeystore.p12 aplicacion.apk aplicacion-app.xml aplicacion.swf

Instalar la aplicación a través de la línea de comando, esto presume que el Device está siendo ejecutado

adt -installApp -platform android -platformsdk path\android-sdk-windows -package aplicacion.apk

Diferencias entre Form.Activate y Form.GotFocus

abril 6th, 2011

En .Net existe al menos una diferencia fundamental entre el evento Activate y el evento GotFocus, en el formulario Activate ocurre siempre antes de GotFocus, pero GotFocus sólo ocurre cuando todos los controles del formulario en cuestión han sido deshabilitados.

Bug de MySQL cuando se establece SET columna= null

marzo 30th, 2011

Existe un error reportado a MySQL (https://bugs.mysql.com/bug.php?id=16494) que sucede en el momento que se establece una columna a NULL. En muchos de los casos sucede que envía el error que la columna no existe.

Dependiendo del tipo de dato se debe tener una forma de resolver el problema. Aun cuando no es lo mismo establecer NULL a una columna String que establecer » (vacío), pero debes considerarlo como solución cuando te aparezca el problema.

ROWNUM, select union e insert into

marzo 29th, 2011

Un problema que me sucedio radicó en que requería hacer desde una vista ya existente un INSERT INTO hacia una tabla destino, esta vista tenía una columna que hacía de identificador, pero al ver la consulta me di cuenta que utilizaba un UNION, era más o menos así:

insert into tabla (id, col1)
select rownum id, xyz from t1
union
select rounum id, zyx from t2

El problema no era la consulta ya que esta arrojaba resultado, la problematica se encontraba que el id generado no era unico, ya que en ambos casos el rownum partía de 1, lo que provocaba un error en el insert into.

La solución fue, crear un trigger que incrementara una secuencia y el valor lo depositara en ID,

create or replace trigger TRG_tabla 
before insert on tabla
   for each row 
begin  
   if inserting then 
      if :NEW.ID is null then 
         select SQ_tabla.nextval into :NEW.ID from dual;
      end if
   end if
end;

eliminar del insret into la columna ID, y luego ejecutar el insert into, con esto se solución el error de clave duplicada.

insert into tabla (col1)
select xyz from t1
union
select  zyx from t2