martes, 29 de diciembre de 2009

Milisegundos en Oracle: timestamp y systimestamp

Para almacenar la fecha, hora incluidos los milisegundos en Oracle, realizar lo siguiente:


create table esquema.tabla
(FECHA_HORA timestamp(5) default systimestamp
,MENSAJE varchar2(4000)
);


Para consultar los milisegundos con un query puede realizar lo siguiente:


select to_char(FECHA_HORA,'yyyy/mm/dd hh24:mi:ss FF3')
from esquema.tabla;


el numero despues del FF indica la cantidad de digitos de las fraccciones de segundo
Compartir:

domingo, 20 de diciembre de 2009

Para buscar en una cadena con PHP puede hacerlo ignorando mayusculas y minusculas mediante preg_match con el parametro i.

<?php
if (preg_match("/php/i", "PHP es un lenguaje web.")) {
    echo "Encontrado.";
} else {
    echo "No se encontro.";
}
?>
Para buscar una palabra completa con PHP mediante preg_match con el parametro b.

<?php
if (preg_match("/\bweb\b/i", "PHP es un lenguaje web.")) {
    echo "Encontrado.";
} else {
    echo "No se encontro.";
}

if (preg_match("/\bweb\b/i", "Este es mi website con PHP.")) {
    echo "Encontrado.";
} else {
    echo "No se encontro.";
}
?>

Compartir:

jueves, 17 de diciembre de 2009

Habilitar logs para mensaje SOAP de un WebService en JBoss

Si desea saber como son los mensajes SOAP de entrada y salida en JBoss; ubique el archivo /opt/jboss-as/server/all/conf/jboss-log4j.xml Alli agregue las siguientes lineas

   <!-- ================ -->
   <!-- Limit categories -->
   <!-- ================ -->

   <category name="org.jboss.ws">
       <priority value="DEBUG"/>
   </category>

   <category name="org.jboss.axis.transport.http.AxisServlet">
        <priority value="DEBUG"/>
   </category>
Con ello en el archivo /opt/jboss-as/server/all/log/server.log encontrara algo como:


2009-12-17 16:03:10,606 DEBUG [org.jboss.wsf.stack.jbws.RequestHandlerImpl] doPost: /transaction/TransactionBean
2009-12-17 16:03:10,606 DEBUG [org.jboss.wsf.stack.jbws.RequestHandlerImpl] handleRequest: jboss.ws:context=transaction,endpoint=TransactionBean
2009-12-17 16:03:10,606 DEBUG [org.jboss.ws.core.soap.MessageContextAssociation] pushMessageContext: org.jboss.ws.core.jaxws.handler.SOAPMessageContextJAXWS@15be5b6 (Thread http-100.111.100.001-8080-0)
2009-12-17 16:03:10,607 DEBUG [org.jboss.wsf.stack.jbws.RequestHandlerImpl] BEGIN handleRequest: jboss.ws:context=transaction,endpoint=TransactionBean
2009-12-17 16:03:10,607 DEBUG [org.jboss.ws.core.soap.MessageFactoryImpl] createMessage: [contentType=text/xml; charset=UTF-8]
2009-12-17 16:03:10,608 DEBUG [org.jboss.ws.core.jaxws.handler.HandlerDelegateJAXWS] callRequestHandlerChain: POST
Y mas abajo el mensaje SOAP de respuesta:

2009-12-17 16:03:10,622 DEBUG [org.jboss.ws.core.soap.SOAPContentElement] -----------------------------------
2009-12-17 16:03:10,622 DEBUG [org.jboss.ws.core.soap.SOAPContentElement] Transitioning from OBJECT_VALID to XML_VALID
2009-12-17 16:03:10,622 DEBUG [org.jboss.ws.core.soap.ObjectContent] getXMLFragment from Object [xmlType={http://ws.trx.interfase.loto.intralot.com.pe/}transact,javaType=class webservice.trx.model.Transaction]
2009-12-17 16:03:10,622 DEBUG [org.jboss.ws.core.jaxws.JAXBSerializer] serialize: [xmlName=return,xmlType={http://ws.trx.webservice/}transaction]
2009-12-17 16:03:10,622 DEBUG [org.jboss.ws.core.jaxws.JAXBSerializer] serialized: <return><arg0>0</arg0><arg1>8</arg1><arg2>Codigo</arg2><arg3> </arg3><arg4>11111</arg4><arg5>1</arg5></return>
2009-12-17 16:03:10,622 DEBUG [org.jboss.ws.core.soap.ObjectContent] xmlFragment: [source=<return><arg0>0</arg0><arg1>8</arg1><arg2>Codigo</arg2><arg3> </arg3><arg4>11111</arg4><arg5>1</arg5></return>]
2009-12-17 16:03:10,623 DEBUG [org.jboss.ws.core.soap.SOAPContentElement] -----------------------------------

Compartir:

miércoles, 16 de diciembre de 2009

Hacer mas memoria RAM en Windows

Despues de tanto instalar y desinstalar, algunos programas ya olvidados han estado funcionando sin que nos demos cuenta.

Asi que vaya al regedit y Busque en las Claves como Palabra Completa: "Run"

Alli encontrara todo lo que se ejecuta cuando inicia su sesion y la PC.

Borre aquello que ya no le interesa y tendra un inicio mas rapido y menos cosas en la memoria.

Tambien hay un proceso llamado ctfmon.exe (algo de funciones de texto avanzado y recomendabl para paises del Asia). Deshabilitelo en: Panel de Control > Configuración Regional y de Idioma > Idiomas > Detalles > Avanzada. Desactivare Servicios Avanzados de Texto.

Listo, tendra una PC mas rapida y ligera.
Compartir:

javax.mail.Session cannot be cast to javax.mail.Session

Es probable que este utilizando librerias mail.jar y activation.jar duplicadas.

El JBoss trae sus propias librerias las cuales encontrara en \jboss-as\server\all\lib

Su aplicacion tambien tiene sus propias librerias que estaran en \jboss-as\server\all\tmp\deploy\tmpapp-exp.war\WEB-INF\lib

Los jar pueden estar duplicados, sobretodo el mail.jar y el activation.jar, asi que borre todos los jars de app.war que ya trae por defecto el JBoss.
Compartir:

martes, 15 de diciembre de 2009

You cannot commit with autocommit set! JBoss

Estuve usando JBoss con una conexion oracle.jdbc.driver.OracleConnection; todo funcionaba bien. Pero finalmente termine por usar java.sql.Connection por un tema de WebService.

java.sql.Connection por defecto coloca la conexion como con.setAutoCommit(true). Y si aun por ello le haces con.commit() en el programa; se lanzara el mensaje "You cannot commit with autocommit set!".

Asi que usando java.sql.Connection, luego de la conexion debe hacer con.setAutoCommit(false) y los con.commit() van ha funcionar de nuevo.
Compartir:

viernes, 11 de diciembre de 2009

java.lang.NoClassDefFoundError: com/sun/xml/messaging/saaj/soap/AttachmentPartImpl

Si al correr un cliente WebService en Java le da el mensaje:

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/xml/messaging/saaj/soap/AttachmentPartImpl
at com.sun.xml.ws.message.AttachmentUnmarshallerImpl.(AttachmentUnmarshallerImpl.java:55)

Entonces agregue el siguiente jar a su proyecto

http://mirrors.ibiblio.org/pub/mirrors/maven2/xfire/sun-saaj-impl/2.0/sun-saaj-impl-2.0-ea3.jar
Compartir:

SOAP request exception setProperty must be overridden by all subclasses of SOAPMessage

Si al invocar un metodo de un webservice en JBoss sale el mensaje:

15:29:56,688 ERROR [SOAPFaultHelperJAXWS] SOAP request exception
java.lang.UnsupportedOperationException: setProperty must be overridden by all subclasses of SOAPMessage

Es por un conflicto entre el javax.xml.soap.SOAPMessage delJava 1.6 y la del JBoss 4.2

En un cliente webservice el error que muestra es:
javax.xml.ws.WebServiceException: No Content-type in the header!
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:143)

Para darle relevancia a las clases de JBoss copie:

jboss-jaxrpc.jar
jboss-jaxws.jar
jboss-saaj.jar

Los tres jars desde <JBOSS_HOME>\server\default\lib hacia <JBOSS_HOME>\lib\endorsed.
Compartir:

martes, 8 de diciembre de 2009

Modificar "Publicar un comentario en la entrada"

En diseño, Edición de HTML; ubique este codigo:


<b:if cond=\'data:post.allowComments\'>
  <a expr:href=\'data:post.addCommentUrl\' expr:onclick=\'data:post.addCommentOnclick\'><data:postCommentMsg/>Describe aquí tu sueño sobre este tema para una interpretación.
</a>
</b:if>

y reemplázelo por el siguiente:


<b:if cond=\'data:post.allowComments\'>
  <a expr:href=\'data:post.addCommentUrl\' expr:onclick=\'data:post.addCommentOnclick\'><!-- data:postCommentMsg/ -->Ingresa aqui tu opinión.
</a>
</b:if>
Compartir:

lunes, 7 de diciembre de 2009

Me sale "setProperty must be overridden by all subclasses of SOAPMessage" en JBoss

Si te sale este error al desplegar un webservice en Jboss:

ERROR [SOAPFaultHelperJAXWS] SOAP request exception
java.lang.UnsupportedOperationException: setProperty must be overridden by all subclasses of SOAPMessage
at javax.xml.soap.SOAPMessage.setProperty(SOAPMessage.java:445)

Copie estos 3 jars de la carpeta \server\default\lib hacia \lib\endorsed.

jboss-jaxrpc.jar
jboss-jaxws.jar
jboss-saaj.jar
Compartir:

Definir el puerto y la ip de un webservice en JBoss

Ubique el archivo jbossws.sar/jbossws.beans/META-INF/jboss-beans.xml

Alli modifique y habilite con los parametros correctos las siguientes lineas:


      <property name="webServiceHost">${jboss.bind.address}</property>
      <property name="webServiceSecurePort">8443</property>
      <property name="webServicePort">8080</property>
      <property name="alwaysModifySOAPAddress">true</property>

Compartir:

sábado, 5 de diciembre de 2009

Algunos avisos Adsense no se ven completamente en mi blogger.

Si esta usando la plantilla "Strech Denim" o "Stretch Denim Light" y desea modifcar la amplitud(ancho) de las secciones, entonces vaya a Diseño/Edicion de HTML y busque

#main-wrapper {
  margin-$startSide: 1%;
  width: 64%;
  float: $startSide;
  background-color: $mainBgColor;
  display: inline;       
  word-wrap: break-word; 
  overflow: hidden;      
}
#sidebar-wrapper {
  margin-$endSide: 1%;
  width: 29%;
  float: $endSide;
  background-color: $mainBgColor;
  display: inline;       
  word-wrap: break-word; 
  overflow: hidden;      
}

y cambie los porcentajes por lo siguiente.


#main-wrapper {
  margin-$startSide: 1%;
  width: 57%;
  float: $startSide;
  background-color: $mainBgColor;
  display: inline;       
  word-wrap: break-word; 
  overflow: hidden;      
}
#sidebar-wrapper {
  margin-$endSide: 1%;
  width: 36%;
  float: $endSide;
  background-color: $mainBgColor;
  display: inline;       
  word-wrap: break-word; 
  overflow: hidden;      
}

