Saltar a contenido

Index

Circular Dependencies Webcast por Miguel Grinberg

Un Webcast de Miguel Grinberg sobre como evitar Dependencias Circulares en una aplicación Python / Flask.

My Metadata

  • Descripción: Un webcast de 1h en el que se refactoriza una aplicación Flask que empieza con un único fichero a varios paquetes y módulos.
  • Calificación: 3 sobre 5
  • Día de Visualización: 2020-06-28
  • Año de publicación: 2018
  • Duración: 68 minutos
  • Velocidad de reproducción recomendada: 1.75
  • Etiquetas: python; flask; dependencies; refactoring

Lecciones aprendidas

  • Mantener el entry point tan limpio como sea posible. Incluso con un único import.
  • El módulo que es ejecutado inicialmente por Python adquiere el nombre de __main__ a nivel interno, por ello los «nombres» que se definan en este módulo, no se identificarán inicialmente a efectos de dependencias como myfile.myvar si no como __main__.myvar, lo que es más fácil que genere un error de dependencias circulares
  • No usar los __init__.py como mecanismo para acortar los imports. Hay tantas opiniones a favor como en contra sobre el tema. A mi me ha generado más problemas que soluciones.
  • Usar imports desde la «raíz» from myapp.models.user import User y no estilo from user import User.
  • No pasa nada por no poner los import al inicio del fichero cuando tenga sentido que sea de otra forma, por ejemplo para evitar dependencias circulares. Usar # noqa para que no pite el linter en estos casos es aceptable.

Comprar un portátil para desarrollo en 2019

Toca cambiar de portátil. 8GB de RAM ya se quedan cortos. La patilla de la pantalla está dañada y no parece que vaya a aguantar mucho más. Y la batería con una vm, el ide y el navegador no dura mucho más de 1h.

Para situarnos el anterior comprado hace cuatro años era un MSI GE60 2PC Apache:

  • Micro i7-4720HQ. 2.60GHz de frecuencia base, hasta 3.60GHz con el Turboboost. 4 cores, 8 threads, 6MB de cache y un TDP de 47W.
  • 8GB RAM SODIMM DDR3 a 1600 fabricada por Kingston. No se cual es la latencia.
  • Nvidia GeForce GTX 850M con 2MB RAM
  • Disco duro mecánico de 1TB a 7200rpm
  • Pantalla de 15.5 y resolución de 1920×1080 normalita
  • Wireless-AC 3160, b/g/n y bt 4.0
  • hdmi, vga. 2 puertos USB 2.0 y 2 puertos USB 3.0, además de jacks para salida y entrada de audio.
  • 383 x 249 x 30 y 2.6kg de peso con batería
  • Batería de 6 celdas, 49Wh

Cuando lo compré escribí una guía de compra de portátil que aunque desactualizada me sirve de base para buscar uno nuevo. En base al rendimiento actual los requisitos no han variado demasiado:

  • Todo lo importante debe funcionar al 100% con linux. Si no va la luz del teclado me da igual. Si deja de funcionar el wifi con cada actualización del kernel adios.
  • Mínimo 16GB de RAM
  • Un i7 o equivalente en AMD. Un vistazo rápido me dice que los i5-82xxu que se montan en este rango de precios no son mucho mejores que mi micro actual y no me interesa averiguar si con un i5 me llega.
  • Resolución pantalla mínima 1920 x 1080. Como la mayoría del tiempo uso una externa como principal no necesito que sea extraordinariamente buena pero no quiero quemarme los ojos así que será un plus interesante
  • Mínimo 1TB de disco
  • No tengo necesidad de gráfica dedicada pero prefiero que no me coma RAM extra
  • No lo quiero más grande ni pesado que el actual. A pesar de que el 85% del tiempo está apoyado en una mesa, el 15% restante de viajes en tren, reuniones y uno o dos viajes de trabajo al año hacen que prefiera uno más pequeño. Pero no voy a sacrificar más de 150€ o rendimiento por ello
  • Quiero un teclado «bueno» a pesar de que la mayor parte del tiempo use uno externo
  • No tengo demasiadas necesidades de conectividad y puertos, no necesito Bluetooth y me da igual que tenga salida VGA y lector de DVD. Estos detalles me ayudaran en la decisión final pero asumo que con el resto de características que busco las necesidades mínimas en este aspecto estarán cubiertas. Update: Cuando revisé las opciones disponibles esto varió un poco, más en otro post
  • La marca no me preocupa. Hay demasiadas opiniones y experiencias particulares a favor y en contra de todas las marcas. Por experiencias cercanas doy puntos positivos a MSI y Slimbook y negativos a los HP y los Dell pero sólo en la clasificación final cuando haya dudas. No a priori. Y lo mismo con otras consideraciones como el uso de minerales de zonas de conflicto
  • Mi orquilla inicial es amplia y la reduciré a medida que investigue un poco. Empezaré por portátiles entre 900 y 1300€ con IVA. Una cantidad por la que se puede comprar algo aceptable para cuatro años si estás dispuesto a sacrificar alguna característica a cambio de precio como: batería, tamaño o potencia.

Hay un par de puntos clave sobre los que tenía dudas al principio:

  • Tamaño de la pantalla. Probablemnte la decisión más eliminadora a la hora de comprar el portátil. El de ahora es de 15.6 y para mi uso es cómodo. Pero siempre dudo con coger uno más pequeño. 14» sería perfecto. A los de 13» les tengo algo de manía. Update: Al poco de empezar a buscar los de 14» quedaron prácticamente descartados porque no me interesaba tanto sacrificar rendimiento o precio a cambio de mejoras de tamaño y batería
  • Con el disco duro también tengo dudas. De comprar unicamente un único disco magnético (HDD) tengo claro que sea de 7.200rpm. Una búsqueda rápida me dice que hay algún SSD de 1TB (lo ideal) a partir de 1.100€ pero en general suben bastante el precio. La opción de dos discos SSD + HDD puede ser buena pero me da que consume bastante batería y me puede fastidiar un poco mi organización actual de particiones, donde guardo las cosas cifrado y backups. Update: Cerca de tomar la decisión final quedó claro que en ese rango de precios tengo que sacrificar mi organización actual.

Con esto en la cabeza preparo mi hoja de cálculo y la inicializo con un par de configuraciones de Slimbook que me servirán de referencia. Luego voy rellenando algunos datos principales y descartando algunos directamente a partir de la búsqueda en un par de páginas. Fundamentalmente:

  • https://www.pccomponentes.com/
  • https://slimbook.es/
  • https://www.vantpc.es/
  • Amazon

y un vistazo rápido a:

  • http://tiendas.mediamarkt.es/ordenadores-portatiles
  • https://www.worten.es/inicio/informatica/ordenadores/portatil.html
  • http://www.elcorteingles.es
  • https://www.dell.com/es-es
  • https://www.pcbox.com/
  • https://www.lenovo.com/

Si estás interesado en este tema puedes ver otros artículos parecidos o seguir esta serie en esta etiqueta.

Virtualbox + Windows + VideoConferencia Múltiple en Skype

Si usas linux no sería extraño que alguna vez te hayas encontrado con una ineludible videoconferencia de grupo por Skype y hayas tenido que hacer números para poder participar.

Quien dice Skype, dice alguno de esas extrañas aplicaciones privativas de videoconferencia que alguna gente (clientes) insisten en usar.

Si tienes una licencia de Windows que puedas reusar para una máquina virtual, a mi estas instrucciones me funcionan en Ubuntu 18.04 para poder usar webcam y micro.

<br></br># Substituir por el usuario deseado<br></br>USER=$(whoami)

sudo apt install virtualbox virtualbox-ext-pack virtualbox-guest-additions-iso virtualbox-guest-x11 virtualbox-dkms
sudo usermod -a -G vboxusers $USER
sudo usermod -a -G video,audio,pulse-access $USER
sudo usermod -a -G audio pulse

Tras crear la máquina guest con Windows:

  • Encender la máquina virtual
  • Dispositivos ópticos -> montar una nueva iso -> En /usr/share/virtualbox seleccionr VBoxGuestAdditions.iso.
  • En caso de que no se ejecute automáticamente el cd/iso, ejecutaremos el .exe desde el explorador de archivos.

Con estas instrucciones tendremos una máquina virtual que soporte webcam, audio, usbs, portapapeles bidireccional (a activar en la configuración de cada máquina), …

Cifrar una disco duro externo en Ubuntu

La sencillez con que se pueden hacer ciertas tareas en Ubuntu u otras distros GNU/Linux ha mejorado enormemente desde la última vez que escribí sobre esto como cifrar un disco duro.

A día de hoy en Ubuntu la mejor opción es usar el asistente gráfico. Llega con insertar el USB y desmontarlo. A continuación desplegamos el menú contextual del disco externo pulsando con el botón derecho sobre él en el navegador de archivos y seleccionamos Format.

En la ventana de opciones seleccionamos las que aparecen en la siguiente captura.

Y listo, ya tenemos un disco duro externo cifrado en formato ext4 ideal para hacer copias de seguridad.