Python

Python WTF: Entendiendo cómo funciona is

He estado echando un ojo a un post de Reddit, donde algunos comportamientos del lenguaje parecen que no son los adecuados (bug), pero que se deben en su mayoría a pequeños fallos de comprensión de la sintaxis tan propia de python.

El que os traigo aquí es el siguiente:

>>> a = 256
>>> b = 256
>>> a is b
True
>>> a = 257
>>> b = 257
>>> a is b
False

Aparentemente vemos que hay una inconsistencia en el funcionamiento. Lo esperado es que si comparas si 256 is 256 es que te de que sí. Hasta aquí bien. El problema lo tenemos con el siguiente número: 257, donde no funciona igual.

Leer más »Python WTF: Entendiendo cómo funciona is

Pantalla principal de Pimagizer, con los botones adaptados a la interfaz

GTK y Python: Cambiar el estilo de una GTKLabel

Lleva siendo así prácticamente desde que implementé la GtkHeaderBar en Pimagizer, pero como habéis podido ver, recientemente uso el tema Arc, que implica tener un fondo oscuro en las barras de menús y herramientas. Y el problema surge ahí, en que los botones que tan bonitos se veían con el tema por defecto de GTK, pero cambia con un tema oscuro:

A la derecha botones con imagen en un tema GTK claro, a la derecha lo mismo pero con un tema oscuro

Claramente la diferencia está ahí…

La solución más eficaz pasa por convertir ese botón en uno normal y corriente, sin imágenes de ningún tipo, simplemente utilizando texto, y en concreto GTKLabel. Si estáis utilizando Glade o algún sistema gráfico parecido, podéis saltar a la siguiente sección.

Leer más »GTK y Python: Cambiar el estilo de una GTKLabel

Pimagizer, por fin, para Arch Linux

Tuvo hace algunos meses una escasa presencia en el AUR, el repositorio de Usuarios de Arch, pero debido a cambios que hicieron y a que no tuve tiempo en su momento, lo dejé pasar un poco. Ahora ha renacido y está disponible la aplicación Pimagizer lista para instalar en Arch y derivados con un sólo comando: sudo yaourt -S pimagizer Lo he podido probar sólo en mi ordenador. Si encontráis errores, no dudéis en reportarlos. Y ya aprovecho y si no la conocéis, pues la doy un poco de bombo Pimagizer nació para hacer la vida fácil a todos. Nació para muchas personas, que como yo trabaja con la web y necesita subir imágenes cambiando el tamaño de las fotos para no sobrecargar con muchos datos el tráfico. Porque muchas veces si se ve bien, no es necesario subir una imagen de 5Mb cuando los usuarios pueden ver mermado su rendimiento. Nació prácticamente con Gnome 3 y ha ido evolucionando con él. Soy consciente de que necesita muchas mejoras, pero… Leer más »Pimagizer, por fin, para Arch Linux

Python logger: Deja de ensuciar la salida por consola

Algo muy común (y que yo hago a menudo) es poner muchos prints a la hora de hacer debug, para saber donde las cosas van bien y dónde se empiezan a desviar del resultado esperado. Luego, quitarlos, no es mucho trabajo, pero si las cosas vuelven a ir mal, pues toca meterlos de nuevo. He descubierto no hace mucho la librería logging, que viene por defecto incluida (forma parte del batteries included!) en python. Tiene varios niveles de salida, según la importancia de lo que estemos notificando. Podríamos utilizarlo con opciones para que el programa muestre una salida de información extra (verbose) determinada, tal y como se comenta por StackOverflow. De forma muy general, aunque podéis ampliarlo mucho más en la documentación oficial, para activar la salida debug, simplemente hay que llamar al método con ese nombre de la librería logger: Y veremos como salida: WARNING:root:Mensaje de depuración Si lo intentas con logging.info() o con logging.debug() no mostrará salida, ya que por defecto sólo muestra las salidas con mayor o… Leer más »Python logger: Deja de ensuciar la salida por consola

Pimagizer 0.4

Ya hace casi dos años que empezé este proyecto. Todo empezó por suplir una necesidad de una forma rápida. Necesitaba cambiar el tamaño a las imágenes de forma «rápida». Se planteaban varias alternativas, como usar comandos en la consola o Gimp. Me gusta evitar el uso de la terminal en la medida de lo posible, y Gimp creo que tardaba bastante en iniciar en mi ordenador. Me picaba la curiosidad eso decidí escribir una aplicación, cosa que ya había hecho con guallet, pero ahora empezaba a entender más de esto, y Gnome 3.0 empezaba a entrar en escena. Aprender a programar y hacer una aplicación muy sencilla e intuitiva eran dos de mis objetivos principales. Creo que, al menos a largo plazo, los he conseguido. Si bien es cierto que la aplicación es todavía muy mejorable, cumple su función. Últimamente, Gnome ha añadido nuevos widgets y el diseño «oficial» ha cambiado bastante, y he intentado adaptarme en la medida de lo posible. En esta última versión, la 0.4, he hecho… Leer más »Pimagizer 0.4

[Python] BeautifulSoup extrae código de una sopa de etiquetas HTML

Es posible que como desarrollador te hayas enfrentado alguna vez al «reto» de extraer información (del tipo que sea) de una página web. Es muy sencillo cuando eres «humano», pero un robot… No, no es tan fácil. Imaginemos, por ejemplo que quisiéramos almacenar el número de artículos que tiene la Wikipedia en Español en un determinado momento. La forma más fácil es visitar la página destinada a tal efecto y, en la tabla, leer el número correspondiente y escribirlo (por ejemplo, en un archivo de texto). Pero la tarea se puede hacer muy tediosa (y de hecho lo es). Pero nosotros no estamos aquí para hacer un trabajo de chinos. Para algo existen los cacharros con los cuales estás leyendo esto. Es mas cómodo encargarle esta pesada tarea a un ordenador. Pero, ¿cómo vamos a llevar a cabo nuestra tarea? Para este tipo de problemas existen los «parser», como lo es, en este caso, BeautifulSoup. Analizemos un poco la estructura de la página. Tiene una tabla, y nuestro valor deseado… Leer más »[Python] BeautifulSoup extrae código de una sopa de etiquetas HTML

Nuevo desarrollo: Pimagizer

Este desarrollo surge, al igual que Guallet, como una necesidad. Como ya estáis viendo, llevo algo de tiempo aficcionado a esto de los fondos de pantalla. Pero esto tiene un pequeño problema: las diferentes resoluciones que los ordenadores de hoy en día tienen, así como su proporción. Abrir cada imagen con El Gimp es una buena idea, pero no es precisamente un programa ligero, y abrirlo sólo para eso… También no conozco ningún «método» que te permita grabar las imágenes con un nombre de archivo determinado. Estuve buscando un programa que fuese ligero y abriese rápido, pero a simple vista no vi nada. Me apetecía meterme en un desarrollo, y lo vi claro: un programa para redimensionar imágenes.Python image resizer: Pimagizer. Al principio iba a usar Imagemagick, pero no siempre un ordenador lo trae instalado, y para que un usuario no se «decepcione» al instalarlo, decidí usar finalmente PIL (Python Image Resizer). Como librería gráfica usa GTK+3, con PyGi (PyGTK vale sólo para 2.x). Lo que todavía me falta por… Leer más »Nuevo desarrollo: Pimagizer