Con ello podra apreciar mejor los adsense 336x280 y 300x250

Vea el cambio realizado en este blog: http://toolboxnet-index.blogspot.com/
Compartir:

viernes, 4 de diciembre de 2009

Como realizo un bucle repetitivo en Oracle

Puede utilizar el WHILE, FOR o el LOOP

    limite := 1;
    WHILE limite <= 400
    LOOP
        suma := suma + limite;
        limite := limite + 1;
    END LOOP;


    FOR limite IN 1..400
    LOOP
        suma := suma + limite;
    END LOOP;
 
 
    limite := 1;
    LOOP
         suma := suma + limite;
         EXIT WHEN limite > 400;
    END LOOP;

 
    LOOP
       x := x + 1;
       IF x > 3 THEN
          EXIT;
       END IF;
    END LOOP;
Compartir:

jueves, 3 de diciembre de 2009

miércoles, 2 de diciembre de 2009

Recursividad : De como Martin aprende la recursividad con un dragón

Hace muchos años, antes que se inventaran las computadoras, había alquimistas que estaban interesados en las matemáticas. Como carecían de computadoras usaban dragones para que trabajaran para ellos. Pero los dragones eran perezoso y tenían mal genio, no siendo raro que incendiaran a alguien antes de hacer el mas minimo trabajo para el. Esta es la historia de como Martin el aprendiz de alquimista, descubrió la recursion venciendo con su inteligencia a un dragón perezoso.

Un dia el alquimista para el que trabajaba Martin le dio una lista de números y le dijo que bajara a las mazmorras y le preguntara al dragón si alguno de ellos era un numero primo. Martin nunca habia hablado antes con el dragón. Tomo una vela y bajó, encontrando al final de una oscura galería a un dragón viejo y de aspecto nada amistoso. Timidamente se acerco. El no quería ser reducido a cenizas por una llamarada del dragón.

-Que quieres tu?- gruño el dragon.
-Tengo una lista de numeros- dijo Martin -y deseo saber si alguno de ellos es primo. Esta es la lista...
Y Martin escribio la lista de numeros con una rama sobre el mugriento suelo.
[2197, 2401, 6859, 4913]

El dragon estaba de mal humor esta mañana. De hecho, siendo un dragon, siempre estaba de mal humor.

-Lo siento chico- dijo el dragon -solo te puedo decir si el primer numero de la lista es primo. Es lo mas que puedo hacer. Cualquier otra cosa seria demasiado complicada y probablemente no merezca la pena que me esfuerce.
-Pero necesito saber si algún numero de la lista es primo, no solo el primer numero -explico Martin.
-No insistas chico. Solamente examinare el primer numero de la lista. Examinare todas las listas que desees si me muestras lista por lista.

Martin se detuvo un a pensar un rato. Tenia que haber algún método de sobrellevar el mal humor del dragon.
-Bueno, entonces que me dices de esta lista?- preguntó señalando lo que habia escrito en el suelo.
[2197, 2401, 6859, 4913]
-El primer numero de la lista no es primo - dijo el dragón

Entonces Martin tuvo una idea, borró la primer parte de la lista y dibujó un nuevo corchete dejando
[2401, 6859, 4913]
-Que me dices de esta-dijo Martin.
-El primer elemento de esa lista no es primo-replico el dragon
Martin borró algo mas de la lista.
[6859, 4913]
-Y de esta?-volvió a preguntar.
-El primer numero de esta lista tampoco es primo- dijo el dragón.

Parecía algo aburrido pero al menos cooperaba.
-Y de esta otra?- insistió Martín.
[4913]
-No es primo-
-Y de esta?-
[]
-Esta lista esta vacía-gruño el dragón- no se puede tener ningún numero primo porque no hay nada en la lista.
-Bien -dijo Martín- ya que ningún numero de la lista que me dio el alquimista es primo, todos son "no primos".
-Yo NUNCA dije eso- protesto el dragón- Solo te dije lo que era el primer numero de cada una de las listas que me mostraste.
-Es cierto dragón. Puedo escribir las listas que has examinado?
-Si lo deseas...

Martín escribió en el suelo
[2197, 2401, 6859, 4913]
[2401, 6859, 4913]
[6859, 4913]
[4913]
[]
-Ahora toma el primer numero de cada lista -dijo Martín- Que obtienes?
-2197, 2401, 6859, 4913 y nada en la ultima- dijo el dragon.
-No lo ves?-dijo Martín- Diciéndome si el primer numero de cada una de las listas no era primo, me has dicho que ninguno de los números de mi lista original es primo.
-Es un truco-dijo el dragón- Parece que has descubierto lo que se llama recursion. Pero no me preguntes lo que significa. Tienes que pensar tu mismo en ello.

Y dicho esto el dragón cerro los ojos para dormir y rehuso decir nada mas.
Compartir: