Integrar Virtualenv con Eclipse (PyDev)

Integrar Virtualenv con Eclipse (PyDev)

Una herramienta indispensable si desarrollas en Python es Virtualenv. Si no la usas deberías empezar a hacerlo ya mismo. Esta herramienta nos permite tener un entorno aislado de desarrollo en Python, donde poder instalar únicamente las librerías que necesita nuestro proyecto y en la versión que las necesita. Sin entrar en conflicto con lo que necesites en tu máquina o en otros proyectos. Instalarlo es muy sencillo usando el gestor de paquetes PIP con el siguiente comando:

sudo pip install virtualenv

Es recomendable instalarlo como usuario administrador, para que esté accesible para todos los usuarios del sistema. Una vez instalado, ya podemos crear nuestro entorno de desarrollo y activarlo:

virtualenv ~/virtualenv/my-env
source ~/virtualenv/my-env/bin/activate

Al crear el entorno, te hace una instalación del intérprete de Python y del gestor de paquetes PIP, y al activarlo, Virtualenv sobrescribe las variables de entorno necesarias para que se use ese entorno y las librerías que instales en él, siempre que ejecutes tu programa en esa terminal.

Pero claro, normalmente utilizamos un IDE para trabajar y lo que queremos es que ese entorno virtual aislado que acabamos de crear sea el que utilice nuestro IDE para ejecutar nuestro programa o para que lo utilice para comprobar las librerías importadas. Y ahora vamos a explicar cómo realizar esta integración en Eclipse con el plugin PyDev:

  • Suponemos que tenemos nuestro proyecto ya creado en nuestro workspace y configurado para usar PyDev. Hacemos click derecho sobre la carpeta del proyecto y seleccionamos la opción Propiedades. Dentro de la ventana de propiedades, seleccionamos la entrada PyDev – Interpreter/Grammar, y veremos la siguiente pantalla:

eclipse-virtualenv-1

  • Pinchamos sobre “Click here to configure an interpreter not listed.” y nos abrirá el menú general donde gestionar los interpretes que tenemos configurados en Eclipse.

eclipse-virtualenv-2

  • Pinchamos en el botón New…, y en en diálogo que aparece seleccionamos la ruta donde esté el ejecutable del entorno virtual que queremos integrar (siguiendo el ejemplo de antes, estaría en  ~/virtualenv/my-env/bin/python).

eclipse-virtualenv-3

  • Pinchamos en OK, y Eclipse escaneará nuestro entorno virtual en busca de la librerías que hay instaladas para agregarlas al entorno de desarrollo. Cuando termine, Eclipse mostrará un diálogo para añadir más rutas de librerías, y de las opciones que nos ofrece seleccionamos /urs/lib/python2.7 (o la correspondiente a la versión de Python que se tenga instalada).

eclipse-virtualenv-4

  • Pinchamos en OK, volvemos al dialogo anterior, volvemos a pinchar en OK, y volveremos al primer diálogo donde podemos elegir el interprete para nuestro proyecto. Abrimos el desplegable, seleccionamos el interprete que acabamos de crear y ya tenemos integrado nuestro proyecto en Eclipse/PyDev con Virtualenv.

Entrada original: http://www.cuble.es/integrar-virtualenv-con-eclipse-pydev/

May 29, 2013 0 comments Read More
La importancia de seguir una guía de estilo

La importancia de seguir una guía de estilo

‘Cualquiera puede escribir código que un ordenador entiende. Los buenos programadores escriben código que los humanos pueden entender’

Martin Fowler

La importancia de trabajar apoyados en una guía de estilo. El código se lee más veces de las que se escribe. A veces se puede caer en la tentación de escribir el código que simplemente funcione, sin pararnos a pensar en su legibilidad o de cuanto le costaría a alguien entenderlo sólo leyendo lo que hemos escrito. Empiezas un proyecto nuevo,  y entre función y función, clase y clase, vas cambiando de estilo y entre lo que estás escribiendo ahora mismo y lo primero que empezaste a escribir deja la sensación de que ha estado escribiendo en tu código más de una persona. O puede que tomes el proyecto que haya empezado otra persona, que no lo ha podido terminar, ves como está escrito, no te gusta su estilo y decides aplicar tu toque personal.

Con el paso del tiempo te das cuenta del error que cometiste no siguiendo una guía de estilo clara. Cuando tienes que corregir un bug que aparece en las primeras líneas de código que escribiste. O cuando tienes que entender un fragmento de código escrito por otras personas donde cada variable sigue un estilo distinto para ponerle nombre y una indentación que hace imposible saber a primera vista donde termina un bloque y empieza otro.

Precisamente, para evitar estos momentos de frustración nos gustaría dar algunas recomendaciones.

Python

Si trabajas con Python, es indispensable seguir el famoso PEP 8, la guía de estilo que se siguen las librerías estándar de Python. Además de tener siempre en mente el Zen de Python:

