¿Cómo unir dos diccionarios en python? (ACTUALIZADO)

Hola de nuevo.

Como siempre acá les dejo otro microtip, que les puede servir en algún momento y esta vez es de python…

Antes de comenzar, si prefieres ver esta explicación en video, te lo dejo por acá

Si prefieres seguir leyedo, ¡Comencemos!

Python 3 nos trae nuevas funcionalidades interesantes que nos hacen la vida as facil y una de ellas es este interesante trudo que en python 2.7 no podíamos hacer directamente. Los siguientes pasos son válidos desde la versión 3.5 de Python, por lo que te servirá siempre que tengas una versión ygual o mayor a esta.

Bien, supongamos que tenemos dos dict «X» y «Y» y queremos hacer un «merge» de estos, lo único que deberíamos hacer es lo siguiente:


>>> x = {'a':1,'b':2}
>>> y = {'b':3,'c':4}
>>> z = {**x, **y}
>>> z
{'b': 3, 'c': 4, 'a': 1}

¿Facil, no? Python ❤

Espero que les sea de utilidad.

Hasta un próximo microtip.

Problema de automontaje USB Linux

¡Bienvenidos! con este post comienzo mi nuevo blog mas general y facil de recordar que algoritmoselinventor (aunque le tengo mucho cariño :’-) ) xD y que estará destinado a todo lo que venía haciendo y algunas cosas nuevas… jeje.

Y con este doy inicio también a mi nueva sección Micro tips

Ok, manos a la obra…

Este es un tema que me había pasado varias veces y conozco a varios que les pasa lo mismo, pero no le había prestado mucha atención dado la carga de trabajo que tenía acumulada… Pero bueh… ¡Ya no más!

Me sucede que cuando hago una instalación desde un Net-Install y luego instalo un entorno gráfico (en mi caso Gnome o Fluxbox) desde un repo cualquiera. Los dispositivos como pendrives o memorias SD se montan con permisos de root y no se montan en el directorio /media/usuario/etiqueta como ya estamos acostumbrados desde hace varias versiones de Linux/Debian atrás.

Entre otras cosas, esos son los «síntomas» que he percibido en el comportamiento con las memorias de formato VFAT (fat32, etc..)

  • Se montan en /media/usb0, /media/usb1, etc…
  • Se montan con permisos de solo lectura.
  • Solo los puedes escribir como root en la terminal (y si lo quieres gestionar desde interfaz gráfica tienes que lanzar nautilus, pcmafm u otros como root).
  • Solo los puedes desmontar como root.
  • La transferencia de datos en estos dispositivos es muy lenta comparada con otros.
  • En algunos casos, no se terminan de transferir los archivos o se transmiten corruptos.
  • Cuando la transferencia de archivos es muy grande puedes notar como que la máquina se pone un poco lenta (y en algunos casos Gnome se pone un poco loco).
  • Este comportamiento no afecta las particiones o dispositivos extraíbles en formato ntfs.
  • Solo puedes desmontarlos como root.

Esto pasa cuando instalamos desde un net-install y luego le ponemos Gnome u otro entorno… primero daré la solución, y si les interesa, luego les explico el por qué.

Solución:

1) Abrir un terminal

Como siempre el # significa que estamos como root y el $ que estamos como usuario normal (no es parte del comando).

2) Verificar que tienen instalado el paquete usbmount

# aptitude search usbmount

Si está instalado, el terminal debería mostrar algo como lo siguiente

i usbmount - automatically mount and unmount USB mass storage devices

el «i» al principio significa que está instalado

3) Lo desinstalamos

# aptitude remove usbmount

4) Verificamos de nuevo que se ha desinstalado

# aptitude search usbmount

Si está desinstalado, el terminal debería mostrar algo como lo siguiente

c usbmount - automatically mount and unmount USB mass storage devices

el «c» al principio significa que ya está desinstalado

5) ¡Listo!

¡A dejar que udev maneje el montaje! Si quieres comprobar si ya tus USB se montan y se desmontan como lo harían normalmente, conecta un pendrive y prueba.
Ya puedes seguir con tu vida… Ahora… Si quieres conocer la explicación, sigue leyendo…

Esto ocurre porque cuando haces una instalación desde el net-install (ya que es una instalación base sin interfaz gráfica) se instala el paquete usbmount que es una aplicación que monta dispositivos de almacenamiento extraíbles cuando están conectados y los desmonta cuando se eliminan como una instancia de Udev para poder gestionarlos de manera mas fácil y este queda gestionando los montajes y salta por encima de HAL.

Bueno, para no hacer el cuento mas largo, si quieres saber más de Udev, Dbus y Hal y cómo funciona la gestión de dispositivos en el sistema Linux moderno lee este artículo

Entonces…

¿Por qué se montan en /media/usb0, /media/usb1, etc…?
Porque los directorios de montaje de usbmount son estáticos y así están definidos en /etc/usbmount.conf que es el archivo de configuración para el paquete usbmount.
Por eso siempre los monta en /media/usb0, /media/usb1… Hasta el media/usb7 que son los que tiene pre-configurados.

¿Por qué se montan con permisos de solo lectura? y ¿Por qué solo los puedes escribir, montar/desmontar como root?
Porque en el usbmount.conf por defecto, las opciones de montaje de los dispositivos son noexec, nodev, noatime, nodiratime además, se montan con opciones de file system dmask, fmask y gid con permisos sólo para el root, así que por eso solo los puedes administrar desde el root a menos que edites el archivo usbmount.conf

¿Por qué La transferencia de datos en estos dispositivos es muy lenta comparada con otros?, ¿En algunos casos, no se terminan de transferir los archivos o se transmiten corruptos?, Cuando la transferencia de archivos es muy grande puedes notar como que la máquina se pone un poco lenta (y en algunos casos Gnome se pone un poco loco).

Ok… la lentitud es porque, además de las opciones de montaje noexec, nodev, noatime y nodiratime, hay una opción extra, la opción «sync«, esta, en el montaje que hace que sincronice los archivos con el sistema antes y después del montaje.
La opción «sync» puede no ser una buena opción para usar con unidades flash, ya que fuerza una mayor cantidad de escritura operando en la unidad. Esto hace que la velocidad de escritura considerablemente inferior y también conduce a un desgaste más rápido del disco.
En el Warning del archivo usbmount.conf dice lo siquiente:

 The "sync" option may not be a good choice to use with flash 
drives, as it forces a greater amount of writing operating on the 
drive. This makes the writing speed considerably lower and also 
leads to a faster wear out of the disk.

If you omit it, don't forget to use the command "sync" to 
synchronize the data on your disk before removing the drive or 
you may experience data loss.

It is highly recommended that you use the pumount command 
(as a regular user) before unplugging the device. It makes 
calling the "sync" command and mounting with the sync option 
unnecessary---this is similar to other operating system's 
"safely disconnect the device" option.

¿Por qué este comportamiento no afecta las particiones o dispositivos extraíbles en formato ntfs?
Los sistemas de archivos que gestiona el usbmount por defecto son: vfat, ext2, ext3, ext4 y hfsplus. Para los ntfs no pasa porque el montaje lo gestiona el paquete ntfs-3g y por tanto se gestiona por el udev como normalmente se haría.

Nota:

El paquete usbmount ya no está soportado por el autor original, pero Ubuntu/Debian todavía parecen mantenerlo, por lo que todavía está disponible en las últimas versiones como Wheezy, Jessie y Ubuntu (equivalente).

Espero que les haya servido. ¡See you soon!

Fuente de referencia:

http://usbmount.alioth.debian.org/

https://superuser.com/questions/53978/automatically-mount-external-drives-to-media-label-on-boot-without-a-user-logge