CAST en Oracle

marzo 29th, 2011

En oracle existe igual la posibilidad de hacer CAST de los tipos de datos en una consulta, por ejemplo:

select cast(12.2 as NUMBER(10,5)) FROM DUAL;
select cast('usuario' as VARCHAR2(100)) FROM DUAL;

Esto es util para cuando en algun resultado de una vista se esta esperando un tipo de datos especifico. Por ejemplo, si hacemos un select sobre una columna varchar2(100) la vista no será creada con una columna varchar2(100), sino que será creada con el maximo largo existente dentro de la columna que no necesariamente es 100, por lo mismo, para evitar posibles errores de conversión de tipos entre vistas o database link, es bueno uitlizar este tipo de solución.

Buscando archivo de gran tamaño en Linux

marzo 23rd, 2011

En busca de archivos de gran tamaño en linux basicamente se puede hacer con el comando find, de la siguiente forma para archivos de más de 50MB

find / -type f -size +50000k

Salida:

find / -type f -size +50000k 
/sys/devices/pci0000:00/0000:00:1e.0/0000:08:02.0/resource0
/var/log/btmp
/proc/kcore
/usr/lib/locale/locale-archive
/usr/java/jdk1.6.0_20/jre/lib/rt.jar

Con esto nos mostrará la lista de ubicación de los archivos, pero no nos dira su tamaño, si queremos disponer de él debemos complementar el comando de la siguiente forma

find / -type f -size +50000k -exec ls -lh {} \;

Salida

-rw------- 1 root root 128M mar 13 19:14 /sys/devices/pci0000:00/0000:00:1e.0/0000:08:02.0/resource0
-rw------- 1 root utmp 163M mar 22 13:47 /var/log/btmp
-r-------- 1 root root 8,6G mar 23 08:21 /proc/kcore
-rw-r--r-- 1 root root 54M oct 27 13:47 /usr/lib/locale/locale-archive
-rw-r--r-- 1 root root 50M ago  5  2010 /usr/java/jdk1.6.0_20/jre/lib/rt.jar

Finalmente si queremos que solo nos aparezca la ruta y el peso debemos aplicar un pipe con awk

find / -type f -size +50000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'

Salida

/sys/devices/pci0000:00/0000:00:1e.0/0000:08:02.0/resource0: 128M
/var/log/btmp: 163M
/proc/kcore: 8,6G
/usr/lib/locale/locale-archive: 54M
/usr/java/jdk1.6.0_20/jre/lib/rt.jar: 50M

Llamar a un Webservices Statefull de .Net desde Java con Metro

marzo 23rd, 2011

Me ha tocado llamar a un Webservices .Net pero que contenía una situación muy particular, debía inicialmente llamar a un método inicializador, que preparaba al Webservices para poder llamar a los otros métodos que éste contenía.

Con Netbeans generamos el proxy para el webservices a través de las librerías de Metro, pero luego, al intentar llamar al primer método y luego al segundo, se generaba un error debido a que el webservices reclamaba porque no se había llamado al método inicializador, aun cuando las dos lineas estaban puestas consecutivamente en el código. Esto porque era un Webservices Satatefull, o sea, que debíamos conservar el estado de las llamadas consecutivas para poder ser utilizadas.

De esta forma el siguiente ejemplo muestra como llamar a uno de este tipo de Webservices, se presume que aqui existe un proxy a Objeto que tiene dos métodos llamados metodoInicializador y segundoMetodo:

public class Main {
    public static void main(String[] args) {
         try {
            QName sName = new QName("https://algunNamespace.cl", "Objeto");
            Objeto objeto= new Objeto(new URL("https://algunServidor.cl/Objeto?wsdl"), sName);
            BindingProvider bp = ((BindingProvider) objeto.getWSHttpBindingIObjeto());
            bp.getRequestContext().put(BindingProvider.SESSION_MAINTAIN_PROPERTY,true);
            bp.getRequestContext().put(BindingProvider.SOAPACTION_USE_PROPERTY, new Boolean(true));
            ((IObjeto)bp).metodoInicializador("abcd");
            Data data =((IObjeto)bp).segundoMetodo("xxyyzz");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

Statefull v/s Stateless

marzo 23rd, 2011

En el medio de los EJB o webservices existen dos tipos de ellos que separan marcadamente la forma de como operar con ellos: Statefull y Stateless.

Estos dos tipos tienen que ver con la capacidad de guardar o no guardar el estado del EJB o Webservices. La diferencia implica el como se puede trabajar con ellos, por ejemplo si quisieramos sumar dos números y no podemos guardar el estado debiesemos hacer la operacion en una sola llamada:

suma(a,b)

En el caso que se pudiese guardar el estado de más llamadas a métodos consecutivas se podría hacer:

setA(numero)
setB(numero)
suma()

Con esto se entiende que se puede llamar a dos metodos y estos conservan la información de la instancia que se esta ocupando, luego de la primera llamada (establecer A) el EJB o Webservices conserva el estado y puede ser establecido B, para el StateFull (que conserva el estado) es válido, pero en el caso del Stateless luego de establecer A (setA) «olvida» que se estableció, por lo que luego al establecer B ya no recuerda que A fue establecido, ni menos al llamar a suma(), el Stateless no podría sumar ni A ni B porque no se acuerda que fueron establecidos. Por lo mismo para trabajar con Stateless hay que hacerlo a través de hacer todo en una sola operación como fue ejemplificado al principio: suma(A,B).

El standard GPRMC

enero 22nd, 2011

Cuando uno comienza el trabajo con GPS comienza también a encontrar un par de estandars o normativas que ya existen dentro del mundo GPS, una de ellas es la cadena GPRMC, que es la mínima recomendada, entendiendose como «mínima» por los datos mínimos que debiese contener la cadena. La mayoría de los dispositivos GPS transmite esta cadena y contiene: latitud, longitud, velocidad, rumbo, el tiempo procedentes de los satélites, un estado para ver la posibilidad de «arreglo» y la variación magnética.

La cadena GPRMC es una cadena separada por comas como esta

$GPRMC,195726.000,A,3324.9257,S,07036.3802,W,1.08,183.58,151210,,*0E

El primer valor, es la palabra del comando que indica que la frase debe interpretarse como el mensaje de mínimo recomendado.

Tiempo del satélite

$GPRMC,195726.000,A,3324.9257,S,07036.3802,W,1.08,183.58,151210,,*0E

El segundo valor representa la hora del dispositivo GPS, el tiempo en UTC, con formato «HHMMSS.XXX», donde HH representa las horas, MM representa los minutos, SS representa los segundos, y XXX representa milisegundos. El valor anterior representa 19:57:26.000 UTC.

Estado de Satélites

$GPRMC,195726.000,A,3324.9257,S,07036.3802,W,1.08,183.58,151210,,*0E

El tercer valor es la intensidad de la señal que viene de los satélites, cuando las señales de al menos tres satélites GPS se estabilizan, el dispositivo puede utilizar las señales para calcular la ubicación actual. Cuando el dispositivo puede calcular la ubicacion actual se envía un valor «A» que es el estado activo, sino se envía un valor «V»(de «no válido») indica que una solución no se puede obtener.

Latitud Grados decimales

$GPRMC,195726.000,A,3324.9257,S,07036.3802,W,1.08,183.58,151210,,*0E

La latitud norte es el cuarto valor y representa la distancia actual o al sur del ecuador. Esta palabra está en el formato «HHMM.M» donde HH representa horas y MM.M representa minutos. Un coma es implícita después de que el segundo carácter. Este valor se utiliza en conjunción con la longitud para marcar un punto específico en la superficie de la Tierra. Esta sentencia dice que la libertad actual es «33 ° 24.9257 ‘S».

Latitud Hemisferio

$GPRMC,195726.000,A,3324.9257,S,07036.3802,W,1.08,183.58,151210,,*0E

El quinto valor es la latitud del hemisferio que medir una distancia al norte o al sur del ecuador. Un valor de «N» indica el norte y «S» indica al sur.

Longitud Grados decimales

$GPRMC,195726.000,A,3324.9257,S,07036.3802,W,1.08,183.58,151210,,*0E

El sexto valor es la longitud representa la distancia actual al este o al oeste del Meridiano de Greenwich. Esta palabra está en el formato «HHHMM.M», donde HHH representa horas y MM.M representa minutos. Este valor se utiliza en conjunción con la latitud para marcar un punto específico en la superficie de la Tierra. Esta sentencia dice que la longitud actual es de «70 ° 36.3802 ‘W».

Longitud del Hemisferio

$GPRMC,195726.000,A,3324.9257,S,07036.3802,W,1.08,183.58,151210,,*0E

Esta palabra indica si la longitud es la medición de una distancia al este o al oeste del Meridiano de Greenwich. Un valor de «E» indica que este y «W» indica oeste.

Velocidad

$GPRMC,195726.000,A,3324.9257,S,07036.3802,W,1.08,183.58,151210,,*0E

Esta palabra indica que el ritmo actual de los viajes por tierra, se mide en nudos.

Rumbo

$GPRMC,195726.000,A,3324.9257,S,07036.3802,W,1.08,183.58,151210,,*0E

Esta palabra indica la dirección actual de los viajes más, medida como una «azimut». Un azimut es un ángulo horizontal de todo el horizonte medida en grados entre 0 y 360, donde 0 representa el norte, el 90 representa al este, 180 representa el sur, y 270 representa el oeste. Esta palabra indica que la dirección del recorrido es 183,58 °.

Fecha UTC

$GPRMC,195726.000,A,3324.9257,S,07036.3802,W,1.08,183.58,151210,,*0E

Los dispositivos GPS mantener su propia fecha y hora calculada a partir de las señales del satélite GPS. Esto hace que los dispositivos GPS de utilidad para la sincronización del reloj desde la fecha y la hora son independientes del reloj interno del equipo local. Esta palabra contiene los números de dos dígitos durante varios días, seguido por meses y años.

La suma de comprobación

$GPRMC,195726.000,A,3324.9257,S,07036.3802,W,1.08,183.58,151210,,*0E

La suma de control se utiliza para identificar los errores en los datos que se hayan producido durante la transmisión.

Early version para SQL Developer

enero 22nd, 2011

Ya se encuentra disponoible una versión preliminar de SQL Developer en su version 3.0.
Esta disponible para ser desacragada aqui