Python 2.7.3 (default, Sep 26 2012, 21:51:14) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
>>>

Si trabajas con Django, también es interesante echarle un ojo a su guía de estilo, que se complementa perfectamente con el PEP 8.

PHP

Si trabajas con PHP unas guías de estilo muy recomendables para seguir son los propuestos por el Framework Interop Group, y que puedes ver en estos repositorios de GitHub:

Estos documentos son inclusivos, por lo que si decides seguir el PSR-1, también deberías de cumplir el PSR-0, si decides seguir el PS2 tienes que cumplir también el PSR-1 y el PSR-0, y así sucesivamente.

Conclusión

Si empiezas un nuevos proyecto, ya sea para ti sólo o en un equipo, empieza siempre siguiendo unas guías de estilo, lo agradecerás. Lee código, es uno de los mejores consejos que puede recibir alguien para mejorar como programador, ver como escriben grandes profesionales de la industria, y que gracias al Open Source no tienes excusa para cumplir.  Y recuerda que al final, lo más importante es mantener la coherencia entre todo el código del proyecto. Si tienes que continuar un proyecto que está ya empezado, sigue las convenciones que se utilicen en éste, aunque no sean las que hubieras escogido, ya que la legibilidad siempre debe prevalecer.

Entrada original: http://www.cuble.es/la-importancia-de-seguir-una-guia-de-estilo-de-codigo/

May 10, 2013 2 comments Read More
PyPy, implementación de Python en Python

PyPy, implementación de Python en Python

En Cuble desarrollamos muchos tipos de aplicaciones y siempre tratamos de seleccionar la mejor herramienta para el desarrollo. Y para poder hacer eso lo mejor es tener un buen número de opciones para elegir. En este caso vamos a hablar de PyPy, una implementación de Python hecha puramente en Python. Gracias a ésto es posible realizar optimizaciones de bajo nivel que repercuten de forma significativa en el rendimiento de las aplicaciones desarrolladas en este lenguaje. En concreto, PyPy incluye un compilador just-in-time (JIT), la misma tecnología que utiliza Java y que permitió mejorar sustancialmente su rendimiento.

Además de la mejora en la velocidad de ejecución, PyPy también promete un menor consumo de memoria que la implementación más extendida de Python. CPython, permite ejecutar código no verificado en modo sandbox, además de ser compatible con las más famosas librerías de Python, como Django.

La forma más sencilla para poder hacer pruebas de este intérprete y evaluar si realmente cumple con todo lo que promete es utilizar Virtualenv. Los pasos que tenemos que seguir en Ubuntu 12.10 (x64) son:

Descargamos, descomprimimos e instalamos PyPy:

wget https://bitbucket.org/pypy/pypy/downloads/pypy-2.0-beta1-linux64-libc2.15.tar.bz2
tar xvjf pypy-2.0-beta1-linux64-libc2.15.tar.bz2
sudo mv pypy-2.0-beta1 /opt/

Creamos un entorno con Virtualenv que use este intérprete:

virtualenv -p /opt/pypy-2.0-beta1/bin/pypy pypy-env

Activamos el entorno para poder trabajar:

source pypy-env/bin/active

Y comprobamos que, efectivamente, el comando python lanza el interprete con PyPy:

pypy_capture

A partir de aquí, ya podemos trabajar con esta implementación y comprobar si realmente se ajusta a nuestras necesidades y si es la herramienta adecuada para resolver el problema que podamos tener sobre la mesa.

Entrada original: http://www.cuble.es/pypy-implementacion-de-python-en-python/

April 10, 2013 0 comments Read More
Añadiendo la rama de Mercurial en el prompt

Añadiendo la rama de Mercurial en el prompt

Si usas Mercurial como sistema de control de versiones, este la versión adaptada del tip para Git que añade al prompt la rama en la que estás trabajando. Para esto basta con poner al final del fichero .bashrc o .bash_profile las siguientes líneas:

[bash]
function parse_hg_branch_and_add_brackets {
hg branch 2> /dev/null | sed -e ‘s/\(.*\)/\ \[hg:\1\]/’
}
PS1="\u@\h:\W\[\033[0;32m\]\$(parse_hg_branch_and_add_brackets)\[\033[0m\]\$ "
[/bash]

Y queda algo como esto:

October 11, 2012 1 comment Read More
Anclar enlace a Eclipse en Unity

Anclar enlace a Eclipse en Unity

Si usas Eclipse en Ubuntu directamente descargado de su web en vez de instalarlo directamente desde los repositorios (recomiendo encarecidamente hacerlo con la versión que te puedes descargar) habrás notado que si usas la opción de Click derecho > “Mantener en el lanzador” en Unity, luego no puedes usar ese icono para volver a abrir la aplicación.

Para que esto no pase y se quede anclado el enlace correcto, primero tienes que crear un fichero con la extensión .desktop, por ejemplo eclipse.desktop, con este contenido:

 [Desktop Entry]
 Name=Eclipse
 Comment=Eclipse
 Exec=/path/to/eclipse
 Icon=/path/to/icon.xpm
 Terminal=false
 Type=Application

Donde /path/to es la ruta a donde tengas la carpeta de eclipse. Lo guardas, y le damos permisos de ejecución:

$ chmod +x eclipse.desktop

Ejecutamos el fichero desde nautilus, hacemos click derecho sobre el icono de Unity, y luego en “Mantener en el lanzador”. Ahora se habrá quedado anclado un icono que lanzará correctamente la aplicación.

October 4, 2012 0 comments Read More
Añadiendo la rama de Git en el prompt

Añadiendo la rama de Git en el prompt

Este es un pequeño tip para Git que me ha resultado bastante útil. Para añadir al prompt de la terminal la rama en la que estamos  trabajando basta con poner al final del fichero .bashrc o .bash_profile las siguientes líneas:

[bash]
function get_git_branch
{
git branch –no-color 2> /dev/null | sed -e ‘/^[^*]/d’ -e ‘s/* \(.*\)/\ \[\1\]/’
}
PS1="\u@\h:\W\[\033[0;32m\]\$(get_git_branch)\[\033[0m\]\$ "
[/bash]

Y queda algo como esto:

April 17, 2012 0 comments Read More
Colores en la salida por consola de Git

Colores en la salida por consola de Git

Un pequeño tip. Para que la salida por consola de Git tenga un poco de color, basta con ejecutar la siguiente línea:

git config --global color.ui auto

Fácil :)

December 2, 2011 0 comments Read More
La mejor herramienta

La mejor herramienta

Carl Sagan

“La ciencia no es perfecta. A menudo es mal utilizada, es sólo una herramienta, pero es la mejor herramienta que tenemos. Auto-corrección, siempre cambiante, aplicable a todo, con esta herramienta, vencemos lo imposible”

Carl Sagan

November 9, 2011 0 comments Read More
Dennis Ritchie, 1941-2011

Dennis Ritchie, 1941-2011

“C is quirky, flawed, and an enormous success.”

“UNIX is very simple, it just needs a genius to understand its simplicity.”

Dennis Ritchie. R.I.P

El pasado 12 de octubre falleció Dennis Ritchie. A muchísima gente no le sonará este nombre, y con razón, pues su trabajo no es algo que se pueda hacer llegar al gran público con ninguna técnica de marketing. Si eres informático, intenta imaginar como sería la profesión sin el lenguaje de programación C (creador) y sin UNIX (co-creador), o sin todo aquello que usa estos desarrollos de base, como Linux, Mac OS X o Java.

Dennis Ritchie recibió el Premio Turing de 1983 por su desarrollo de la teoría de sistemas operativos genéricos y su implementación en la forma del sistema Unix. En 1998 le fue concedida la Medalla Nacional de Tecnología de los Estados Unidos de América.

#include <stdio.h>
int main() {
printf ("Thanks and goodbye.\n");
return 0;
}
October 16, 2011 0 comments Read More
Steve Jobs, 1955-2011

Steve Jobs, 1955-2011

‎”Nadie quiere morir. Aún la gente que quiere ir al cielo no quiere morir para llegar allí. Y sin embargo la muerte es el destino que todos compartimos. Nadie ha logrado escapar. Y así es como debiera ser, porque la muerte es muy probablemente la única mejor invención de la vida. Es el agente de cambio de la Vida. Retira del camino lo viejo para dar paso a lo nuevo. En este momento lo nuevo son ustedes, pero algún día no demasiado lejano, gradualmente se convertirán en lo viejo y se los sacará del camino. Lamento ser tan dramático, pero es realmente cierto.

Su tiempo es limitado, así que no lo malgasten viviendo la vida de otro. No se dejen atrapar por el dogma – que implica vivir con los resultados de las creencias de otros. No permitan que el ruido de otras opiniones ahogue vuestra voz interior. Y lo que es más importante, tengan el coraje de seguir a sus corazones e intución. De algún modo ellos ya saben lo que ustedes realmente quieren llegar a ser. Todo lo demás es secundario.”

Steve Jobs. RIP.

Nunca he sido un fan de Apple. Siempre he defendido las tecnologías libres sobre el resto. Pero la obra de este genio ha dejado huella en la forma en que entendemos el mundo. Ha inspirado a grandes personas, y no creo que deje de hacerlo nunca. Realmente, ha cambiado el mundo. Ahora, descansa en paz.

PD: La imagen es la que está en la página oficial de Apple, y el nombre del fichero es “t_hero.png”.

October 6, 2011 0 comments Read More