Hoja 11 (11 de Mayo de 2010)

P1: Construye una gramática libre de contexto G que genera todas las palabras sobre el alfabeto {a, b} que tienen el mismo número de a’s y b’s, es decir,

L(G) = {ε, ab, ba, aabb, abab, baab, abba, baba, bbaa, aaabbb, aababb, . . .}

La gramática a generada es la siguiente:

Gramática libre de contexto pregunta 1

abrimos el JFlap y comprobamos si acepta las palabras del lenguaje

pregunta uno acepta palabrasgeneramos un archivo con diversas palabras con los caracteres a y b para verificar que no acepta las palabras que no cumplen la regla

Verificar Gramatica

P2: Construye una gramática libre de contexto G que genera todas las palabras sobre el alfabeto {a, b} que tienen un número diferente de a’s y b’s (ayuda: amplía la gramática del primer punto).

Para construir esta gramatica nos basaremos en las producciones anteriores  evitando la producción de la palabra vaciá y dividiendo el problema en dos  grupos palabras con mayor numero de letras a que de b (A) y palabras con mayor numero de letras b que de a (B). para ello simplemente evitaremos que las producciones terminales de A y B generen ε y permitan introducir un numero ilimitado de as y de bes.

Gramática libre de contexto pregunta 2

verificamos algunas palabras en el JFlap

JFlap Gramatica 2

P4: Configuración de una plataforma de desarrollo de aplicaciones basadas en web

El objetivo de esta práctica es instalar en una máquina todos los servicios necesarios para desarrollar un proyecto web basado en PHP y MySQL.

Primer Apartado:

  1. Instalación y configuración de Apache
  2. Instalación y configuración de PHP
  3. Instalación de MySQL
  4. Instalación de phpMyAdmin

Segundo Apartado (archivo de configuración de Apache):

5. Comentar brevemente qué debemos realizar para que Apache ejecute correctamente páginas escritas en PHP.

una vez configurado apache debemos instalar PHP con los módulos que necesitemos y en caso de no utilizar un instalador automático debemos indicarle al servidor apache los parámetros de configuración para que cargue el interprete PHP y configurar las variables necesarias para eso basta con introducir las siguientes directivas:
PHPIniDir ruta <– indica la carpeta donde se encuentra el archivo php.ini que nos permite configurar el comportamiento de PHP
LoadModule “ruta a la librería php5apache2_2.dll que contiene el modulo php” <– indica la librería donde se encuentra compilado el modulo de php y ordena al servidor apache cargarlo
Si todos los parámetros introducidos son correctos basta con reiniciar el servidor apache para que este vuelva a leer el archivo de configuración y pueda comenzar a interpretar las paginas PHP.

6. Respecto al archivo de configuración de Apache (httpd.conf):

  • a. ¿qué objetivo tiene la sección de DirectoryIndex? Pon un ejemplo y coméntalo.
    • Establece el archivo a proporcionar cuando el navegador proporciona una ruta incompleta, por ejemplo  la conexión a http://httpd.apache.org/docs/1.3/mod/ enviara la pagina http://httpd.apache.org/docs/1.3/mod/index.html siempre y cuando exista ese fichero y en la lista de  DirectoryIndex la subcadena index.html este antes de cualquier archivo existente, en caso de que no  exista ningun archivo en la lista de cadenas la respuesta a la petición sera el contenido del directorio, (en caso de que existan restricciones en el contenido del directorio se mostrara una pagina forbidden).
  • b. ¿dónde especificarías una capeta distinta a htdocs para servir archivos?
    • Si lo que queremos es utilizar una carpeta distinta a la que viene configurada por defecto simplemente debemos de cambiar el valor asociado a la directiva DocumentRoot  especificándole la carpeta donde queremos situar la raíz del servidor httpd, hemos de recordar que el usuario asociado al servidor apache tenga los permisos garantizados en caso contrario sufrirá un error de acceso denegado.
  • c. ¿para qué sirve el parámetro Timeout?
    • Timeout es una directiva que establece un contador en segundos que apache usara para gestionar los tiempos máximos de espera para:
      • tiempo de espera para una petición get .
      • tiempo de espera para la recepción de paquetes TCP en una petición POST o PUT .
      • tiempo de espera para enviar un ACK para un paquete TCP.
  • d. ¿cómo configurarías el servidor para un puerto distinto del 80?
    • Abrimos el archivo httpd.conf y reemplazamos la linea que pone Listen 80 por Listen “puerto deseado”.

Tercer Apartado (archivo de configuración de PHP):

7. Descripción del parámetro error_reporting. Pon algún ejemplo

La directiva error_reporting define el nivel de informe de errores se puede establecer con los valores de la siguiente lista:

  • E_ERROR            1    Informa de errores en tiempo de ejecución, como problemas de asignación de memoria. detiene la ejecución del código
  • E_WARNING        2    Informa de advertencias en tiempo de ejecución (no errores fatales), la ejecución del script no se detiene
  • E_PARSE            4    Informa de errores del analizador sintáctico. Estos errores son solo generados por el analizador sintáctico
  • E_NOTICE        8    Informa de avisos en tiempo de ejecución. Podría indicar que algo encontrado es un error pero el aviso puede ser generado por la ejecución esperada del script
  • E_CORE_ERROR        16    Informa de errores fatales que ocurren durante el arranque de PHP. Es como E_ERROR excepto que solo son generados por el núcleo de php
  • E_CORE_WARNING        32    Informa de advertencias (no errores fatales) que ocurren en el arranque de PHP. Es como E_WARNING excepto que las advertencias son las generadas por el núcleo de php
  • E_COMPILE_WARNING    128    Informa de advertencias (no errores fatales). Esto es como E_WARNING, solo que las advertencias son geradas por en motor de Scripting Zend
  • E_USER_ERROR        256    Mensajes de error generados por el usuario. Esto es como E_ERROR, excepto que es generado en el código PHP por la función trigger_error()
  • E_USER_WARNING        512    Advertencias de error generados por el usuario, Es como E_WARNING, excepto que es generado en el código PHP por la función trigger_error()
  • E_USER_NOTICE        1024    Avisos generados por el usuario. Es como E_NOTICE, excepto que es generado en el código PHP por la función trigger_error()
  • E_STRICT        2048    Habilita las sugerencias de cambios de PHP , que se aseguran de obtener de la mejor interoperatividad entre versiones de PHP
  • E_RECOVERABLE_ERROR    4096    Errores fatales recuperables. Estos indican la probabilidad de que un error peligroso ocurra, pero no dejara el motor en un estado inestables. Si este error no es gestionado por un manejador definido por el usuario la ejecución de la aplicación se abortara como si fuera un E_ERROR.
  • E_DEPRECATED        8192    Avisos en tiempo de ejecución. Activar este nivel informara de advertencias sobre codigo que no funcionara en futuras versiones
  • E_USER_DEPRECATED    16384    Avisos en tiempo de ejecución generados por el usuario. Funciona como E_DEPRECATED, excepto que son generados en el código PHP usando la funcion trigger_error()
  • E_ALL            30719    Informa de todos los errores y Advertencias, siempre que estén soportadas, exceptuando el nivel E_STRICT.

Ejemplos: Si queremos verificar la compatibilidad de nuestro codigo con futuras versiones de PHP deberiamos de activar E_DEPRECATED.
En modo de depuración es recomendable activar la opción E_ALL.
Si nuestro codigo informa de errores que desencadenan otros errores, tal vez nos interese filtrar activando las opciones E_USER_***
8. ¿qué importancia tiene el parámetro register_globals?

Habilita o deshabilita el reistro de las variables de entorno, GET, POST, Cookie y Servidor como variables globales. No es recomendable habilitarlo ya que no forma parte de las buenas practicas de programación y es inseguro.

9. ¿qué objetivo tiene la sección de File Uploads? Comenta sus parámetros.

Permite la recepción de archivos en el servidor usando el protocolo HTTP. los parámetros son:

  • file_uploads = booleano habilita o deshabilita la recepción de archivos
  • upload_tmp_dir= especifica un directorio temporal para la recepción de archivos
  • upload_max_filesize = XXM acota el tamaño máximo de los archivos que puede recibir el servidor.

Cuarto Apartado:
10. Una vez instalados todos los servicios en la máquina, el alumno deberá realizar lo siguiente:
11. Crear una base de datos y tabla con unos datos de ejemplo utilizando phpMyAdmin

Para crear una base de datos en phpMyAdmin primero accedemos a la url donde esta instalado phpMyAdmin, en este caso . Una vez en la dirección aparecerá un formulario solicitándonos el nombre de usuario y la contraseña

Ventana Login PhpMyAdminintroducimos el nombre y la contraseña para un usuario con privilegios en la creación de bases de datos.

Una vez identificados en el phpMyAdmin para crear la base de datos seleccionamos la pestaña base de datos y en el campo “Crear nueva base de datos” introducimos el nombre de la base de datos que queremos crear.

Crear Nueva base de datos phpMyAdmin

al pinchar en Crear phpMyAdmin ejecutara el siguiente comando SQL

CREATE DATABASE `practicaCSI4` ;

para crear las tablas en la base de datos navegamos hasta la pagina de información de la base de datos practicaCSI4 y en la pestaña estructura introducimos el numero de campos y el nombre de la tabla que queremos añadir a la base de datos.

Crear Nueva tabla phpMyAdminnos llevara a una pagina donde definiremos los campos de la base de datos.

definiendo campos de una tabla phpMyAdminuna vez hayamos cubierto el formulario pulsaremos el boton gravar que creara la tabla insertando el siguiente comando SQL


CREATE TABLE `practicacsi4`.`personas` (
`nombre` VARCHAR( 50 ) NOT NULL ,
`apellidos` VARCHAR( 50 ) NOT NULL ,
`direccion` VARCHAR( 200 ) NOT NULL ,
`codigopostal` INT NOT NULL ,
`provincia` VARCHAR( 15 ) NOT NULL ,
`dni` VARCHAR( 9 ) NOT NULL ,
`fechaNacimiento` DATE NOT NULL
) ENGINE = InnoDB

 

Repetimos el proceso para la segunda tabla

definiendo campos a tabla 2 phpMyAdminla creación de la segunda tabla generara el siguiente comando SQL

CREATE TABLE `practicacsi4`.`noticias` (
`titular` VARCHAR( 120 ) NOT NULL ,
`entradilla` VARCHAR( 400 ) NOT NULL ,
`texto` VARCHAR( 4000 ) NOT NULL ,
`fecha` DATE NOT NULL ,
`firma` VARCHAR( 200 ) NOT NULL ,
`fuente` VARCHAR( 180 ) NOT NULL ,
`foto` VARCHAR( 100 ) NOT NULL ,
PRIMARY KEY ( `titular` )
 

12. Crear una página sencilla en php que realice la conexión con la base de datos y muestre los resultados en pantalla

Se hace en la próxima practica.

13. Facilitar al profesor una URL a través de la cual pueda visualizar la página y otra URL a través de la cuál pueda acceder a phpMyAdmin y realizar cambios en la base de datos de tal manera que esos cambios aparezcan reflejados al consultar de nuevo la página.

Acceso a phpMyAdmin:

Las tablas de base de datos a crear pueden ser:

A) Ficha de datos personal con lo siguientes campos:

  • a. Nombre
  • b. Apellidos
  • c. Dirección
  • d. Código Postal
  • e. Provincia
  • f. DNI
  • g. Fecha de Nacimiento

B) Ficha de datos de una sección de noticias:

  • a. Titular
  • b. Entradilla
  • c. Texto
  • d. Fecha
  • e. Firma
  • f. Fuente
  • g. Foto (opcional)

Practica 8 Gramáticas libres de contexto en JFLAP

El enunciado aquí 8 Gramaticas libres de contexto

1.- Sigue con el JFLAP el proceso de conversión a Forma Normal de Chomsky de la siguiente gramática

  • S → sA
  • A → BC
  • B →ε
  • A →a
  • C →ε

Abrimos JFlap y pinchamos en el botón “Grammar” nos aparecerá una ventana para introducir la gramatica

introduciendo gramática JFLAP

Introducimos las producciones para la gramática

gramática introducida en JFLAP

Para convertir la gramática a la forma normal de Chomsky seleccionamos la opción Convert -> Transform Grammar

Conversion JFLAP a forma normal ChomskyEsta conversión esta compuesta de varios pasos:

Eliminación de Landa

Conversión JFLAP Chomsky paso 1 eliminación epsilon

Eliminación de unitarias A->B

Eliminación de produciones unitarias

Eliminación de producciones no usadas

Eliminación de producciones no usadasY finalmente tras ajustar las producciones la conversión a Chomsky

Transformación producciones ChomskyLo cual nos generara la gramatica de Chomsky

Gramática Convertida

2. La gramática S → x | y | z | S + S | S – S | S * S | S/S | (S) es libre de contexto y sirve para expresiones enteras algebraicas sintácticamente correctas sobre las variables x, y, z. Comprueba si son correctas las siguientes expresiones, y obtén su árbol de derivación.

modelamos la gramática en JFlap

Gramatica Ejercicio 2Para comprobar las expresiones y obtener su árbol de derivación seleccionamos la opción Input->Brute Force Parse y en la caja de texto input introducimos la expresión a comprobar.
( x + y) –x

acepta la expresión con el siguiente arbol

(x+y)-z
( x + y ) * x – z

Acepta la expresión con el siguiente árbol

(x+y)*x-z

(( x + y ) / z)

Acepta la expresión con el siguiente árbol.

((x+y)/z)

((x+y)(x+z))

Rechaza la expresión

( x + y ) * x – z * y / ( x + x )

Al verificar la expresión utilizando brute force parse se satura es espacio del Heap por lo que no se puede verificar, si transformamos la gramática en una gramática lineal por la derecha y en un autómata finito podemos verificar si la expresión es valida en el automata.

Rechaza la expresión.

3. Describir el lenguaje generado por las siguientes reglas de producción
S → SS | aSb | bSa | ab | ba

