//barrabarra

JAVIER ROMERO
Programación web y escritorio
 

Our blog, keeping you up-to-date on our latest news.

 

Error al indexar documentos en Elastic Search: MapperParsingException

julio 9, 2013 at 7:30 pm | Blog, Django, ElasticSearch, Programación | No comment

 

Hace unos minutos que he terminado de pelearme con ElasticSearch en el proyecto en el que trabajo así que vamos a dejar por aquí un apunte para que en el futuro pueda servir de referencia.

La situación es tener una instancia de un la clase JobOffer, la cual serializo, trato de antemano y envío a ES con el uso de la genial biblioteca de Python requests. El problema llega cuando el documento no se indexa y en su lugar recibo el siguiente error:

{"error":"MapperParsingException[object mapping for [joboffer] tried to parse as object, but got EOF, has a concrete value been provided to it?]","status":400}

Cuando esto -o algo similar a esto- ocurra tendrás que detenerte y examinar lado a lado la estructura en JSON que estás enviándole al índice y el mapping de dicho índice.

Cuando lo hagas, seguramente te encontrarás con que en alguna de las propiedades definidas en el mapping tiene algún atributo y que tu JSON no tiene esa atributo en esa propiedad, se ve más claro en el siguiente ejemplo, en el que primero muestro el mapping de la propiedad language (que es la que me estaba dando problemas) y a continuación el contenido del diccionario que estaba enviando:

language: {
    dynamic: "true",
    properties: {
        name: {
            type: "string"
        },
        pk: {
            type: "long",
            ignore_malformed: false
        },
    }
},

print data_dict["language"]
>> "es_ES"

Como se aprecia, en la propiedad language el mapeo esperaba recibir dos campos, pk y name, pero recibía directamente un valor “es_ES” y de ahí el error.

 

Instalar impresora Brother MFC-J4410DW en Archlinux

julio 3, 2013 at 6:49 pm | Blog, Sistemas | 2 comments

 

ACTUALIZADO (18/04/2016): Añadidas instrucciones para que CUPS pueda comunicarse con la impresora

Partimos de que la impresora Brother MFC-J4410DW ya está conectada por wifi al router. El manual lo explica con suficiente claridad.

Paquetes necesarios
Instala rpmextract, ghostscript, gsfonts, foomatic-filters y a2ps desde los repositorios. Si usas x86_64 instala también lib32-libcups.

Paquetes opcionales
Si usas KDE, instala kdeutils-print-manager.

Drivers
Descarga desde la web oficial de Brother los drivers para linux en paquetes RPM
Descarga tanto LPR driver como Cupswrapper driver.

Preparativos
Por el formato del sistema de archivos de Arch hay que hacer algunas modificaciones.
Extraemos los archivos desde el paquete RPM con:
$ rpmextract.sh mfcj4410dwlpr-3.0.0-1.i386.rpm
$ rpmextract.sh mfcj4410dwcupswrapper-3.0.0-1.i386.rpm

Nos creará dos carpetas, opt y usr
Modificaremos un script de la carpeta opt para sustituir la ruta “/etc/init.d” por “/etc/rc.d” con
$ sed -i 's|/etc/init.d|/etc/rc.d|' opt/brother/Printers/mfcj4410dw/cupswrapper/cupswrappermfcj4410dw

Instalación de los drivers
Simplemente copiamos los contenidos de las carpetas a su situación final como superusuarios:
# cp -r opt/* /opt
# cp -r usr/* /usr

Y por fin instalamos el wraper de cups (como root una vez más)
# /opt/brother/Printers/mfcj4410dw/cupswrapper/cupswrappermfcj4410dw
La salida de ese comando será algo similar a:
lpadmin -p MFCJ4410DW -E -v usb:/dev/usb/lp0 -P /usr/share/cups/model/Brother/brother_mfcj4410dw_printer_en.ppd

Añadir la impresora al sistema.
Y ahora para KDE, lanzamos las Preferencias del Sistema y buscamos el apartado de Impresoras, al entrar introducimos nuestra clave de root y elegimos añadir una impresora.
mfc-j4410dw-0

En el diálogo que se abre introducimos nuevamente nuestra clave de root, esperamos unos segundos y cuando detecte las impresoras conectadas a la red Brother elegimos la primera de ellas, pulsamos continuar.

mfc-j4410dw-1
mfc-j4410dw-2

En la siguiente pantalla veremos que nos pide qué driver usar, en la izquierda pinchamos sobre el fabricante Brother y en la derecha sobre el primer driver CUPS

mfc-j4410dw-3

A continuación nos pide que le demos un nombre, descripción y ubicación a la impresora. Una vez hecho, pulsamos en finalizar y ya estará lista para usarse.

mfc-j4410dw-4

mfc-j4410dw-5

ACTUALIZADO:

Es posible que hayas seguido todos estos pasos, la herramienta encuentre la impresora pero aún así no seas capaz de imprimir nada. Puede que el error venga porque CUPS intenta acceder a la impresora mediante el nombre que resuelve Avahi pero no es capaz. Para asegurarnos de que esto es lo que pasa podemos ejecutar:

avahi-browse -arl

que nos dará un listado de todos los dispositivos descubiertos, su IP y su nombre asignado. La impresora debe ser uno de los resultados con algo como:


...
= enp2s0 IPv4 Brother MFC-J4410DW PDL Printer local
hostname = [BRWF4B7E2071BCA.local]
address = [192.168.1.135]
port = [9100]
...

donde vemos la IP asignada en la red local (192.168.1.135) y el nombre (BRWF4B7E2071BCA.local). Lo que vamos a hacer es un ping a este último.

ping BRWF4B7E2071BCA.local

Si el ping funciona correctamente, la comunicación con la impresora es correcta y tu problema para imprimir es otro. Pero si no funciona, lo que tienes que hacer es instalar el paquete:

# pacman -S libnss-mdns

y editar el fichero etc/nsswitch.conf con:

hosts: files wins mdns4_minimal dns [NOTFOUND=return] mdns4[1]

Tras eso prueba de nuevo a ejecutar el ping y deberías poder imprimir finalmente.

[1] Info sacada de http://askubuntu.com/questions/460371/trouble-using-ssh-and-avahi

 

Categorias:

Archivo: