====== IE-0117 Programación Bajo Plataformas Abiertas ====== ===== Proyectos Estudiantes ===== [[:ie0117_proyectos_ii_2013|Proyectos]] ===== Programa del curso ===== {{:ie0117:ie0117_carta_estudiante_ii-2013.pdf|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. [[teaching:ie0117:experimento_1|IE0117: Actividad 1]] === Materiales === [[teaching:ie0117:materiales|IE0117: Materiales]] ==== Actividad 2. Haciendo cosas Útiles Básicas! ==== Tenemos un sistema operativo y ya queremos comenzar a hacer algunas cosas interesantes. [[teaching:ie0117:actividad_2|IE0117: Actividad 2]] ==== 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 ===== Materiales =====