ffff

4. Modelar e introducir en JFLAP la siguiente gramática básica de un idioma.

a. <frase> → <sujeto> <predicado>
b. <sujeto> → <articulo> <sustantivo>
c. <articulo> → el | la
d. <sustantivo> → mundo | río | niña
e. <predicado> → <verbo>
f. <verbo> → fluye | gira | llora

Forma todas las frases correctas

el mundo fluye
el mundo gira
el mundo llora
el río fluye
el río gira
el río llora
la niña fluye
la niña gira
la niña llora

Intenta crear una gramática más compleja, para expresar frases como.
El lado oculto de la luna permanece inexplorado
Las prácticas de TALF son entretenidas…

Hoja 9 (27 de Abril de 2010)

P1: Minimiza el siguiente autómata finito determinista. El estado inicial es el estado a.

autómata no minimizado

autómata inicial

Paso 1: eliminamos estados no accesibles.

Un estado no accesible es un estado que no esta relacionado con el conjunto de estados al que pertenece el estado inicial o perteneciendo a este no tiene símbolos de entrada solo de salida. en este caso eliminamos el elemento i, al eliminar el estado i el estado d queda sin símbolos de entrada por lo tanto d tampoco es accesible.

estados no alcanzables eliminados

Paso 2: construimos la matriz de estados

matriz de estados

X/X ^a b *c e f g h
^a “” “” “” “” “” “” “”
b “” “” “” “” “” “” “”
*c “” “” “” “” “” “” “”
e “” “” “” “” “” “” “”
f “” “” “” “” “” “” “”
g “” “” “” “” “” “” “”
h “” “” “” “” “” “” “”

cada estado es equivalente entre si por lo tanto los descartamos de la misma forma que un triangular de la matriz

X/X ^a b *c e f g h
^a ~ “” “” “” “” “” “”
b ~ ~ “” “” “” “” “”
*c ~ ~ ~ “” “” “” “”
e ~ ~ ~ ~ “” “” “”
f ~ ~ ~ ~ ~ “” “”
g ~ ~ ~ ~ ~ ~ “”
h ~ ~ ~ ~ ~ ~ ~

un estado no final no va a ser equivalente a un estado no final por lo tanto marcamos las celdas donde se relacione un estado final y uno no final

X/X ^a b *c e f g h
^a ~ “” X “” “” “” “”
b ~ ~ X “” “” “” “”
*c ~ ~ ~ X X X X
e ~ ~ ~ ~ “” “” “”
f ~ ~ ~ ~ ~ “” “”
g ~ ~ ~ ~ ~ ~ “”
h ~ ~ ~ ~ ~ ~ ~

llegados a este punto comenzamos a emparejar los estados no marcados:

  • (a,b) X
    • con 0 vamos a (b,g) no esta marcado no hacemos nada
    • con 1 vamos a (f,c)  esta marcado por lo tanto marcamos (a,b)
  • (a,e) X
    • con 0 vamos a (b,h)  esta en la diagonal principal no hacemos nada
    • con 1 vamos a (f,f)   esta en la diagonal principal no hacemos nada
    • quedamos a la espera de lo que suceda cuando miremos (b,h)
  • (a,f) X
    • con 0 vamos a (b,c) como esta marcado marcamos (a,f)
    • con 1 vamos a (f,g) como no esta marcado no hacemos nada
  • (a,g) X
    • con 0 vamos a (b,g) como no esta marcado ni no comprobado esperamos a lo que suceda al comprobar (b,g)
    • con 1 vamos a (f,e) que no esta marcado no hacemos nada
  • (a,h) X
    • con 0 vamos a (b,c) como esta marcado marcamos (a,h)
    • 1 no lo miramos porque (a,h) ya se ha marcado
  • (b,e) X
    • con 0 vamos a (g,h) como no esta marcado no hacemos nada.
    • con 1 vamos a (c,f) como esta marcado marcamos (b,e)
  • (b,f) X
    • con 0 vamos a (g,c) como (c,g) esta marcado marcamos (b,f)
    • 1 no lo miramos porque (b,f) ya se ha marcado.
  • (b,g) X
    • con 0 vamos a (g,g) como esta en la diagonal principal no hacemos nada
    • con 1 vamos a (c,e) como esta marcado marcamos (b,g)
    • (a,g) estaba a la espera de (b,g) como (b,g) se ha marcado también marcaremos (a,g)
  • (b,h) X
    • con 0 vamos a (g,c) como (c,g) ya esta marcado marcamos (b,h)
    • 1 no lo miramos porque (b,h) ya se ha marcado
    • (a,e) estaba a la espera de (b,h) como lo hemos marcado marcamos también (a,e)
  • (e,f) X
    • con 0 vamos a (h,c)  como (c,h) esta marcado marcamos (e,f)
    • 1 no lo miramos porque (e,f) ya esta marcado
  • (e,g) X
    • con 0 vamos a (h,g) o (g,h) como no esta marcado ni comprobado esperamos a comprobar (g,h)
    • con 1 vamos a (f,e) o (e,f) como  esta marcado marcamos (e,g)
    • marcamos también (d,f) y (d,h) porque estaban a la espera de (e,g)
  • (e,h) X
    • con 0 vamos a (h,c) como (c,h) esta marcado marcamos (e,h)
    • 1 no lo miramos porque (e,h) ya se ha marcado
  • (f,g) X
    • con 0 vamos a (c,g) como ya esta marcado marcamos (f,g)
    • 1 no lo miramos porque ya hemos marcado (f,g)
  • (f,h)
    • con 0 vamos a (c,c) como esta en la diagonal principal lo obviamos
    • con 1 vamos a (g,g) como esta en la diagonal principal lo obviamos
  • (g,h) X
    • con 0 vamos a (g,c) como (c,g) esta marcado marcamos (g,h)
    • 1 no lo miramos porque ya hemos marcado (g,h)

Finalmete la matriz queda de la siguiente forma

X/X ^a b *c e f g h
^a ~ X X X X X X
b ~ ~ X X X X X
*c ~ ~ ~ X X X X
e ~ ~ ~ ~ X X X
f ~ ~ ~ ~ ~ X “”
g ~ ~ ~ ~ ~ ~ X
h ~ ~ ~ ~ ~ ~ ~

las casillas no marcadas indican estados equivalentes en este caso solo tenemos una casilla no marcada que es (f,h) que nos indica que f es equivalente a h quedando el autómata mínimo de esta forma:

autómata mínimo

nuestro autómata mínimo esta formado por 7 estados  para comprobar si la minimización  esta bien realizada minimizamos el automata original en JFlap y comparamos su equivalencia y el numero de estado del autómata mínimo generado, el automata minimo generado es el siguiente:

autómata mínimo jflapel numero de estados es el mismo el los dos autómatas y el lenguaje generado es equivalente  por lo que debería de estar bien

P2: Determina el Indice(RL) del lenguaje definido por una expresión regular sobre el alfabeto {a, b, c} que define todas las palabras que tengan por lo menos dos a’s consecutivas o por lo menos dos b’s consecutivas (mira hoja 6 si quieres).

Para saber el indice  (RL) de la expresión regular  tenemos que realizar el siguiente proceso de conversión
Expresión Regular –> AFND-ε –> AFND —> AFD —> AFD mínimo

la expresión regular es (a + b + c)∗ (aa + bb)(a + b + c)∗

el numero de estados del AFD minimo sera el indice del RL en caso que sea completo sino tenemos que sumarle 1 por el estado de error

Paso 1 Expresión Regular a AFND-ε:
Para realizar esta conversión nos basamos en los cinco casos básicos:

  • caso 1:para caso “A”Regla 1 expresión regular a AFND
  • regla 2:para caso  “epsilon”Regla 2 expresión regular a AFND
  • regla 3:para caso “AB”Regla 3 expresión regular a AFND
  • regla 4:para caso “A+B”Regla 4 expresión regular a AFND
  • regla 5:para caso “A*”Regla 5 expresión regular a AFND

Dividimos la expresión regular en los subconjuntos mínimos a generando un árbol de descomposición.

árbol derivación expresión regularempezamos a modelar desde el segundo nivel ya que el primero es muy sencillo

(a+b+c)*

(a+b+c)*

(aa+bb)

(aa+bb)

unimos los autómatas del segundo nivel y generaremos el automata que describe la expresión regular (a + b + c)∗ (aa + bb)(a + b + c)∗.

AFND from REGEXPcomparamos con el JFlap y son equivalentes por lo tanto este paso va bien, ahora eliminamos las transiciones epsilon.

AFND TO AFDY el AFD generado lo minimizamos

AFD Mínimocomo es completo el indice(RL) es igual a 4 , si no fuera completo habría que añadir el estado de error siendo el indice(RL) igual al numero de estados del AFD mínimo + el estado de error

Configuración de Sistemas Informáticos Practica 3. Control Remoto de Terminales

El objetivo de esta práctica es comprender y ver en la práctica el funcionamiento de las aplicaciones para el control remoto de equipos y visualizar el escritorio de otras máquinas. Para ello instalaremos un servidor VNC y repasaremos sus opciones de configuración. Posteriormente utilizaremos el visor de VNC para acceder a terminales que tengan instalado el servidor y comprobar su funcionamiento.

Cuestiones:

1. Especificar todas las opciones que tenemos a nuestra disposición cuando nos conectamos a un servidor VNC y explicar su efecto.

Opciones Clientes

  • Format and encoding
    • AutoSelect –> El cliente seleccionara las opciones automaticamente
    • Use 8-Bit colour –> Reduce la profundidad de color de las imágenes a enviar para reducir el ancho de banda necesario para el comportamiento fluido de la sesión
    • Algoritmos de compresion
      • ZRLE — Usa Run Length Enconding de la libreria zlib.
      • Hextile — separa rectangulos en grupos de 16×16 y los manda usando RLE.
      • CoRRE — Es una variante de RRE, usando rectangulos de 255×255 como máximo.
      • RRE — Rise and Run length encoding es una version 2D del RLE.
      • Raw — sin compresión.
  • Use CopyRect encoding — Es un algoritmo eficiente para cuando algo se mueve, los unicos datos que se envían es el movimiento de un rectángulo. También puede ser eficiente para un patrón repetido
  • Mouse:
    • Emulate 3 Buttons (with 2-buttion click): Emula el tercer botón del ratón
    • Swap mouse buttons 2 and 3 intercambia el 2 y 3 botón del ratón.
  • Display
    • View only (inputs ignored): No envia los eventos del teclado ni del ratón producidos por el cliente
    • Full-screen mode: Habilita el modo pantalla completa
    • Scale by : Nos que el cliente cree una ventana escalada de las imágenes que recibe del servidor
  • Miscelanea
    • Shared: No desconecta a otros clientes que esten conectados.
    • Deiconify on Bell: reproduce los mensajes de la campana del servidor en el cliente.
    • Disable clipboard transfer: inhabilita la interaccion de los portapapeles del cliente y del servidor.

2. Comentar los grupos y parámetros de los mismos en la configuración del servidor VNC.

  • Opciones servidorIncoming Conections:
    • Acept Socket Connection –> acepta conexiones a través de sockets (una ip, un protocolo y un puerto)
    • Password : la contraseña para autenticarse
    • Display Number: El numero de pantalla a mostrar.
    • Enable Java Viewer: Permite la posibilidad conectarse a través de un navegador usando un applet de Java
  • Connection Settings:
    • Disable Remote Keyboard & Pointer — Deshabilita teclado y ratón remoto
    • Disable Local Keyboard & Pointer — Deshabilitar el teclado y el ratón del servidor.
    • Remove Desktop Wallpaper — Cambia el color de fondo de escritorio por un fondo de un color liso para mejorar el rendimiento.
  • When last Client Disconnects: Opciones cuando el servidor queda sin clientes conectados
    • Do nothing: no hace nada.
    • Lock Workstation: bloquea el servidor solicitando la contraseña de usuario.
    • Logoff Workstation: el servidor cierra la sesión del usuario.
  • Update Handling — Manejo de las actualizaciones de pantalla
    • Poll Full Screen– Enviá la pantalla completa
    • Poll Foreground Window — Enviá la ventana seleccionada.
    • Poll Window Under Cursor — Enviá la ventana que esta bajo el cursor
    • Poll Console Windows Only– Con esta opción las únicas ventana que serán refrescadas son consolas de comandos.
    • Poll On, Event Received Only: Solo actualizara la pantalla inmediatamente después de que el cliente envié un evento de teclado o ratón.
  • Comandos Servidor:
    • Add New Client: permite crear una conexion con un cliente que este en modo escucha.
    • Register Vnc Server Service: crea un servicio en el ordenador servidor que arranca el servidor de VNC.
    • Run Service Helper: Crea el icono en la barra de tareas “en caso de arrancarlo como servicio”.
    • Show About Box: Muestra información sobre la versión actual de VNC.
    • Sow Default properties: Muestra las opciones predeterminadas del servidor.
    • Show User Properties: Muesta la información acerca de los usuarios conectados.
    • Unregister VNC Server Service: Elimina el servicio del servidor.

Practica 7 Conversiones Autómatas lenguajes regexp en JFlap

El enunciado de la practica aqui:Practica 7 TALF

1.-Encuentra el AFD mínimo que reconoce el lenguaje representado por la expresión regular (RegEx) siguiente (00+10*1+λ)*(1+00)

En JFlap escogemos la opción de expresión regular

1 1 expresion regularintroducimos la expresión regular en el cuadro de dialogo

1 2 expresion regular

seleccionamos la opción Convert to NFA del menu convert para convertir una expresión regular en un autómata finito no determinista lo que nos creara el siguiente AFND

1 3 autómata finito no deterministaConvertimos el AFND en un AFD usando  la opción “Convert to DFA” del menú Convert

1 4 automata finito deterministacomo ultimo paso debemos minimizar el autómata finito determinista la opción para realizar la minimización se encuentre en el menú Convert  en la opción minimize DFA

1 5 automata finito determinista minimo

2.-Encuentra el AFD mínimo que reconoce el lenguaje representado por la siguiente gramática, y comprueba si es equivalente al del ejercicio anterior

S → 0A
S → 1C
D → 1C
B → 0B
C → 1S
D → 0A
A → 0D
C → 0B
B → 1S
S →1
D→1
A→0

Introducimos la gramática en JFlap

1 Gramatica Introducida

Pinchamos en Convert –> Convert Right Lineal Grammar to FA nos aparece una ventana donde introducimos la siguiente secuencia Show all -> Done? –> Export

2 Conversion a FA

Aparece una nueva Ventana con el FA generado
3 FA Convertido

Seleccionamos el menu test -> compare equivalence –> seleccionamos el AFD minimo del apartado anterior

4 equivalencia

son equivalentes

3.-Encuentra una expresión regular y una gramática para el lenguaje reconocido por el autómata siguiente

1 automatapara convertir el autómata en una expresión regular seleccionamos la opción “convert FA to RE” del menú “convert” que nos obligara a añadir un estado final que no sea inicial quedando de la siguiente forma

autómata a expresión regular

pinchamos en el botón “Do It” hasta que realice todos los pasos necesarios para la conversión informándonos en este punto con un mensaje con el siguiente text “You’re done. Go away.”  momento en el que pincharemos en export que nos mostrara la expresión regular en una nueva ventana.

(b(ab)*+(a+b(ab)*(b+aa))(ba+(a+bb)(ab)*(b+aa))*(a+bb)(ab)*)*

(b(ab)*+(a+b(ab)*(b+aa))(ba+(a+bb)(ab)*(b+aa))*(a+bb)(ab)*)*

para convertir el autómata en una gramática en la ventana del autómata seleccionamos “Convert to Grammar” en el menú “Convert”   y presionamos repetidamente el botón “Hint” repetidas veces hasta que genere la gramática

conversión a gramática

una vez generada la gramática solo resta pulsar en el botón Export que abrirá una nueva ventana con la gramática

gramática

4.-Comprueba que el autómata anterior es equivalente a la siguiente Expresión Regular ((aa+b)(ba)*(a+bb+λ)+ab)*(aa+b)(ba)*+λ

JFlap no puede compara equivalencia entre expresiones regulares por lo tanto debemos transformar la expresión regular en un autómata para eso creamos una nueva expresión regular en JFlap

expresión regular

una vez insertada la expresión regular  seleccionamos la opción “Convert to NFA”  del menú “Convert”

regexp to AFN

Una vez generado el AFND solo necesitamos comprobar la equivalencia en el menú “Test” -> “Compare Equivalence” que nos dirá que son equivalentes, en este caso son equivalentes

AFN

Hoja 8 (20 de Abril de 2010)

P1: Sea C = {a,b,c,d,e,f,g,h} un conjunto (de letras), y sea R = {(a, d), (b, e), (c, a), (d, b), (e, c), (f, g), (g, h)} ⊂ C × C una relación sobre C.

  • Construye las relaciones Ri para todos los i = 0, . . . , ∞.
    • R0 ={(a,a),(b,b),(c,c),(d,d),(e,e),(f,f),(g,g),(h,h)}   (Las relaciones de todos los elementos consigo mismo)
    • R1={(a,d),(b,e),(c,a),(d,b),(e,c),(f,g),(g,h)} (La relación que nos dan)
      • (a,d) de R1  y (d,b) de R1 generan (a,b).
      • (b,e) de R1 y (e,c) de R1 generan (b,c).
      • (c,a) de R1 y (a,d) de R1 generan (c,d).
      • (d,b) de R1 y (b,e) de R1 generan (d,e).
      • (e,c) de R1 y (c,a) de R1 generan (e,a).
      • (f,g) de R1 y (g,h) de R1 generan (f,h).
      • (g,h) de R1 no genera nada.
    • R2={(a,b),(b,c),(c,d),(d,e),(e,a),(f,h)} <–( la unión de las relaciones generadas en R1)
      • (a,b) de R2 y (b,e) de R1  generan (a,e).
      • (b,c) de R2 y (c,a) de R1 generan (b,a).
      • (c,d) de R2 y (d,b) de R1 generan (c,b).
      • (d,e) de R2 y (e,c) de R1 generan (d,c).
      • (e,a) de R2 y (a,d) de R1 generan (e,d).
      • (f,h) de R2  no genera nada
    • R3={(a,e),(b,a),(c,b),(d,c),(e,d)} <– ( la unión de las relaciones generadas en R2)
      • (a,e) de R3 y (e,c) de R1 generan (a,c).
      • (b,a) de R3 y (a,d) de R1 generan (b,d).
      • (c,b) de R3 y (b,e) de R1 generan (c,e).
      • (d,c) de R3 y (c,a) de R1 generan (d,a).
      • (e,d) de R3 y (d,b) de R1 generan (e,b).
    • R4={(a,c),(b,d),(c,e),(d,a),(e,b)} <– (la unión de las relaciones generadas en R3)
      • (a,c) de R4 y (c,a) de R1 generan (a,a).
      • (b,d) de R4 y (d,b) de R1 generan (b,b).
      • (c,e) de R4 y (e,c) de R1 generan (c,c).
      • (d,a) de R4 y (a,d) de R1 generan (d,d).
      • (e,b) de R4 y (b,e) de R1 generan (e,e).
    • R5={(a,a),(b,b),(c,c),(d,d),(e,e)} <– (la unión de las relaciones generadas en R4)
      • (a,a) de R5 y (a,d) de R1 generan (a,d).
      • (b,b) de R5 y (b,e) de R1 generan (b,e).
      • (c,c) de R5 y (c,a) de R1 generan (c,a).
      • (d,d) de R5 y (d,b) de R1 generan (d,b).
      • (e,e) de R5 y (e,c) de R1 generan (e,c).
    • R6={(a,d),(b,e),(c,a),(d,b),(e,c)} <– (la unión de las relaciones generadas en R5)
      • (a,d) de R6  y (d,b) de R1 generan (a,b).
      • (b,e) de R6 y (e,c) de R1 generan (b,c).
      • (c,a) de R6 y (a,d) de R1 generan (c,d).
      • (d,b) de R6 y (b,e) de R1 generan (d,e).
      • (e,c) de R6 y (c,a) de R1 generan (e,a).
    • R7={(a,b),(b,c),(c,d),(d,e),(e,a)} <– (la unión de las relaciones generadas en R6)
      • (a,b) de R7 y (b,e) de R1  generan (a,e).
      • (b,c) de R7 y (c,a) de R1 generan (b,a).
      • (c,d) de R7 y (d,b) de R1 generan (c,b).
      • (d,e) de R7 y (e,c) de R1 generan (d,c).
      • (e,a) de R7 y (a,d) de R1 generan (e,d).
    • R8={(a,e),(b,a),(c,b),(d,c),(e,d)} ==R3 <– (la unión de las relaciones generadas en R7)
    • R9==R4
    • R10=R5
    • R11=R6
    • R12=R7
    • R13=R3
    • Rn=  R (n-3) mod 5+3
  • Construye la relación R∗.

Basta con unir todas las relaciones hasta R5 ( a partir de R7 el resto estarán repetidas y R5,R6 y R7 son subconjuntos)

R*={(a,a),(b,b),(c,c),(d,d),(e,e),(f,f),(g,g),(h,h),(a,d),(b,e),(c,a),(d,b),(e,c),(f,g),(g,h),(a,b),(b,c),(c,d),(d,e),(e,a),(f,h),(a,e),(b,a),(c,b),(d,c),(e,d),(a,c),(b,d),(c,e),(d,a),(e,b)}

  • Argumenta si R∗ es reflexiva, simétrica , y/o transitiva.
    • Reflexiva: Si porque todo elemento estan relacionados consigo mismo al pertenecer R0 a R*.
    • Simétrica:
      • (a,d) y (d,a) V
      • (b,e) y (e,b) V
      • (c,a) y (a,c) V
      • (d,b) y (b,d) V
      • (e,c) y (c,e) V
      • (f,g) no existe (g,f) F
      • (g,h) no existe (h,g) F
      • (a,b) y (b,a) V
      • (b,c) y (c,b) V
      • (c,d) y (d,c) V
      • (d,e) y (e,d) V
      • (e,a) y (a,e) V
      • (f,h) no existe (h,f) F
    • Transitiva: Si, porque hemos relacionado todas los pares entre si
  • ¿Cuál pareja (o parejas) deberíamos añadir a la relación R para que R∗ sea simétrica (si piensas que R∗ no es simétrica en el apartado anterior)?
    • (g,f), (h,g) y (h,f)

Hoja 7 (13 de Abril de 2010)

P1: Determina una expresión regular α que define el mismo lenguaje aceptado por el autómata de la Hoja 5, digamos M , es decir, se tiene que cumplir L(α) = L(M ). Documenta tu construcción suficientemente (tienes dos lados de una hoja).

partimos del autómata de la hoja 5

Automata Inicialpara transformar nuestro AFND en una expresión regular necesitamos crear un AFNDG que este cumpla una serie de caracteristicas:

  1. El estado inicial no puede tener transiciones entrantes.
  2. El estado inicial debe de contar con transiciones salientes a los otros estados.
  3. Solo puede existir un estado final.
  4. El estado final no puede tener transiciones salientes.
  5. El estado final tiene que recibir transiciones entrantes de los otros.
  6. Excepto los estados inicial y final, cada estado tiene una única transición a los otros estados.

Transformando un AFND a un AFNDG

  1. Añadimos un nuevo estado inicial s con una transición epsilon  al viejo estado inicial.
  2. Añadimos un nuevo estado final f con transiciones epsilon entrantes de los viejos estados finales.
  3. Si dos estados están conectados con múltiples transiciones, las reemplazamos por una única transición en la que su etiqueta es la unión de las etiquetas reemplazadas.
  4. Si dos estados no están conectados, añadimos una transición etiquetada con ∅ entre ellos (en ambas direcciones).
  • Las transiciones ∅ nunca serán usadas.

Empezamos la transformación.

Paso 1:

AFND a AFNDG paso 1Paso 2:

AFND a AFNDG paso 2

Paso 3:

No existen multiples transiciones que conecten 2 estados nuestro automata sigue como esta.

Paso 4:

Vamos a dejar las transiciones ∅ sin poner.

De AFNDG a Expresión Regular

Para convertir un AFNDG con k estados en una expresión regular:

  1. Si k=2, solo tenemos los estados f y s. La etiqueta de la transición de s a f es la expresión regular equivalente al AFNDG
  2. Si k>2 , entonces construimos un AFNDG con k-1 estados.
    1. a) Escogemos un estado distinto de s y f.
    2. b) Eliminamos el estado seleccionado del autómata
    3. c) Reconectamos las transiciones sueltas de forma apropiada.
      1. Para cada par de estados, qi y qj, cambiamos la etiqueta de la transición por una que pueda tomar el AFNDG desde qi a qj de forma directa o a través del estado que estamos seleccionado

Comenzamos eliminando el estado marcado como 1

  • no tiene transiciones consigo mismo
  • las transiciones entrantes provienen  del estado  {s}
  • las transiciones salientes se dirigen a los estados {2,6}

por lo tanto debemos crear los transiciones {s,2} y {s,6}

  • la transición {s,2} es ε
  • la transición {s,6} es a

las modelamos en el automata

Estado 1 eliminado

no tenemos transiciones que tengan el mismo origen y destino continuamos

Eliminamos el estado marcado como 2:

  • tiene transiciones consigo mismo.
  • las transiciones entrantes provienen del conjunto de estados {s}
  • las transiciones salientes se dirigen a los estados {3,f}

por lo tanto tenemos que generar las transiciones {s,3} y {s,f}, como hay transición consigo mismo debemos ingresar (b)* en el medio

  • la transición {s,3} es (b)*.a
  • la transición {s,f} es (b)*

tras la eliminación del estado 2 nuestro autómata toma la siguiente forma

no tenemos transiciones que tengan el mismo origen y destino continuamos

Eliminamos el estado marcado como 3

  • no tiene transiciones consigo mismo
  • las transiciones entrantes provienen de {s,4,5}
  • las transiciones salientes se dirigen a {4,6}

por lo tanto debemos generar las transiciones {s,4},{s,6},{4,4},{4,6},{5,4},{5,6}

  • la transición {s,4} genera (b)*.aa
  • la transición {s,6} genera (b)*.a
  • la transición {4,4} genera b.a
  • la transición {4,6} genera b
  • la transición {5,4} genera a.a
  • la transición {5,6} genera a

tras la eliminación del estado 3 nuestro autómata toma la siguiente forma.

Estado 3 eliminado

tenemos transiciones con mismo origen y destino, {s,6} las unimos y nuestro autómata toma la siguiente forma

Estado 3 eliminado y transiciones

Eliminamos el estado marcado como 4

  • tiene transiciones consigo mismo
  • las transiciones entrantes provienen de {s,5,6}
  • las transiciones salientes se dirigen a{5,6,f}

por lo tanto debemos generar las transiciones {s,5},{s,6},{s,f},{5,5},{5,6},{5,f},{6,5},{6,6},{6,f} como 4 tiene transición consigo mismo tenemos que insertar (ba)* en el medio

  • la transición {s,5} genera (b)*aa(ba)*b
  • la transición {s,6} genera (b)*aa(ba)*b
  • la transición {s,f} genera (b)*aa(ba)*
  • la transición {5,5} genera aa(ba)*b
  • la transición {5,6} genera aa(ba)*b
  • la transición {5,f} genera aa(ba)*
  • la transición {6,5} genera (ba)*b
  • la transición {6,6} genera (ba)*b
  • la transición {6,f} genera  (ba)*

tras la eliminación del estado 4 nuestro autómata toma la siguiente forma.

Estado 4 eliminado

tenemos transiciones con el mismo origen y destino las unimos y nuestro autómata queda así

Estado 4 eliminado y transiciones

