Linux esborrar directoris ocults
Windows o macos tenen el costum de crear directoris o fitxers ocults de thumnails o similars a qualsevol unitat a la que accedeixen. Si des de Linux volem veure aquests directoris podem fer:
Per a els fitxers
find . -name ".*" -type f -iname ".*" -ls
Per als directoris
find . -name ".*" -type d -iname ".*" -ls
I si volem esborrar-los (enseny!!)
Cita apropiada para ITs - Alfred North Whitehead
Alfred North Whitehead realizó grandes aportaciones a la lógica matemática y la filosofía, especialmente al estudio de las relaciones. Se le considera uno de los padres del naturalismo. Extraído de la wikipedia:
A pesar de ser un gran británico, durante su estancia en USA quedó admirado del carácter norteamericano:
Django llamar a procedimientos almacenados Oracle con parámetros de salida
En el momento de escribir esto (1.6 de django) y después de darle varias vueltas, he llegado a la conclusión de que no es factible acceder al contenido de los parámetros de retorno sin usar directamente cx_Oracle, lo que en un momento dado puede repercutir en la portabilidad de la aplicación.
Teniendo esto claro, se trata de diseñar una estrategia que nos permita usar toda la potencia de los procedimientos almacenados con el mínimo coste en caso de cambiar de gestor de base de datos.
He intentado alejarme del estándar lo menos posible pero, como he comentado, no veo forma de librarse del uso directo de cx_Oracle. Esto es debido a las particularidades que presenta cada gestor a la hora de reservar espacio para las variables de salida en función del tipo. Por ello, lo que he hecho es escribir una función para cada tipo de parámetro de salida, por ejemplo,
from django.db import connection
import cx_Oracle
def call_proc_str1(cadena, valors=None):
""" llama a un procedimiento Oracle cuyo ultimo parámetro es un string de salida """ cur = connection.cursor()
# preparam cadena per a Oracle
cadena="BEGIN %s; END;;" % (cadena,)
# preparam el parametre de sortida
sortida=cur.cursor.var(cx_Oracle.STRING)
# afeixim paràmetre com a darrer
valors.append(sortida)
try:
cur.execute(cadena, valors)
# retornam paràmetre de sortida
return sortida.getvalue()
except Exception, e:
mensaje="%s Error: call_proc cadena#%s valors#%s" % (e, cadena, valors)
logger.error(mensaje)
raise Exception(mensaje)
finally:
cur.close()
- Hay que formar la cadena de la llamada como cadena="BEGIN %s; END;;" % (cadena,). Es debido a la forma cómo se hace la llamada via execute.
- Se crea y se reserva espacio para un string mediante cur.cursor.var(cx_Oracle.STRING) y se añade al final de los parámetros de conexión.
- Extraemos el valor del parámetro mediante sortida.getvalue()
Para un procedimiento como este:
create or replace procedure prueba(La llamada sería
param1 in varchar2,
param2 in varchar2,
param3 out varchar2) as .....
try:
plsql="prueba(%s, %s, %s)"
param3=call_proc_str1(plsql, [param1, param2])
return jOk(param3)
except Exception, ex:
return jErr(str(ex))
En resumen; No es la mejor solución del mundo pero es fácil de portar si cambiamos de gestor de base de datos.
python cx_oracle code patterns
Here some useful notes about cx_Oracle taken from dbaportal.eu
http://dbaportal.eu/sidekicks/sidekick-cx_oracle-code-paterns/
and a pdf backup.