Table of Contents
IE-0117 Programación Bajo Plataformas Abiertas
Proyectos Estudiantes
Programa del curso
Clases
Actividad 1: Instalación de Debian GNU/Linux y Comandos Básicos
Consiste en la instalación de Debian hasta tener un sistema gráfico completo, con el que se pueden instalar aplicaciones y tener acceso de administración al sistema. Al final se verán algunas utilidades de sistema comúnmente usadas.
Materiales
Actividad 2. Haciendo cosas Útiles Básicas!
Tenemos un sistema operativo y ya queremos comenzar a hacer algunas cosas interesantes.
Python
Actividad 1
- ipython
- for, enumerate, zip
- list comprenhesions
- xrange
- map
- reduce
- lambda
- functions
- lists
- ints
- strings
- floats
- dicts
- while
- break, continue
- pass
- tuples
- sets
- immutable
- First program
- Accepting arguments: sys.argv, optparse
- input, output, open, pickle
- exceptions
- classes
- Numpy
yarp write with python
#!/usr/bin/python import sys import yarp as y from yarp import BufferedPortBottle as buffport y.Network.init() output_port=buffport() output_port.open("/keyboard/out") exit=False while not exit: a=raw_input() if a=="exit": exit=True print a bottle=output_port.prepare() bottle.clear() bottle.addString(a) output_port.write()
Actividad 2
- Python-qt
- Python YARP
- Python orocos-kdl
Python-qt
sudo apt-get install libqt4-dev qt4-dev-tools python-qt4-dev pyqt4-dev-tools libtclap-dev
import sys from PyQt4 import QtGui,QtCore app=QtGui.QApplication(sys.argv) main_widget=QtGui.QWidget() button=QtGui.QPushButton("test", main_widget) main_widget.show() main_widget.setWindowTitle("test application") def testprint(): print "Works" QtCore.QObject.connect(button,QtCore.SIGNAL("clicked()"),testprint) sys.exit(app.exec_())
Python yarp
* We use python for this example * Open a console and run “yarp server”. Leave this console running * Type “ipython” in another console, then in the ipython interpreter, type the following:
import yarp as y y.Network.init() input=y.BufferedPortBottle() output=y.BufferedPortBottle() input.open("/summer/in") output.open("/summer/out") While True: inputbottle=input.read(False) if inputbottle: outputnumber=inputbottle.get(0).asDouble()+inputbottle.get(1).asDouble() outputbottle=output.prepare() outputbottle.clear() outputbottle.addDouble(outputnumber) else: y.Time.delay(0.001)
- In this moment the python application is in an infinite loop waiting for data in the input port
- Start two extra consoles
- In the first new console execute: “yarp write … /summer/in”
- In the second new console execute: “yarp read … /summer/out”
- New in the first new console you can type “10 10” and you will see the result in the second new console.
- Basically the summer module is processing the data that is writen in the /summer/in port and the results are published in the /summer/out
- With this you can easily make small simple modules and test them without having the whole system in one single file. Also allows to segment work between colleges and to separate processing in different computers.
- You can interface this system with player. You comunicate with the hardware using player and between your own processing modules using YARP.
Ideas para proyectos
Modulo Linux
- LVM+RAID servidor de alta disponibilidad
- backup+LVM+snapshots
- tftp+dhcp+nfs diskless boot diskless root
- LaTeX + beamer
- Bases de datos
- Como hacer un paquete de debian y como empaquetar un proyecto en un paquete de debian
- Como compilar el kernel de Linux
Asistente de compras
- Pagina web - lista de compras - Aplicación de celular
- Conexion a base de datos
- Modificar si es necesario
- base de datos
Facilitación de mantenimiento para internet cafes
- Servidor tftp - Servidor dhcp - Creación de las imágenes - Selección de varios sistemas de archivos para instalar
Disponibilidad de servicios por red
- Servidor compartido de impresión y escaneo (cups) - Servidor archivos (nfs)
Reutilización de equipo obsoleto
- Estudio de aplicaciones y mercado - Prototipo funcional
(Tal vez es muy poco para dos)
Asistente personal (Final)
Sistema integrada para casa inteligente
Servidos integrado de almacenamiento
Sistema de anuncios y búsqueda de alquileres
(considerar unirlo al primer proyecto)
Proyecto final
- El sistema de información integrada de la escuela
- Sistema para avisar a conserjes sobre asuntos de limpieza en la escuela