Cubieboard, probamos IPython Notebook

Si pensamos en un entorno educativo veremos que se puede sacar mucho provecho a un equipo con  Linux embebido.

En esta oportunidad probamos el Cubieboard como herramienta para habilitar un servidor para IPython notebook

IPy_header

 

IPython es un ambiente de desarrollo para trabajar con Python a traves de una shell interactiva
Cuando usamos la función de Notebook habilitamos esta interacción con un browser, combinando  ejecución de código, texto, matemáticas, gráficos y multimedia. Todo en un único documento.

Si no conoces acerca de Ipython y, en particular sobre IPython notebook, visita este link oficial. Como referencia en castellano tenemos el excelente blog Pybonacci

 

Materiales

  • Cubieboard con Linaro
  • Fuente de poder
  • Cable de Red o Wifi Dongle
  • Acceso a Internet

Uso básico del Notebook

Haremos funcionar el cubieboard “headless” es decir, sin su monitor. Nos conectamos via SSH

Ejecutamos los siguientes comandos

sudo apt-get update
sudo apt-get upgrade
sudo reboot
sudo apt-get install python-setuptools
sudo apt-get install build-essential
sudo easy_install ipython
sudo apt-get install ipython-notebook
sudo apt-get install gcc
sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose

Con esto instalamos toda la suite de cálculo científico. Es mas de lo que necesitamos por ahora, pero estamos preparados para aplicaciones más complejas.

Como primera prueba usamos el siguiente comando,

ipython notebook --pylab inline --no-browser --ip='*' --no-mathjax

Esta es la explicación de las variables,
–pylab              # habilita import matplotlib e import scipy
inline                # permite usar figuras en linea
–no-browser  # no levanta el browser.
–ip=’*’              # permite conexión desde todas las IPs
–no-mathjax  # deshabilita mathjax, uso de LaTeX para expresiones matematicas

Con esto tenemos un servidor publico básico que atiende consultas de todas las IPs de la red local

Creando Certificado

Si queremos algo mas profesional, y tratándose de un servidor de acceso público, se puede crear un certificado. Para ello se deben seguir los siguientes 4 pasos.

Paso 1. Ingresamos a Ipython para ejecutar los siguientes comandos,

ipython
In [1]: from IPython.lib import passwd

In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:f1831c03174b:b068a0634fa0de0885d8b21d1fe11c7a21d454ee'

El valor obtenido acá se usara en el paso 4 al editar el archivo de configuración

Paso 2. Certificado

Se crea el certificado auto-firmado, para ello usamos el siguiente comando

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem

Tras este comando se abre un diálogo con varias preguntas. Hay varias que se pueden completar pero no es necesario contestar todas. De hecho, la única variable que se completa es el cname con el valor “server”

Paso 3. Se crea un perfil de servidor

El perfil tendrá el nombre de nbserver. Desde la línea de comandos se escribe lo siguiente

ipython profile create nbserver

Paso 4. Cambios en el perfil

El archivo de perfil creado se edita

sudo nano /home/linaro/.config/ipython/profile_nbserver/ipython_notebook_config.py

Y se realizan los siguientes cambios

c = get_config()
# usamos el puerto 9999
c.NotebookApp.port = 9999
# se indica la ruta donde esta el certificado
c.NotebookApp.certfile = u'/home/linaro/mycert.pem'
# se copia la clave que esta en el paso 2
c.NotebookApp.password = u'sha1:f1831c03174b:b068a0634fa0de0885d8b21d1fe11c7a21d454ee'

Para habilitar el server usamos el siguiente comando

 ipython notebook --profile=nbserver --pylab inline --no-browser --no-mathjax --ip='*'

Tras el comando anterior podemos ver la siguiente salida, indicando que todo funciona

[NotebookApp] Using existing profile dir: u'/home/linaro/.config/ipython/profile_nbserver'
[NotebookApp] Serving notebooks from /home/linaro
[NotebookApp] The IPython Notebook is running at: https://[all ip addresses on your system]:9999/
[NotebookApp] Use Control-C to stop this server and shut down all kernels.

Ahora para ingresar debemos escribir en el browser

https://ip_cubieboard:9999

Entonces se verá la siguiente pantalla de login

IPython_NoteBook_Login
Con esto ahora nuestro servidor tiene autenticación. Ahora podemos usarlo como cualquier IPython notebook

 

Bibliografía

Numpy CookBook, Ivan Idris. Disponible en Amazon

 

Author: manuel

Ingeniero Eléctrico, Institutano, instructor certificado Cisco, en twitter @mcarrasco con comentarios y opiniones personales.

4 thoughts

  1. Interesante!!!!! Estoy a la espera de que me llegue mi raspi pensando en usos como el que indicas.

    1. Ahh excelente, nosotros usamos el cubieboard porque lo estamos poniendo a prueba . ahora también hemos probado otras librerías con raspberryPi, como simplecv

      Saludos

      @mcarrasco

  2. ¡Excelente artículo! (Y muchas gracias por la recomendación a Pybonacci =]) No conocía la Cubieboard, parece muy sencilla de usar. ¿Han probado ya en algún entorno educativo real crear un servidor de IPython de este tipo?

    1. Hola, Estamos creando comunidad en Internet de las Cosas y parte de eso significa dar a conocer las capacidades de los equipos que usamos. Python es un lenguaje muy apropiado para mostrar las cosas que se pueden hacer.

      En relación a la consulta no hemos usado el cubieboard en un entorno productivo. Personalmente me interesa mucho el tema de informática educativa y mejor si ésta es accesible 🙂

      Saludos desde Chile

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *