Archivo

Archive for 25 septiembre 2009

Dependencias en maven

septiembre 25, 2009 Deja un comentario

Es malo incluir la libraría log4j.jar en una aplicación deployada en JBoss por ya la trae él y hay temas de classpath. Vamos, que se hace un follón con las dos versiones.

Especial cuidado hay que tener por las dependencias transitivas de maven: tu no la incluyes a posta en el pom.xml de tu projecto pero se cuela en el war porque forma parte de una dependencia de otra librería que necesitas.

Te puedes volver loco buscando qué dependencia es es culpable de que se incluya esa librería. Pero hay una solución perfecta para ello:

$ mvn dependency:tree

Esto muestra todo el árbol de dependencias y podrás ver de dónde cuelga. Luego simplemente tienes que añadir la exclusión de dicha librería en la dependencia maligna:

<exclusions>
  <!-- JBoss already have its own log4j.jar -->
  <exclusion>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
  </exclusion>
</exclusions>
Anuncios
Categorías:Java Etiquetas:

Comparación de cadenas en MySQL

septiembre 18, 2009 Deja un comentario

Hoy he flipado en colores: resulta que MySQL evalúa

select 'A'='a'

a true. O sea, que para él son iguales. Para que haga la compración Como Dios Manda ™ lo tienes que escribir así:

select 'A' like binary 'a'

Lo más triste es descubrir esto después de tantos años trabajando con esta base de datos. Y lo he descubierto porque me he equivocado escribiendo el nombre de usuario en un OpenKM que estoy montando.

Repito, flipo.

Categorías:Ubuntu Etiquetas:

Chequeo de particiones en linux

septiembre 17, 2009 Deja un comentario

Supongamos que hemos tenido algún problema con el disco y queremos comprobar una partición. Lo normal es que la partición esté formateada en ext3, por lo que ejecutamos el comando:

$ fsck.ext3 /dev/sda1

Pero puede ser que dicha partición sea la que esté montada como raíz del sistema de ficheros, y no es buena idea usar el comando “fsck” con una partición montada. Una solución forzar el chequeo de la partición en el próximo arranque:

$ tune2fs -c 3 -C 3 /dev/sda1

Con esto hacemos que la cuenta de montaje máxima se establezca a 3, y la cuenta actual también a 3 con lo que conseguimos que en el próximo reinicio del sistema se compruebe la partición. También podemos forzar a que se compruebe la partición cada 5 días:

$ tune2fs -i 5d /dev/sda1

Categorías:Ubuntu

Hacer una web compatible con Android.

septiembre 7, 2009 Deja un comentario

Quizás el título no sea todo lo descriptivo que debiera ser ya que, en principio, cualquier web se puede visualizar en el navegador que viene por defecto en Android. Pero al ser tan pequeña la pantalla del dispositivo, no quedarán tan bien como en nuestro ordenador de escritorio.

Vayamos al grano. Una particularidad de los móviles con Android es que cambian a modo apaisado los giramos. De esta forma se pueden ver un poco mejor las webs normales al tener más ancho disponible. Nosotros, como vamos a hacer una web especialmente para Android tenemos que tener en cuenta esto. Hay que aprovechar todo el espacio que se pueda 🙂

El siguiente código es una página que muestra si el navegador está en modo apaisado o vertical gracias a la propiedad de orientation del objeto window de javascript. Este valor varía entre 0 (vertical) y 90 (apaisado). Si vamos tumbando y levantando el móvil al recargar la página nos muestra la orientación.

(Nota: Para acceder al servidor web instalado en tu ordenador desde el emulador de Android ve a http://10.0.2.2/ )

<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <script type="text/javascript">
    window.addEventListener("load", function() { setTimeout(loaded, 100) }, true);
    function loaded() {
      if (window.orientation == 90) {
        document.getElementById('orientacion').innerText = 'apaisado';
      } else {
        document.getElementById('orientacion').innerText = 'vertical';
      }
    }
  </script>
</head>
<body>

<b>Orientacion:</b> <span id="orientacion"></span>
</body>
</html>

Pero bueno, esto es útil cuando entre un usuario en la página. ¿Pero que pasa si el usuario cambia la orientación del navegador luego? ¿Tiene que volver a recargar para la página lo dectecte? La respuesta corta es que si, pero ciertamente es muy cutre.

El navegador de iPhone (que al igual que el de Android está basado en Webkit) implementa un evento llamado onOrientationChange, que ya os podéis imaginar lo últil que es para dectectar esos cambios de orientación. El amigo Android nos lo pone más complicado… Pero sólo un poco 🙂 Sólo tenemos que ir comprobado si hay cambios en la orientación continuamente:

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript">
  var previa = -1;
  window.addEventListener("load", function() { setTimeout(loaded, 100) }, true);
  function loaded() {
    if (previa != window.orientation) {
      if (window.orientation == 90) {
        document.getElementById('orientacion').innerText = 'horizontal';
      } else {
        document.getElementById('orientacion').innerText = 'vertical';
      }
      previa = window.orientation;
    }
    setTimeout(loaded, 100);
  }
</script>
</head>
<body>
  <b>Orientación:</b> <span id="orientacion"></span>
</body>
</html>

Ale, a jugar!

Categorías:Android

Compartir ficheros de forma rápida

septiembre 2, 2009 Deja un comentario

A veces necesitas compartir unos ficheros con un compañero de trabajo u otra persona. De hecho puede que sea algo puntual y lo necesitas ya! No te vas a poner a instalar y configurar algún paquete porque tienes prisa. Bien, existe una forma muy simple de hacerlo y con sólo una línea. Sólo depende de que tengas Python instalado en tu máquina, y si usas Ubuntu seguro que cumples con este requisito.

La línea mágica es la siguiente:

$ python -c “import SimpleHTTPServer; SimpleHTTPServer.test();”

Para comprobar que funciona ve a http://localhost:8000. Lo bueno que tiene este sistema es que incluso puedes compartir con personas que estén en la otra punta del mundo. El único trabajo adicional será configurar el NAT de tu router para que apunte al puerto 8000 de tu máquina.

Simplemente di a la otra persona que vaya a http://tu-ip:8000/ desde su navegador y verá la lista de ficheros y directorios que compartes. Cuando quieras dejar de compartir esos ficheros, simplemente haz un CTRL+C .

Aún lo puedes hacer más fácil insertando este alias en tu fichero ~/.bashrc :

alias webshare=’python -c “import SimpleHTTPServer; SimpleHTTPServer.test();”‘

Categorías:Ubuntu Etiquetas: