Inicio - page 5

Debug remoto en Tomcat

Debug remoto en Tomcat

A veces necesitamos saber qué se está ejecutando en un servidor remoto, ver el valor de sus variables, comprobar si ciertos bloques de código se están ejecutando, etc. Hoy he descubierto que Tomcat ofrece la posibilidad de abrir un puerto para permitir que IDEs como Eclipse o Intellij Idea se conecten a «debuguear».

Lo primero que necesitamos es indicarle a Tomcat que ofrezca esta utilidad. Esto se hace modificando el fichero «setenv.sh» (o su equivalente en Windows) para añadir lo siguiente:

JAVA_OPTS="$JAVA_OPTS -Xdebug
   -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"

Reiniciamos Tomcat …

Una vez hecho esto, en nuestro entorno de desarrollo habitual, podemos configurar el «Remote Debugging» para que se conecte con nuestro Tomcat. No voy a extenderme mucho porque la configuración depende del IDE que usemos, pero vaya, en todos es parecidos.

Debug Remoto

Sólo falta seleccionar la opción correcta en el desplegable que especifica dónde está el código fuente en nuestro ordenador. Guardamos cambios, y listo.  Lo siguiente es añadir puntos donde detener la ejecución, consultar el valor de las variables y demás, pero eso ya es otro tema en el que en esta entrada no voy a entrar.

Ale, otro día más!

🙂

Javap: Decompilador de Java

Javap: Decompilador de Java

Javap es un decompilador de Java incluido por defecto en la instalación del JDK. Nos permite coger una clase Java compilada (el archivo .class) y obtener de él información como qué métodos contiene, para qué versión se ha compilado, ver el bytecode (el código que la JVM ejecutará después, etc.

Algunos ejemplos de uso:

# Muestra los métodos
javap myClass

# Muestra la versión para la que se ha compilado
javap myClass -v | grep version

 

Hay bastantes opciones, podéis encontrar más información sobre esta utilidad aquí: http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/javap.html

Ale, pues hasta la próxima! 🙂

Traza de invocaciones en Java

Traza de invocaciones en Java

A veces me he encontrado en la situación de que no sé quien invoca una función determinada en algún código que estoy modificando. Sé que se ejecuta pero no quien lo hace. Como problema añadido, los niveles de traza en los logs no me dan más información, y no puedo ponerme mensajitos por pantalla porque no puedo modificar las clases intermedias.

Para ayudarme con este problema he encontrado este bloque de código:

for(StackTraceElement ste : Thread.currentThread().getStackTrace()) {

     System.out.println(ste.getClassName() + "."
           + ste.getMethodName() + "()");

}

 Lo que hace es, en un punto determinado del código, mostrarme la pila de invocaciones que se han ido realizando hasta llegar a ejecutar mi código mostrando, para cada una de las invocaciones, el nombre de la clase en cuestión y el método que realiza la llamada.  Así que como es muy útil lo dejo aquí apuntado para no perderlo.

Otro día más, y mejor!    🙂

Sincronizar carpetas con rsync

Sincronizar carpetas con rsync

El comando rsync sirve para copiar archivos o carpetas tanto locales como remotas. Es parecido a un scp, pero con algo que lo hace más útil.

No sólo realiza la copia sino que comprueba previamente qué archivos ya están en la carpeta destino para no copiarlos innecesariamente. De esta forma ahorra tiempo y transferencia a la hora de migrar nuestros datos entre diferentes máquinas.

Otra opción que me parece muy útil es que se puede especificar que si un archivo está en la carpeta destino pero no en el origen, se borre del destino.

rsync -aPv  [--delete] [usuario@máquina_origen:]ruta_origen
          [usuario@máquina_destino:]ruta_destino

Tiene una lista bastante completa de opciones, pero he puesto las que más útiles me parecen:

  • a: archive
  • P: progress. Mostrar archivos que faltan por transferir
  • v: verbose. Si no decimos nada, no se muestra información
  • –delete: Si un archivo del destino NO está en el origen, se borra del destino

Otro día os cuento más cosas 🙂

CodePen: Prueba HTML, CSS y Javascript al mismo tiempo

CodePen: Prueba HTML, CSS y Javascript al mismo tiempo

CodePen es una herramienta muy útil para desarrolladores, que permite probar al mismo tiempo el código HTML, los estilos CSS y el Javascript al tiempo que programan sus frontends.

Es muy sencillo de utilizar, simplemente creamos un «Pen» y tendremos nuestras tres áreas para escribir nuestro código. Podemos añadir nuestro HTML, después estilos y trozos de Javascript e ir viendo cómo queda debajo, todo en directo. Con cada cambio que introduzcamos podemos ver el resultado inmediatamente.

La herramienta permite además importar librerías como jQuery y otras muchas (también propias del programador si proporciona la URL), hojas de estilos y muchas otras cosas más.

Lo encuentro extremadamente útil para compartir código y enseñar cómo funciona, y llevo idea de utilizarlo de ahora en adelante para que podáis ver mis ejemplos funcionando online.

También podéis incrustarlo en una web. Para que veais cómo queda, os dejo un ejemplo aquí debajo.

[CodePen height=150 show=html href=bhsvm user=llatasa ]

Podéis verlo a pantalla completa desde aquí.

Hasta aquí mi entrada de hoy. Otro día más y mejor! 🙂

Page 5 of 6 ← First ... 2 3 4 5 6