Eliminamos el estado marcado como 5

  • tiene transiciones consigo mismo
  • las transiciones entrantes provienen de {s,6}
  • Las transiciones salientes se dirigen  a {f,6}

las transiciones que debemos de crear son {s,f},{s,6},{6,f},{6,6} como  tiene transiciones consigo mismo debemos insertar (aa(ba)*b)* en medio

  • la transición {s,f} genera  (b)*aa(ba)*b(aa(ba)*b)*aa(ba)*
  • la transición {s,6} genera (b)*aa(ba)*b(aa(ba)*b)* (a+(aa((ba)*b)))
  • la transición {6,f} genera  (b+((ba)*b))(aa(ba)*b)*aa(ba)*
  • la transición {6,6} genera (b+((ba)*b))(aa(ba)*b)*(a+(aa((ba)*b)))

tras la eliminación del estado 5 nuestro autómata toma la siguiente forma

Estado 5 eliminadotenemos transiciones con el mismo origen y destino así que las unimos

la transición {s,6} quedara ((b)*aa(ba)*b(aa(ba)*b)*(a+(aa((ba)*b)))+((a+((b)*a))+(b)*aa(ba)*b)) ==s6

la transición {s,f} quedara (((b)*aa(ba)*b(aa(ba)*b)*aa(ba)*)+((b)*+(b)*aa(ba)*)) == sf

la transicion {6,6} quedara (((b+((ba)*b))(aa(ba)*b)*(a+(aa((ba)*b))))+((ba)*b)) == 66

la transición {6,f} quedara (((b+((ba)*b))(aa(ba)*b)*aa(ba)*)+((ba)*)) == 6f

Eliminamos el estado marcado como 6

  • tiene transiciones consigo mismo.
  • las transiciones entrantes provienen de {s}
  • las transiciones salientes se dirigen a {f}

por lo tanto deberemos de generar las transiciones {s,f} teniendo el cuenta como existe transición consigo mismo tenemos que insertar (66)* en medio

la transición {s,f} genera (sf)+((s6)(66)*(6f))

tras la eliminación del estado 6 nuestro autómata ya es la expresión regular.

((((b)*aa(ba)*b(aa(ba)*b)*aa(ba)*)+((b)*+(b)*aa(ba)*)))+((((b)*aa(ba)*b(aa(ba)*b)*(a+(aa((ba)*b)))+((a+((b)*a))+(b)*aa(ba)*b)))((((b+((ba)*b))(aa(ba)*b)*(a+(aa((ba)*b))))+((ba)*b)))*((((b+((ba)*b))(aa(ba)*b)*aa(ba)*)+((ba)*))))

introducimos a expresión regular en JFlap la transformamos es un AFND y comparamos la equivalencia con el AFNDG y………………………

Good Luck bad nigth

vamos que esta bien 🙂 a la 2ª fue la vencida

Fuentes:

http://vega.icu.ac.kr/~jiae/Automata_spring2008/DFA2RE.pdf

Practica 2: FTP

El objetivo de esta práctica es comprender y ver en la práctica el funcionamiento de las aplicaciones para la transferencia de archivos. Para ello instalaremos un servidor FTP y repasaremos las opciones más importantes para habilitar este servicio en una máquina.
Posteriormente utilizaremos un cliente FTP para realizar una conexión desde otro equipo y comprobar todos los cambios que realizamos en las opciones, así como para poder ver los informes de actividad del servidor cuando se transfieren archivos.

El servidor FTP que utilizaremos para llevar a cabo esta práctica será Serv-U, y como clientes podremos utilizar SmartFTP, WS-FTP,…

Cuestiones básicas:

1. ¿como podemos activar el servidor FTP como un servicio? ¿qué significa?

Tenemos dos formas de activar el servidor FTP como servicio.

La primera es durante la instalación del software marcando la casilla “Install Serv-U as a system service” como se ve en la imagen

Activar como servicio durante la instalaciónLa otra opción en caso de no marcarlo durante la instalación es crearlo nosotros a mano usando Sc.exe siguiendo las instrucciones del articulo 251192 de Microsoft.

Ejecutar un programa como servicio significa que  este es cargado por el sistema operativo y se ejecuta en segundo plano (Background) .

2. ¿que es una cuenta de usuario anónima? ¿cómo la creamos?

La cuenta de usuario anónima es una cuenta en un servidor FTP que permite a cualquier usuario el acceso al mismo y obtener un conjunto de archivos previamente decidido por los administradores del servidor. La mayoria de los servidores no implementan cuentas anónimas pero algunos servidores que sirven ficheros que deberian estar disponibles para la descarga publica (parches o nuevas versiones) deberian de contar con una cuenta anonima para los usuarios.

Para crear esta cuenta debemos acceder a la consola de administración de Serv-U

Consola de gestión de Serv-Upinchamos en la opción “Users” o “Global Users”

Asistente creacion usuariosseleccionamos la opción “Wizard…” mostrara un asistente de 4 pasos para crear un nuevo usuario.

Asistente usuarios Serv-U paso 1 de 4como nombre de usuario introducimos Anonymous la contraseña la dejamos en blanco, seleccionamos el directorio deseado y los permisos que queremos otorgarle (se recomienda que los usuarios anónimos solo tengan permisos para leer y listar directorios).

3. ¿cuáles son los datos básicos cuando se crea una cuenta de usuario? comenta a nivel general las distintas opciones, permisos, ….

Cuando se crea un usuario se nos muestra un formulario dividido en siete pestañas

  • Formulario creación usuario Serv-UUser Information
    • User Name: Establece el nombre de usuario
    • Full Name: Almacena el nombre completo del usuario
    • Password: Define la contraseña para el usuario que estamos creando
    • Password Type: Define el algoritmo de encriptación para el paso de contraseñas
    • Administration Privilege:  Permite otorgar diferentes privilegios de administración
    • Home Directory:  Define el directorio donde los usuarios trabajaran por defecto
    • Account Type: permite define la volatilidad de la cuenta, pudiendo ser deshabilitada o eliminada en una fecha concreta
    • Default Web Client: Define el comportamiento del servidor para conexiones a través del protocolo http
    • Lock User in Home Directory: nos permite enjaular al usuario en su directorio home solo pudiendo acceder a este
    • Alwais Allow Login: Nos permite ignorar las restricciones del grupo, muy útil si se necesita acceder desde un entorno restringido
    • Enable account: Activa la cuenta
    • Description: Una pequeña descripción de la cuenta.
  • Groups
    • Nos permite añadir el usuario a distintos grupos
  • Welcome Message
    • Nos permite crear un mensaje cuando el usuario se autentifica, una advertencia, notas sobre el funcionamiento….
  • IP Access
    • Nos permite generar reglas para configurar un pequeño cortafuegos permitiendo o denegando conexiones desde ciertos rangos de ip o ip’s
  • Directory Access
    • especifica los directorios a los que tendrá acceso el usuario y las reglas de acceso que se le otorgaran al usuario.
  • Virtual Paths
    • Las rutas virtuales nos permiten crear enlaces simbólicos a directorios que se encuentran fuera de la carpeta home del usuario.
  • Limits & Settings
    • Nos permite aplicar un conjunto de restricciones a la cuenta de ese usuario y horarios de funcionamiento de estas, las restricciones se catalogan en 5 subgrupos
      • Connection: Restricciones para las conexiones que realice el usuario
      • Password: Restricciones para la contraseña del usuario
      • Directory Listing: Restricciones relativas a la navegación del usuario a lo largo del árbol de directorios del servidor
      • Data Transfer: Restricciones acerca de la velocidad de transferencia del usuario
      • Advanced: Restricciones avanzadas

