Jun 25

Acabo de enterarme a través de un post en el blog de www.digitalalchemy.tv que con tu cuenta de gmail puedes generar ilimitadas direcciones de correo. Tal como se explica en el post poniendo entre el nombre y la arroba un símbolo más y la cadena que quieras te seguirán llegando los correos a ti. Por ejemplo si tu cuenta es micuenta@gmail.com, los correos que envíen a micuenta+trabajo@gmail.com te seguirán llegando a ti. Y alguien puede preguntarse “¿Y esto para qué me sirve?”. Pues tal como explican en el post te puede servir para clasificar tu correo o incluso para saber qué lugares están exponiendo tu dirección a spammers.

Jun 06

Recientemente me han actualizado la versión de la base de datos 10g. Me llevé una gran sorpresa al ver que las consultas con GROUP BY ya no estaban ordenadas por los mismos campos de la cláusula. He programado en Oracle 8 y 9 y siempre había dado por hecho que, salvo que necesitara uno distinto, el orden sería el mismo que el del GROUP BY. He leído en un blog que Oracle ha cambido la estrategia de ordenación por defecto en la 10g. Ahora es HASH GROUP BY y comentan que tiene un bug que se resuelve en la 11g. En el blog dicen que oracle recomienda (en las versiones con el bug) poner el parámetro _gby_hash_aggregation_enabled parameter a FALSE o optimizer_features_enabled a 9.2.0.
Sin embargo, leyendo la nota 345048.1 ‘Group By’ Does Not Sort If You Don’T Use Order By In 10g lo que entiendo es que no es un bug. Sencillamente es un efecto colateral del algoritmo de agrupación (antiguo) lo que hacía que salieran ordenadas. Nunca ha habido garantías de ordenación. Por tanto toca poner order by a todas las consultas con group by lo que puede conllevar unas cuantas horas de divertida revisión del código.

May 13

Acabo de leer en un artículo de Tom que el interfaz de sql*plus para windows desaparecerá en próximas versiones de Oracle. En su lugar dejarán sólo el cliente para DOS y el iSql*Plus. A mi me da igual porque siempre he tenido la suerte de poder usar el sql*plus en el shell de linux, pero para mucha gente va a ser una putada. Un argumento más para pasarse al lado oscuro de Lord Toad.

Apr 27

Estoy programando unas paginillas con Hibernate 3 y JDeveloper. Hice primero las clases del modelo y las testeé. Todo funcionaba perfectamente hasta que traté de invocarlas desde un backing bean. El error era: ClassNotFoundException: org.hibernate.hql.ast.HqlToken. Después de mucho buscar resulta que el amigo AMIS tenía la solución. Agregé esta línea a mi hibernate.cfg.xml:

<property name="query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>

Me gustaría encontrar otra solución mejor, pero de momento puedo ir tirando con esta. El problema parece ser un conflicto con un jar del OC4J embebido. Como en este proyecto no estoy usando librerías propietarias de oracle y finalmente desplegaré sobre un tomcat luego sólo tendré que eliminar esa línea del fichero de configuración.

Jan 27

He encontrado una introducción en castellano al mundo del Google Web Toolkit (abreviado como GWT). Hace tiempo intenté introducirme en ese mundillo, pero me perdí un poco. Esta guía en castellano lo hace un poquitín más fácil. Por si a alguien le resulta útil este es el enlace: Google Web Toolkit - Documentación en Español.

Jan 25

Muchas veces he necesitado crear una vista para sustituir una antigua tabla. En ocasiones he tenido que mantener en la vista una columna que ya no existe pero que debo dejar por algún motivo. Lo que hago es definir la columna como “Función(NULL) AS NOMBRE_COLUMNA”. Si es VARCHAR2 pongo directamente NULL. Si quiero que sea un number TO_NUMBER(NULL) y si es una fecha TO_DATE(NULL). Por ejemplo:

1
2
3
4
5
6
CREATE OR REPLACE VIEW CAMPOS_NULOS AS(
  SELECT NULL              AS CADENA_VACIA,
         TO_NUMBER( NULL ) AS NUMERO_VACIO,
         TO_DATE( NULL )   AS FECHA_VACIA
  FROM DUAL )
/

Si hacemos un desc:

SQL> DESC CAMPOS_NULOS
 Nombre        ¿Nulo?   Tipo
 ------------- -------- ----------------------------
 CADENA_VACIA           VARCHAR2
 NUMERO_VACIO           NUMBER
 FECHA_VACIA            DATE

El único problema, como puede verse en el ejemplo, es que perdía la precisión. Continue reading »

Jan 24

Investigando un poco más sobre subversion me he enterado de que en el repositorio hay un directorio hooks en el que puedes poner scripts que se ejecuten en distintas situaciones. Como si fuera un trigger. De hecho, el artículo donde lo he visto, Snapshots automáticos de SVN, describe cómo hacer un post-commit en el repositorio. No, si al final me va a gustar el subversion este.

Jan 23

Después de instalar Oracle XE en mi ubuntu 7.10 tenía tres inquietudes:

  1. Por error le había dicho al configurarlo que se iniciara al arrancar la máquina. Quiero que el inicio sea manual.
  2. Quería poder usar el sql*plus desde un terminal con mi usuario de linux habitual.
  3. Quería poder acceder al interfaz web de administración desde cualquier ordenador de mi red (por defecto sólo permite acceder desde localhost).

Continue reading »

Jan 22

He sabido gracias al blog Ubuntu destiny de una curiosa página que permite a cualquiera compartir código fuente en el tiempo que tardas en hacer copy-paste: Ubuntu Pastebin.

Jan 21

Leyendo un post del blog de CafeLojano llegué a otro post del blog Java 2 Go! donde cuentan la existencia de un fichero de configuración que lleva JDeveloper. En él se pueden configurar varios parámetros, entre ellos el java home o la memoria que quieres que utilice la JVM. Está bien saberlo.