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
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
Con esto ahora nuestro servidor tiene autenticación. Ahora podemos usarlo como cualquier IPython notebook
Bibliografía
Numpy CookBook, Ivan Idris. Disponible en Amazon
Interesante!!!!! Estoy a la espera de que me llegue mi raspi pensando en usos como el que indicas.
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
¡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?
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