Crear entorno virtual bajo Conda(python)

Introducción

Conda es un gestor de paquetes y de entornos virtuales multiplataforma que nos permite instalar, ejecutar y actualizar los paquetes y sus dependencias, de esta manera podremos configurar y cambiar entre distintos entornos en nuestro ordenador[1].

A grandes rasgos, un entorno virtual o ‘virtual environment’  es una carpeta en la que se encuentran los ejecutables de python y las distintas versiones de las librerías que vayamos a usar. De este modo, podremos estar desarrollando varias aplicaciones con distintas versiones de las librerías, incluso del propio interprete de python, gracias a los entornos virtuales.

Con conda se instalan multitud de librerías y aplicaciones secundarias que son usadas habitualmente en el desarrollo con python[2].

A continuación se explicará el proceso que hay que seguir para poder crear un entorno virtual usando Conda así como una lista con los comandos más usados en la gestión de los entornos virtuales.

Instalación

Lo primero será comprobar si tenemos conda actualizado:

:~$  conda update conda

En caso de tener que actualizar algún paquete, pulsaremos la tecla Y para confirmar la actualización.

Posteriormente comprobaremos cuales son las versiones de python que tenemos instaladas en nuestro sistema.

:~$ conda search ‘^python$’

Una vez que sabemos cual es la versión que queremos, crearemos el entorno virtual:

:~$ conda create -n nombredeentorno python=x.x anaconda

Donde sustituiremos x.x por la versión antes buscada.

Una vez creado, el siguiente paso será activarlo para poder usarlo:

:~$ source activate nombredeentorno

Una vez que terminemos de usar el entorno deveremos descativarlo:

:~$ source deactivate

Otros comandos

A continuación se detallan otros comandos relacionados con el mantenimiento de los entornos virtuales[3].

Listar todos los entornos virtuales creados:

:~$ conda info —envs

Comprobar el entorno virtual activado:

:~$ conda info —envs

Eliminar un entorno virtual:

:~$ condo remove —name nombredeentorno —all

Comprobar las versiones de las librerías instaladas:

:~$ conda list -e

Referencias

  1. http://conda.pydata.org/docs/install/quick.html#os-x-miniconda-install
  2. https://docs.continuum.io/anaconda/pkg-docs
  3. http://conda.pydata.org/docs/using/envs.html#managing-environments
Crear entorno virtual bajo Conda(python)

Editar ficheros de un servidor remoto desde Atom

Introducción

Ultimamente estoy desarrollando aplicaciones para la raspberry. Al principio editaba los ficheros de forma local con el entorno gráfico de raspbian, sin embargo el editor de python que trae de serie es demasiado simple, sin resaltado de sintaxis ni corrección de errores.

Por ello, decidi usar el editor Atom y el paquete para poder conectarse a un servidor FTP, remote-ftp. Atom, al igual que otros editores de texto como Sublime Text, permite instalar paquetes para añadir funcionalidades extra.

El sistema operativo Raspbian para raspberry pi trae instalado un servidor ssh/sftp por ello, junto con el paquete para Atom nos conectaremos a la raspberry y editaremos los ficheros

Instalación

Nos dirigimos al apartado install dentro de las preferencias de Atom y en el cuadro de búsqueda introducimos “remote-ftp” e instalamos el paquete.

Captura de pantalla 2016-03-25 a las 16.09.19

  1. Lo siguiente será abrir la carpeta que contenga nuestro proyecto existente o crear uno nuevo(File -> Open folder…)
  2. Al ser la primera vez que usamos remote-ftp deberemos crear un fichero de configuración (Packages -> Remote-ftp -> Create SFTP config file) y se nos generará el fichero .ftpconfig dentro de nuestro proyecto.Captura de pantalla 2016-03-25 a las 16.32.18Deberemos rellenar la siguiente información:
    • host: Dirección ip del servidor.
    • port: Puerto del protocolo sftp.
    • user, password: Usuario y contraseña del servidor.
    • remote: Ruta del directorio del proyecto que estamos editando.
    • hosthash: Por defecto es un parámetro vacío, en caso de obtener un error en la conexión con el servidor. deberemos poner  “sha1” o “md5” [1].
  3. Una vez editamos el fichero de configuración nos conectaremos al servidor Package -> Remote-ftp > Connect
    Captura de pantalla 2016-03-25 a las 16.41.33De esta manera se nos abrirá la barra con los ficheros del servidor remoto y  podremos editar los ficheros del servidor en nuestro editor de textos local teniendo así de manera automática un backup en nuestro ordenador.Captura de pantalla 2016-03-25 a las 16.42.50

 

Referencias

  1. https://github.com/mgrenier/remote-ftp/issues/321
Editar ficheros de un servidor remoto desde Atom

Como trabajar con un fork en github

Un fork en programación, es coger el código fuente de un programa y empezar un desarrollo paralelo al original. Hoy os voy a explicar como trabajar con un fork en la herramienta de desarrollo github. Voy a dar por hecho que todo el mundo tiene cuenta y sabe usar github.

Como ejemplo vamos a poner el repositorio del Clone-wars que tiene Obijuan:

Nos vamos a la página del proyecto y le damos al botón Fork   y se nos creará una copia en nuestra cuenta

  • Nos decargamos el repositorio forkeado de NUESTRO github (git@github.com:darkomen/Clone-wars.git)

Para ello desde un terminal, nos vamos al directorio donde queramos tener la carpeta y ejecutamos

git clone git@github.com:darkomen/Clone-wars.git

A partir de este momento es muy importante diferenciar entre nuestro fork, y el repositorio original

  • Nos metemos en la carpeta Clone-wars

cd Clone-wars/

  • Añadirmos un remote del repositorio de obijuan y lo llamamos upstream

git remote add upstream https://github.com/Obijuan/Clone-wars.git

  • SIEMPRE antes de hacer ninguna modificación actualizamos el repositorio

git pull upstream master

con eso actualizaremos el repositorio, en caso de no haber cambios, nos dirá que está todo actualizado.

Si queremos añadir algo nuevo al fork, primero lo deberemos añadir a nuestro repositorio

git add fichero

git commit -m ‘Cambios realizados’

git push origin master

Con estos tres comandos tendremos subido el fichero a nuestro repositorio, ahora nos dirigimos a la página de github de nuestro repositorio. Pulsaremos en el botón Pull Request 

y nos aparecerá una página donde deberemos rellenar la información de la actualización que hemos realizado, al completarla le daremos a finalizar, y le mandaremos la información a Obijuan indicándole de que hemos añadido una mejora.

Este caso es uno en concreto usando el repositorio de Clone-wars, sobra decir que el funcionamiento es parejo con cualquier otro repositorio que usemos de git.

Como trabajar con un fork en github

Wiki: Calibración de Skeinforge

Skeinforge es el programa que se encarga de traducir los ficheros stl a códigos, que la impresora interpreta como los movimientos que debe hacer para crear la pieza.

Este programa debido a su función, es bastante complejo de configurar. He creado un pequeño tutorial con los parámetros más fundamentales a la hora de calibrar la impresora.

Wiki: Calibración de Skeinforge

Wiki: Calibración de Skeinforge

Programando una librería para Arduino

He programado dos librerías para el control del miniskybot, o cualquier robot con ruedas motrices.

La primera librería simplifica el uso de los servos de tracción para controlar el motor. Con la librería se incluye un ejemplo documentado

La segunda librería crea un objeto tipo robot, en el que se le indica los motores que se dispone y su configuración, se simplifican las órdenes para poder manejar el robot.

Enlace:

Librería Rueda

Librería Robot

Documentación librerias 

Programando una librería para Arduino

[Processing] Controlando servos desde processing

Como dije en la entrada anterior, processing es un mundo a descubrir. Cacharreando menos de una hora, he conseguido hacer el programa para controlar la velocidad de giro de un servo.
El programa en processing es muy simple, se trata de un control slide que varía de -100 a 100 y esta información se la manda al arduino.

 

Lo bueno de processing es que esta aplicación se puede exportar a cualquier entorno, desde linux, windows a mac.

He subido los ficheros a mi repositorio, aquí tienes el programa para processing y aquí el de arduino.

 

 

Me queda por investigar mucho sobre esto, y poder controlar más variables desde processing hacía arduino, pero bueno para haber estado una hora escasa no está nada mal.

[Processing] Controlando servos desde processing

Processing

Hablando con un compañero de la universidad, me ha comentado la existencia de Processing. Yo ya lo había oído antes, es el lenguaje en el cual está basado arduino. Pero lo que no sabía es la potencia de desarrollo que tiene. Manteniendo el lenguaje de arduino es increiblmente sencillo el realizar programas MULTIPLATAFORMA.Se desarrolla la aplicación y se puede exportar un ejecutable a cualquier entorno, ya sea windows, linux o mac. Tengo pendiente el ponerme a desarrollar algo sobre todo para comunicar arduino y el ordenador de una forma mucho más sencilla y amena.
He abierto en el wiki una entrada, para ir poniendo ahí toda la documentación que vaya obteniendo y tenerlo a mano como todo lo que está en el wiki.

Processing