4. ¿qué es el directorio de recepción o “home directory”?
Es el directorio dentro del árbol de directorios a donde se envía el usuario tras su identificación, generalmente en el directorio de recepción es donde el usuario puede subir sus archivos.

5. ¿cómo puedo realizar un acceso a un sitio FTP a través del navegador?

Depende de si lo soporta el navegador.

Si existe ese soporte bastaría con  que poner en la barra de direcciones:
ftp://usuario@ftp.servidor.es (se preguntará la contraseña)
o directamente:
ftp://usuario:passwd@ftp.servidor.es
o de forma anónima (siempre que el servidor lo permita):
ftp://ftp.servidor.es
donde usuario es el nombre de usuario de la cuenta, passwd es la contraseña y ftp.servidor.es es el servidor FTP.

6. ¿qué significa bloquear (“lock”) el directorio de recepción?

Esta opción enjaula al usuario dentro de su directorio de recepción impidiéndole acceder a cualquier otro directorio que este en un nivel igual o superior del directorio de recepción.

7. ¿qué privilegios podemos asignar a los usuarios?

Podemos asignar distintos tipos de privilegios a los usuarios:

Los privilegios administrativos (que nos permiten gestionar el servidor)

  • Sin privilegios:  El usuario no tiene privilegios
  • Administrador de Dominios: Permite administrar el dominio
  • Administrador de Sistema: Los permisos del usuario son de administrador
  • Inherentes: Hereda los permisos del grupo al que pertenece

Los privilegios de Acceso a archivos y directorios.

  • Read : Acceso de lectura a ficheros y directorios
  • Write: Acceso de escritura a ficheros y directorios
  • Rename: Permite renombrar alchivos
  • Delete: Permiso de borrado para ficheros y directorios
  • Execute: Permiso de ejecución para ficheros (Riesgo potencial)
  • Append: Permite añadir contenido al final del fichero

8. ¿a que hace referencia el “Max. No. Of Users” en la configuración de un “dominio FTP”? ¿y en la configuración del usuario?
Dominio FTP: Numero máximo de usuarios conectados simultaneamente

Usuario:  Numero máximo de conexiones concurrentes con ese nombre usuario

9. ¿qué son las reglas de acceso IP? ¿desde dónde las puedo establecer? Pon algún ejemplo.
Las reglas de acceso IP nos permite crear listas blancas y listas negras para gestionar las restricciones de acceso para el servidor.

Se pueden estableces en las opciones de configuración de usuarios, grupos de usuarios, usuarios globales , grupos globales, detalles del dominio y detalles del servidor.

Por ejemplo si nuestro servidor cuenta con dos interfaces de red conectadas a la red 10.0.0.0/24 la primera y a la red 172.16.0.0/16 la segunda podríamos impedir a un usuario determinado (genera una cantidad de trafico no soportada por la infraestructura de esa red) el acceso desde la red 10.0.0.0/24

10. ¿puedo configurar los mensajes del servidor? ¿cuáles? ¿dónde?

Se pueden configurar los mensajes de bienvenida para los usuarios o grupos en la pestaña de opciones del usuario o grupo de usuarios en la pestaña Wellcome Messagge.

11. Interpreta la salida que muestra la actividad del servidor

La actividad del servidor muestra tres pestañas.

  • Sessions: Muestra las sesiones que se están produciendo en el servidor ftp en tiempo real
  • Statistics: Muestra un histórico de la actividad del servidor
  • Log: Muestra errores , información del inicio de la ejecución y mensajes globales

12. ¿puedo desactivar a un usuario del servicio? Si existe una manera automática, ¿en qué parámetros de basa?

Si, simplemente desmarcando la checkbox “Enable account ” en la pestaña “User Information” en el formulario “user properties”.

Podemos automatizar esta acción en la sección de propiedades del usuario, en la opción “account type” estableciendo una fecha de caducidad para esa cuenta

Practica 6 Talf

El enunciado aquí Practica 6 Talf

1.-Minimiza el autómata A1 = ({0,1},{q0, q1, q2, q3, q4}, f, q0,{q1, q2}) en donde f se define como:

  • f(q0, 0) = q3
  • f(q0, 1) = q2
  • f(q1, 0) = q4
  • f(q1, 1) = q1
  • f(q2, 0) = q0
  • f(q2, 1) = q3
  • f(q3, 0) = q0
  • f(q3, 1) = q2
  • f(q4, 0) = q4
  • f(q4, 1) = q1

modelamos el autómata en JFlap

modelado automata ejercicio 1para minimizarlo vamos al menu “Convert”->”minimize DFA”

minimizando paso 1obviamente los estados q1 y q4 quedan fuera porque no están asociados al grafo del estado inicial.

Pinchamos en el botón “Finish”

minimizado paso 2pinchamos en “complete” y en “done?” por lo que se mostrara el autómata minimizado en una nueva ventana

afd minimo

2. Indica cuáles de los siguientes autómatas son equivalentes entre sí:

  • AF1={{a,b},{p,q,r,s,t,u}, f1, p, {q,r}}
  • AF2={{a,b},{p,q,r,s,t,u}, f2, p, {u}}
  • AF3={{a,b},{p,q,r,s,t,u}, f3, p, {s,t,u}}
  • AF4={{a,b},{p,q,r,s,t,u}, f4, p, {r,s}}
  • AF5={{a,b},{p,q,r,s,t}, f5, p, {r,s}}

Autómata 1

F1 a b
p q p
q r s
r q t
s t u
t s u
u q u

modelamos el autómata en JFlap

automata 1

autómata 2

F2 a b
p q u
q r t
r s t
s r t
t u s
u u q

modelamos el autómata en JFlap

automata 2

autómata 3

F3 a b
p u q
q t r
r s r
s t r
t u q
u s p

modelamos el autómata en JFlap

automata 3

autómata 4

F4 a b
p r q
q r q
r s t
s r t
t t q
u u p

modelamos el autómata en JFlap

automata 4

autómata 5

F5 a b
p q r
q q t
r s q
s r q
t r q

modelamos el autómata en JFlap

automata 5

En la ventana de JFlap donde esta contenido el aútomata pintamos en “Test -> Compare Equivalence” y nos dice si es equivalente o no.

de la comprobación sacamos la siguiente tabla

@ AF1 AF2 AF3 AF4 AF5
AF1 F F V F
AF2 F F V
AF3 F F
AF4 F
AF5

Por lo tanto los autómatas equivalentes son AF1 con AF4 y AF2 con AF5