martes, 13 de octubre de 2015

Buscar texto en Stored Procedures Mysql

Si deseamos buscar todos los stored procedures que contengan algún texto dentro ellos podemos hacer uso del information schema de la siguiente manera:

SELECT * 
FROM information_schema.routines 
WHERE routine_definition LIKE '%texto%' 
ORDER BY routine_name;
Reemplazando "texto" por el texto que usaremos de filtro.

domingo, 11 de octubre de 2015

Convertir Cursor a Diccionario Django

Si deseamos convertir el resultado de un cursor en un diccionario (para no estar lidiando con índices numéricos) podemos hacer uso de:


cursor.execute(sql, params)
result = []
detalles = cursor.fetchall()
for row in detalles:
        dic = dict(zip([col[0] for col in cursor.description], row))
        result.append(dic)
cursor.close()
return result

jueves, 8 de octubre de 2015

Generar Jnlp (Java Web Start) usando Netbeans

Ahora que Google prohibió el uso del plugin npapi en su navegador debemos encontrar algunas alternativas para ejecutar contenido java del lado del cliente. Una de ellas es Java Web Start, que consiste en un archivo JNLP, que los clientes se deben descargar y ejecutar en su máquina

Este archivo no es más que un XML con información acerca del JAR que queremos ejecutar. Al abrir el JNLP la màquina virtual de JAVA se encargará de bajar y ejecutar el JAR correspondiente o abrirlo desde su caché de archivos.

Para este ejemplo usaremos Netbeans para generar automáticamente el JNLP.

1) Usaremos un código sencillo: Un dialog presentando un "Hola mundo",


2) En las propiedades del proyecto entramos a la sección Application->Web Start

3) Dentro de esta sección debemos chequear la casilla "Enable Web Start" y en el combo de "Codebase" elegir la opción "User defined"


4) Esto habilitará el campo "Codebase Preview", este campo es muy importante ya que define  la ruta del servidor donde se almacenarán nuestros archivos JAR y JNLP, esto es para seguridad de que nuestra aplicación no sea ejecutada desde servidores externos.



5) En caso que tengamos la necesidad de generar nuestro JNLP dinámicamente y la ruta del mismo sea diferente de la del JAR podemos hacer uso del comodín "*", lo que indicará que nuestra aplicación puede ser accedida desde cualquier lado sin tener en cuenta la ruta.

El parámetro "Codebase" es agregado automáticamente en el MANIFEST de nuestro JAR por Netbeans, si queremos hacer uso de JNLP este parámetro es vital. Este parámetro de debe agregar ya sea por el IDE (como estamos haciendo y es automático) o manualmente en el MANIFEST.


6) Por último en la pestaña Files podemos encontrar el archivo JNLP y el JAR
Si observamos el archivo JNLP es llenado con los parámetros que especificamos anteriormente, donde debemos tener en cuenta:

  • El parámetro "href" indica la ruta de nuestro archivo JAR
  • Si usamos una ruta en el parámetro "codebase" en "href" sólo debemos especificar el nombre del JAR ya que este será relativo a la ruta de "codebase"
  • Si usamos el comodín "*" en el parámetro "codebase" en "href" debemos especificar la ruta absoluta hacia nuestro JAR
Para nuestro caso tomaremos el "launch.jnlp" sólo como plantilla ya que este será generado desde el servidor y se deberá especificar la ruta absoluta hacia los JAR en "href".


viernes, 2 de octubre de 2015

Obtener Query con Valores Python

Algunas veces queremos saber como quedará armado nuestro Query al reemplazar los parámetros para eso usamos:

cursor.execute(sql, params)
print cursor._executed



Si nuestra consulta es extensa y se nos dificulta verlo en consola, podemos exportarlo a un archivo:

cursor.execute(sql, params)
archivo= open('query.txt','w')
archivo.write(cursor._executed)
archivo.close()