Directorio Descripción
-----------------------------------------------------------------------------------------
/bin/ Comandos/programas binarios esenciales (cp, mv, ls, rm, etc.),
/boot/ Ficheros utilizados durante el arranque del sistema (núcleo y discos RAM)
/dev/ Dispositivos esenciales, discos duros, terminales, sonido,
vídeo, lectores dvd/cd, etc
/etc/ Ficheros de configuración utilizados en todo el sistema y que
son específicos del ordenador
/etc/opt/ Ficheros de configuración utilizados por programas alojados dentro
de /opt/
/etc/X11/ Ficheros de configuración para el sistema X Window (Opcional)
/etc/sgml/ Ficheros de configuración para SGML (Opcional)
/etc/xml/ Ficheros de configuración para XML (Opcional)
/home/ Directorios de inicios de los usuarios (Opcional)
/lib/ Bibliotecas compartidas esenciales para los binarios de /bin/, /sbin/ y
el núcleo del sistema.
/mnt/ Sistemas de ficheros montados temporalmente.
/media/ Puntos de montaje para dispositivos de medios como unidades lectoras
de discos compactos.
/opt/ Paquetes de aplicaciones estáticas.
/proc/ Sistema de ficheros virtual que documenta sucesos y estados del
núcleo. Contiene principalmente ficheros de texto.
/root/ Directorio de inicio del usuario root (super-usuario) (Opcional)
/sbin/ Comandos/programas binarios de administración de sistema.
/tmp/ Ficheros temporales
/srv/ Datos específicos de sitio servidos por el sistema.
/usr/ Jerarquía secundaria para datos compartidos de solo lectura (Unix system
resources). Este directorio puede ser compartido por
múltiples ordenadores y no debe contener datos específicos del
ordenador que los comparte.
/usr/bin/ Comandos/programas binarios.
/usr/include/ Ficheros de inclusión estándar (cabeceras de cabecera utilizados
para desarrollo).
/usr/lib/ Bibliotecas compartidas.
/usr/share/ Datos compartidos independientes de la arquitectura del
sistema. Imágenes, ficheros de texto, etc.
/usr/src/ Códigos fuente (Opcional)
/usr/X11R6/Sistema X Window, versión 11, lanzamiento 6 (Opcional)
/usr/local/ Jerarquía terciaria para datos compartidos de solo lectura
específicos del ordenador que los comparte.
/var/ Ficheros variables, como son logs, bases de datos, directorio raíz
de servidores HTTP y FTP, colas de correo, ficheros temporales, etc.
/var/cache/ Cache da datos de aplicaciones.
/var/crash/ Depósito de información referente a caídas del sistema (Opcional)
/var/games/Datos variables de aplicaciones para juegos (Opcional)
/var/lib/ Información de estado variable. Algunos servidores como MySQL y
PostgreSQL almacenan sus bases de datos en directorios subordinados de éste.
/var/lock/ Ficheros de bloqueo.
/var/log/ Ficheros y directorios de registro del sistemas (logs).
/var/mail/ Buzones de correo de usuarios (Opcional)
/var/opt/ Datos variables de /opt/.
/var/spool/ Colas de datos de aplicaciones.
/var/tmp/ Ficheros temporales preservados entre reinicios.
Vía: linux-es.org
Para el 3 ejercicio de DSBW había que implementar un pequeño script cgi en python.
Nunca antes había probado de usar cgi, así que he tenido que buscar las instrucciones y aquí dejo mi mini howto para linux.
Instalación
- Prerrequisito: tener apache instalado.
- Instalar libapache2-mod-python
- Añadir “AddHandler cgi-script .py” (sin las comillas) a la configuración cgi (/etc/apache2/sites-enable/000-default)
- Reiniciar apache
sudo aptitude install libapache2-mod-python
sudo gedit /etc/apache2/sites-enable/000-default
sudo /etc/init.d/apache2 restart
Primer script
En la configuración del sitio apache nos indica donde busca los cgi, en mi caso /usr/lib/cgi-bin. En el momento de escribir el código ten encuenta (2 y 3 son muy importantes):
- Importa el modulo cgi
- Lo primero que hay que imprimir es el content type “Content-type: text/html”
- Después una linea en blanco.
- Un consejo para debugar redirecciona la salida de error a la estandar, no es aconsejable para producción.
La cabecera del script tendria que contener los siguiente:
#!/usr/bin/python
import cgi
import sys
print “Content-Type: text/html”
print
sys.stderr = sys.stdout ”’solo para debug”’
print ” Script cgi de prueba en python”
Prueba el script accediendo en tu navegador a http://localhost/cgi-bin/NOMBRE_SCRIPT, si ha ocurrido un error lo puedes localizar en el log de apache (/var/log/apache2/error_log).
Una variable útil:
form = cgi.FieldStorage()
Inicializarla sólo una vez, contiene los valores post / get que se le pasan al script, puedes acceder a ellos de las siguientes formas:
form.getvalue(“name”)
form.getlist(“name) “‘ devuelve una lista con los valores que coinciden con la clave’”
form["name"].value ”’ igual que la primera si el campo no es una lista”‘
Mañana publicaré los archivos del ejercicio 3, antes de la entrega no por si las moscas.
Ejercicio puntuable número 2 repaso del patrón DTO en las variantes dominio, cliente y cliente con hasmap.
El ejercicio consiste en modificar el ejercicio 1 añadiendo el patrón DTO para obtener los datos de las vistas.
Nota obtenida en el ejercicio: A
Los archivos en cuestión:
Enunciado ejercicio 2 DSBW (DTO)
Entrega ejercicio 2 DSBW
Diagramas (proyectos y códigos fuente) ejercicio 2 DSBW
He perdido unas horas intentando resolver este error de compilación:
In file included from practica.h:1,
from practica.cpp:1:
ui_practica.h:48: error: la declaración de ‘LabelColor* Ui_practica::LabelColor’
LabelColor.h:4: error: cambia el significado de ‘LabelColor’ a partir de ‘class LabelColor’
ui_practica.h: In member function ‘void Ui_practica::setupUi(QWidget*)’:
ui_practica.h:170: error: expected type-specifier before ‘LabelColor’
ui_practica.h:170: error: no se puede convertir ‘int*’ a ‘LabelColor*’ en assignment
ui_practica.h:170: error: expected `;’ before ‘LabelColor’
make: *** [practica.o] Error 1
La clase LabelColor es un extend de un QLabel, este compilaba perfectamente y se podia añadir como plugin al Designer, practica es el QWidget que hace de formaulario y funcionaba perfectamente en el designer.
Al final la solución ha sido eliminar el LabelColor del formulario en el Designer (adiós signals y slots) y volverlo a poner… mágicamente funcionó!
Primer ejercicio puntuable de DSBW consiste en repasar y refrescar el patrón Modelo Vista Controlador, hay que crear los diagramas de secuencia de la operación venderEntrada y el diagrama de clases resultante.
La entrega tiene algunos errores, pero no los voy a corregir. En el diagrama de clases la relación butaca, entrada y sesión esta mal normalizada, seguro que hay alguno más.
Nota obtenida en el ejercicio: B
Los ficheros de interés:
Enunciado 1 DSBW (MVC)
Entrega ejercicio 1 DSBW
Diagramas (proyectos y códigos fuente) ejercicio 1 DSBW
Un petit diagrama de com serien les interaccions de la practica 0. El diagrama està generat amb SdEdit un programa per dissenyar diagrames de forma textual.

El codi per generar el diagrama:
Actor:Actor
s:Slider “:QtSlider”
sp:SpinBox “:QtSpinbox”
r:QPushButton “reset:QPushButto”
l:MyQtLabel “:MyQtLabel”
Actor:s.mouSlider
s:s.valueChanged(a:int)
s:sp.setValue(a:int)
sp:sp.valueChanged(a:int)
sp:s.setValue(a)
sp:l.setRoGoB(a)
l:red = a
l:l.setColor()
Actor:sp.cambia
sp:sp.valueChanged(a:int)
Actor:r.prem
r:r.clicked()
r:l.Reset()
l:l.emit notificarReset(0)
l:sp.setValue(0)