miércoles, marzo 11, 2009

Problema con Java y campos float en Oracle 10

Me encontré con un problema realmente raro estos dias. Algunas partes de nuestra aplicación dejaron de grabar la parte decimal de los números en la base de datos, luego de actualizarla a Oracle 10.
Despues de mucho buscar, encontré que el problema se producía cuando se ejecutaba statement.setFloat() o statement.setObject() con un float. Reemplazándolo con statement.setDouble() todo funciona correctamente.
Alguien más tiene un problema parecido http://clint-hill.com/2008/12/19/when-floats-dont-float/ y lo explica mejor.

domingo, marzo 08, 2009

Como saber que archivos tienen un emblema en Gnome

Para usuarios de Linux y Gnome
Hace rato que quería hacer un pequeño programita que me devuelva una lista de los archivos a los cuales les apliqué un emblema con Nautilus.
Es muy simple:
Aca devuelvo una lista de los que tienen el emblema "important"



import os
import xml.dom.minidom

# cargo una lista con los archivos de metadata de nautilus
# cada archivo se corresponde con un directorio
def getFiles(parent, metadataFileList):
arqs = os.listdir(parent)
for a in arqs:
if os.path.isdir(parent + "/" + a):
getFiles(parent + "/" + a)
else:
if a[0:4] == "file" :
metadataFileList.append(a)

# obtengo el nombre real del directorio
def getRealPath(fileName):
fileName = fileName.replace("%2F","/")
fileName = fileName.replace("%2520"," ")
# le quito el file:// al principio y el .xml al final
return fileName[7:-4]


# busco los archivos con el emblema
def searchFilesWithEmblem(metadataFileName,emblem):
fileList = []
domMetadata = xml.dom.minidom.parse(metadataFileName)
for fileNode in domMetadata.childNodes[0].childNodes:
if fileNode.nodeType == fileNode.ELEMENT_NODE and fileNode.localName == "file":
for child in fileNode.childNodes:
if child.nodeType == child.ELEMENT_NODE and child.localName == "keyword" and child.attributes["name"].value == emblem:
fileList.append(fileNode.attributes["name"].value)
return fileList

# Leo variable de entorno
myhome = os.environ.get("HOME")
emblem = "important"
metadataFileList = []
metadataFilesPath = myhome+"/.nautilus/metafiles"
getFiles(metadataFilesPath,metadataFileList)
for metadataFileName in metadataFileList :
realPath = getRealPath(metadataFileName)
filesWithEmblem = searchFilesWithEmblem(metadataFilesPath+"/"+metadataFileName,emblem)
for fileName in filesWithEmblem:
print realPath+"/"+fileName