quiz image

Temas Alicia FZ - Examen TGM Progr.

Oganesson93 avatar
Oganesson93
·
·
Download

Start Quiz

Study Flashcards

523 Questions

¿Cuál es la principal característica del servicio de distribución de paquetes de información del Protocolo IP?

Orientado a no conexión

¿Qué información se encuentra en el encabezado de un datagrama IP?

Versión de protocolo IP, longitud de la cabecera, tiempo de vida, dirección IP origen y dirección IP destino

¿Cuál es la función principal del Protocolo ARP?

Resolver direcciones IP a direcciones MAC

¿Cuál es la unidad de información intercambiada por el Protocolo IP?

Datagrama

¿Qué versión de IP no utiliza paquetes broadcast?

IPv6

¿Qué ocurre con el tiempo de vida de un paquete IP cada vez que pasa por un router?

Se decrementa

¿Cuál es laprincipal ventaja del Protocolo IP sobre otros protocolos de red?

No especifica el contenido del área de datos

¿Qué sucede con un paquete ARP cuando se envía a una red?

Se envía a todos los dispositivos de la red y solo el dispositivo con la IP destino responde

¿Qué es lo que se fragmenta en el Protocolo IP?

Los paquetes de información

¿Qué protocolo se encarga de garantizar la recepción de paquetes?

Protocolo TCP

¿Cuál es el propósito del campo de autoridad en un mensaje DNS?

Indicar la autoridad del servidor DNS sobre el dominio.

¿Qué tipo de registro se solicitaría para obtener la dirección IP de un host?

Registro de tipo A

¿Cuál es el protocolo de transporte utilizado generalmente por el protocolo DNS?

UDP

¿Qué contiene la sección de pregunta en un mensaje DNS?

La consulta a realizar, incluyendo el tipo de registro solicitado y su nombre

¿Qué es un servidor DNS autoritativo?

Un servidor DNS que tiene una respuesta en su base de datos local para un dominio

¿Qué contiene la sección de respuesta en un mensaje DNS?

La respuesta del servidor DNS, que es el registro completo solicitado

¿Qué es el encabezado en un mensaje DNS?

La sección que tiene una longitud fija y contiene un identificador que relaciona las preguntas con las respuestas

¿Qué se incluye en la sección adicional de un mensaje DNS?

Información adicional, como las direcciones IP de los servidores anteriores

¿Cuál es el propósito del protocolo DNS?

Resolver nombres de dominio en direcciones IP

¿Qué sucede cuando un servidor DNS no tiene una respuesta en su base de datos local para un dominio?

Realiza una consulta recursiva a otro servidor DNS

¿Cuál es la característica principal del protocolo HTTP?

Es un protocolo sin estado que cierra la conexión después de cada respuesta.

¿Qué es lo que se incluye en la línea inicial de petición de un mensaje HTTP?

El método utilizado, la parte relativa al servidor de la URL y la versión del protocolo.

¿Qué es lo que se envía después de la última cabecera en un mensaje HTTP?

Una línea en blanco.

¿Qué es lo que identifica los recursos en el protocolo HTTP?

La URI del recurso.

¿Qué es lo que se envía en cada paquete en un mensaje HTTP?

Un mensaje HTTP en forma de texto plano (ASCII).

¿Cuál es una desventaja de la topología en árbol?

El tráfico de red es denso.

¿Qué ocurre cuando un nodo falla en una topología en árbol?

Solo el nodo que falló se ve afectado.

¿Cuál es una ventaja de la topología en árbol?

Es confiable y segura.

¿Qué tipo de topología se utiliza en redes WAN?

Topología en árbol.

¿Cuál es un problema que surge al agregar un nuevo dispositivo en una red?

Se dificulta la conexión de nuevos dispositivos.

¿Qué tipo de certificado se utiliza para identificar a una persona física?

Certificado SSL para cliente

¿Qué tipo de certificado se utiliza para identificar al autor de ficheros o porciones de código en cualquier lenguaje de programación?

Certificado para la firma de código

¿Qué tipo de certificado se utiliza para servicios de correo electrónico firmado y cifrado?

Certificado S/MIME

¿Qué tipo de certificado se utiliza para identificar a un servidor ante un cliente en comunicaciones mediante SSL?

Certificado SSL para servidor

¿Qué tipo de certificado se utiliza para determinar si se puede confiar en un certificado cualquiera?

Certificado para la AC

¿Qué formato de certificado es el más comúnmente utilizado?

Formato PEM

¿Qué información se verifica en un certificado de Clase 3?

Verificación de crédito de la persona o empresa

¿Qué tipo de certificado se utiliza para identificar a una persona física con una mayor seguridad?

Certificado de Clase 4

¿Qué información se encuentra en un certificado de Clase 2?

Documento de identidad o permiso de conducir

¿Qué tipo de certificado se utiliza para identificar a una persona física con una seguridad básica?

Certificado de Clase 2

¿Cuál es el propósito principal de una Autoridad de Certificación (CA)?

Para dar fe de la fiabilidad de los usuarios que desean confiar entre sí.

¿Qué es lo que se revoca en una lista de revocación de certificados?

Un certificado digital previamente emitido.

¿Qué es el período de validez máximo de un certificado digital?

Entre tres y cinco años.

¿Qué función tiene una CA Raíz?

Emite certificados para sí misma y sus CA Subordinadas.

¿Qué es lo que se busca evitar con el período de caducidad de un certificado digital?

Que el certificado quede comprometido por un avance tecnológico.

¿Qué comando se utiliza para crear un fichero vacío en Unix/Linux?

touch

¿Cuál es el nombre del editor de texto clásico en UNIX?

Vi

¿Qué tecla se utiliza para pasar del modo edición al modo comando en el editor Vi?

ESC

¿Cómo se crea un fichero con contenido utilizando el comando cat?

cat > archivo.txt

¿Qué comando se utiliza para mostrar quién está conectado actualmente al sistema?

who

¿Cuál es el propósito principal de la Shell de Unix/Linux?

Interactuar con el sistema operativo mediante comandos

¿Cuál es la sintaxis general de un comando de la Shell de Unix/Linux?

comando [opciones] [argumentos]

¿Qué es lo que se utiliza para personalizar el comportamiento de un comando en la Shell de Unix/Linux?

Opciones

¿Qué tipo de Shell es la más común?

Bourne Again SHell (bash)

¿Qué es lo que se ejecuta en el sistema operativo y actúa como intermediario entre el usuario y el núcleo del sistema?

La Shell de Unix/Linux

¿Qué tipo de datos se pueden procesar en la Shell de Unix/Linux?

Nombres de archivos, rutas, cadenas de texto, números, etc.

¿Cuál es el propósito principal de los scripts de automatización en la Shell de Unix/Linux?

Automatizar tareas

¿Qué es lo que proporciona la Shell de Unix/Linux?

Una forma de acceder a los recursos del sistema

¿Qué es lo que se utiliza para combinar comandos en la Shell de Unix/Linux?

Pipes

¿Qué es lo que se utiliza para redirigir salidas en la Shell de Unix/Linux?

Redirecciones

¿Cómo se puede redirigir la salida de varios comandos en Unix/Linux?

Utilizando el símbolo '|'

¿Qué tipo de bucle se utiliza para ejecutar un conjunto de comandos mientras se cumpla una condición?

WHILE

¿Cómo se puede iterar sobre una serie de elementos de una cadena en Unix/Linux?

Utilizando el bucle FOR

¿Cómo se puede ejecutar un conjunto de comandos si una determinada condición es verdadera en Unix/Linux?

Utilizando el comando IF

¿Qué ocurre cuando se utiliza '>>' en lugar de '>' en la redirección de salida en Unix/Linux?

La salida se añade al final del contenido del fichero

¿Cuál es el nombre del objeto clase que se utiliza para representar un objeto Java serializado en el esquema de LDAP?

javaSerializedObject

¿Qué es el Distinguished Name (DN) en el contexto de LDAP?

Un nombre único que identifica de forma unívoca a una entrada en el directorio

¿Cuál es el propósito del objeto clase javaContainer en el esquema de LDAP?

Contener un objeto Java

¿Cómo se organizan las entradas en el directorio LDAP?

En base a su lugar en el árbol del directorio

¿Qué es el modelo de nombrado en el contexto de LDAP?

Unconjunto de reglas para definir la estructura del directorio

¿Cuál es el objeto clase que se utiliza para representar una referencia de nombrado JNDI en el esquema de LDAP?

javaNamingReference

¿Qué es el árbol del directorio en el contexto de LDAP?

La estructura jerárquica del directorio

¿Cuál es el objeto clase que se utiliza para representar un objeto Java marshalizado en el esquema de LDAP?

javaMarshalledObject

¿Qué es el Relative Distinguished Name (RDN) en el contexto de LDAP?

Un nombre relativo que identifica a una entrada en el directorio

¿Cuál es el propósito del objeto clase javaObject en el esquema de LDAP?

Representar un objeto Java en el directorio

¿Cuál es la clase principal en Java para establecer conexiones contra un servidor LDAP?

LDAPConnection

¿Qué método se utiliza para buscar entradas en el directorio LDAP?

LDAPConnection.search()

¿Qué es lo que devuelve el método síncrono de LDAPConnection.search()?

Un LDAPSearchResults

¿Cuál es el propósito del método LDAPConnection.bind()?

Establecer una conexión autenticada contra un servidor LDAP

¿Qué es JLDAP en Java?

Un conjunto de librerías de clases de Java para LDAP

¿Cuál es el paso número 1 para utilizar el API de LDAP en Java?

Construir una LDAPConnection

¿Qué es el método LDAPConnection.disconnect()?

Un método para cerrar la conexión con el servidor LDAP

¿Qué devuelve el método asíncrono de LDAPConnection.search()?

Un LDAPSearchListener

¿Cuál es el propósito del paso número 4 para utilizar el API de LDAP en Java?

Cerrar la conexión con el servidor LDAP

¿Qué es la interfaz que ofrece Java para conexión a directorios LDAP?

JNDI

¿Cuál es la función principal de una pseudoclase en CSS?

Especificar un estado especial del elemento seleccionado

¿Cómo se incluye una hoja de estilo externa en una página HTML?

Utilizando la etiqueta 'link' en la sección 'head'

¿Qué es lo que se aplica a los elementos HTML de una página cuando se incluye una hoja de estilo externa?

Los estilos definidos en la hoja de estilo

¿Cuál es el propósito principal de utilizar una hoja de estilo externa?

Separar el contenido de la presentación

¿Qué es lo que se busca evitar al utilizar estilos directamente sobre aquellos elementos que lo permiten a través del atributo 'style'?

La mezcla del contenido con la presentación

¿Cuál es la forma más común de incluir un fichero externo CSS en una página HTML?

Utilizando la etiqueta 'link' en la sección 'head'

¿Qué es lo que se utiliza para especificar un estado especial del elemento seleccionado?

Una pseudoclase CSS

¿Cuál es el propósito principal de utilizar el elemento 'style' en una página HTML?

Definir un estilo interno para una página HTML

¿Qué es lo que se utiliza para definir un estilo específico para un elemento en CSS?

Un selector CSS

¿Qué atributos principales tiene la etiqueta 'link' para incluir una hoja de estilo en una página HTML?

href, rel, type

¿Cuál es la función principal de la clase XmlReader?

Proporcionar acceso de solo avance y solo lectura

¿Qué modelo de objetos de documento se utiliza para editar documentos XML?

DOM

¿Qué clase abstracta es la base de DOM?

XmlNode

¿Cuál es la característica principal de SAX?

Manipular archivos de gran tamaño sin ocupar memoria

¿Qué lenguaje se utiliza para describir la presentación de documentos XML?

XSL

¿Qué parte de XSL se utiliza para transformar un documento XML en otro formato?

XSLT

¿Qué clase de nodo representa un atributo de un elemento XML?

XmlAttribute

¿Qué API se utiliza para analizar documentos XML?

SAX

¿Qué limitación tiene SAX?

No puede regresar a modificar nodos

¿Qué clase de nodo representa un documento XML?

XmlDocument

¿Cuál es el paso número 2 para configurar PHP como módulo en un servidor Apache en UNIX?

Se compila e instala Apache

¿Cómo se puede utilizar PHP para realizar aplicaciones de escritorio?

Utilizando una interfaz gráfica de usuario

¿Cuál es la forma más común de conectar PHP con el servidor?

Como módulo del servidor web

¿Qué se configura en el paso número 4 para configurar PHP como módulo en un servidor Apache en UNIX?

El fichero php.ini

¿Qué se puede generar fácilmente con PHP?

Cualquier tipo de texto, como XHTML y cualquier otro tipo de fichero XML

¿Qué se necesita para realizar aplicaciones web con PHP?

PHP, un servidor web y un navegador web

¿Qué se compila en el paso número 3 para configurar PHP como módulo en un servidor Apache en UNIX?

PHP

¿Cuál es el propósito principal del archivo php.ini?

Controlar el comportamiento de PHP relacionado con directorios, sesiones y bases de datos

¿Qué es lo que se lee en cada ejecución en la versión CGI de PHP?

El archivo php.ini

¿Qué es necesario reiniciar después de realizar cambios en el archivo php.ini en el módulo de servidor?

El servidor web

¿Qué es lo que se configura para trabajar con PHP en el servidor web?

La configuración de los módulos o extensiones de PHP

¿Qué función tiene el comando phpinfo() en la prueba de la configuración de PHP?

Mostrar información detallada sobre la configuración de PHP

¿Qué es lo que se busca cuando se configura el servidor web para trabajar con PHP?

La configuración de los módulos o extensiones de PHP

¿Cuál es el archivo que se debe editar para cargar el módulo de PHP en Apache?

httpd.conf

¿Qué es lo que se busca cuando se instala PHP en un servidor?

La versión adecuada para el sistema operativo y la arquitectura del servidor

¿Cuál es el paso final para configurar PHP como módulo en un servidor Apache en UNIX?

Configurar php.ini con las opciones deseas.

¿Qué es necesario para conectar PHP con el servidor web?

Un servidor web y PHP.

¿Cuál es la ventaja de utilizar PHP como módulo del servidor web?

Mayor velocidad de ejecución.

¿Qué es CGI?

Un tipo de conexión entre PHP y el servidor web.

¿Cuál es la función de php.ini?

Configurar PHP.

¿Cuál es el propósito principal del archivo php.ini en PHP?

Controlar el comportamiento de PHP relacionado con directorios, sesiones y parámetros de bases de datos

¿Qué sucede cuando se realizan cambios en el archivo php.ini en un entorno de servidor?

Se requiere reiniciar el servidor web

¿Qué característica tiene el archivo php.ini en entornos CGI?

Se lee en cada ejecución

¿Qué se debe configurar en el servidor web para trabajar con PHP?

Todas las opciones anteriores

¿Qué se utiliza para probar la configuración de PHP?

Un archivo de prueba con una instrucción simple de PHP

¿Cuál es el método que se invoca cuando se inicia un hilo en Java?

run()

¿Cuál es la forma más directa de crear un programa multihilo en Java?

Extender la clase Thread y redefinir el método run()

¿Qué pasa cuando se llama al método start() de un hilo en Java?

El hilo se inicia y se ejecuta el método run()

¿Cuál es el propósito de la clase Thread en Java?

Permite controlar el comportamiento del hilo

¿Qué ventaja ofrece la programación multihilo en Java?

Mejora la eficiencia y el rendimiento de los programas

¿Cuál es el propósito principal de la interface Runnable en Java?

Proporcionar un método alternativo para la ejecución de un hilo

¿Cómo se establece la prioridad de un hilo en Java?

Utilizando el método setPriority() de la clase Thread

¿Qué ocurre cuando se llama al método start() de un hilo en Java?

El hilo se agrega a la cola de ejecución

¿Qué es la planificación por prioridad fija en Java?

Un mecanismo que establece la prioridad de un hilo según su importancia

¿Qué se representa mediante objetos que pertenecen a una clase que extiende la clase Throwable en Java?

Excepciones en tiempo de ejecución

¿Cuál es la característica principal de la programación multihilo en Java?

Permitir la ejecución concurrente de varias tareas

¿Qué es necesario implementar para crear un hilo en Java?

La interfaz Runnable

¿Qué determina el orden en que se ejecutan los hilos en Java?

La prioridad del hilo

¿Qué sucede cuando se llama al método start() en un objeto Thread?

El hilo comienza a ejecutar el método run()

¿Qué es la concurrencia en Java?

La capacidad de ejecutar varias tareas en un solo programa

¿Cuál es la principal ventaja del driver JDBC Tipo 3?

Es independiente respecto al sistema de bases de datos

¿Qué es necesario instalar en la máquina cliente para utilizar el driver JDBC Tipo 2?

La librería cliente de la base de datos

¿Qué característica comparten los drivers JDBC Tipo 3 y Tipo 4?

Son 100% Java

¿Qué tipo de driver JDBC se comunica con el servidor DBMS utilizando el protocolo de red nativo del servidor?

Driver JDBC Tipo 4

¿Qué es una desventaja del driver JDBC Tipo 2?

Es dependiente de la plataforma

¿Cuál es el propósito principal del método 'main' en una clase Java?

Ser el punto de entrada del programa

¿Cuál es la forma más directa de crear un programa multihilo en Java?

Extiende la clase 'Thread' y redefine el método 'run'

¿Qué característica de Java permite que los programas realicen tareas simultáneamente?

Programación multihilo

¿Cuál es el nombre de la clase que se utiliza para crear un hilo en Java?

Thread

¿Qué método se invoca cuando se inicia un hilo en Java?

run

¿Cuál es la principal ventaja de separar una aplicación JEE en capas?

Reduce el acoplamiento entre las diferentes partes de la aplicación

¿Cuál es el propósito principal de la capa de acceso a datos en una aplicación JEE?

Realizar tareas de integración con los sistemas de información

¿Cuál es el patrón de diseño que se utiliza comúnmente en el desarrollo de aplicaciones JEE?

MVC (Model-View-Controller)

¿Cuál es la función principal de la capa de presentación o Web en una aplicación JEE?

Controlar la interacción entre el cliente y la aplicación

¿Cuál es la capa donde se localizan los diferentes clientes de nuestras aplicaciones en una aplicación JEE?

Capa de cliente

¿Cuál es la principal característica de la arquitectura JEE?

Proporciona una plataforma para el desarrollo y ejecución de aplicaciones en el lenguaje de programación Java

¿Qué elementos son parte clave de la arquitectura JEE?

Servidores de aplicaciones, componentes y servicios

¿Qué es un contenedor en la arquitectura JEE?

Un entorno en tiempo de ejecución donde se ejecutan los componentes

¿Qué ventaja tiene la arquitectura JEE sobre otros estándares de desarrollo?

Permite el desarrollo de aplicaciones distribuidas y multitier

¿Cuál es la principal función del 'Controlador' en el patrón de diseño MVC?

Responder a eventos y enviar peticiones al 'Modelo'

¿Qué característica permite a la arquitectura JEE ejecutarse en diferentes sistemas operativos?

Basada en el lenguaje de programación Java

¿Qué es un componente empresarial en JavaEE?

Una unidad funcional de software que se comunica con otros componentes

¿Cuál es la principal función del 'Modelo' en el patrón de diseño MVC?

Realizar accesos a la información y gestionar privilegios

¿Qué es la vista en el patrón de diseño MVC?

La presentación de la información al usuario

¿Cuáles son los tres elementos constitutivos de JavaEE?

Componentes empresariales, servicios y contenedores

¿Cuál es la principal característica de los archivos WAR?

Distribuir contenido de aplicaciones web en tecnología JEE

¿Qué tipo de archivo se utiliza para describir la configuración de los componentes de aplicación en un contenedor web?

web.xml

¿Cuál es la principal característica de los Servlets en Java?

Componente de aplicación que responde a solicitudes HTTP

¿Qué tipo de archivo se utiliza para empaquetar una aplicación Java EE completa?

EAR

¿Qué herramienta se utiliza para automatizar el despliegue de una aplicación Java?

Gradle

¿Qué tipo de archivo se utiliza para describir la configuración de los componentes de aplicación en un contenedor?

Fichero XML de despliegue

¿Qué tipo de componentes se pueden incluir en un contenedor Web?

Servlets y JSPs

¿Qué tipo de archivo se utiliza para empaquetar módulos de la capa de aplicación cliente en una aplicación Java EE?

Fichero JAR

En un sistema RESTful, ¿qué es lo que se identifica con un identificador único de recurso (URI)?

Una representación de un recurso

¿Cuál es el propósito de las capas en un sistema RESTful?

Para que los recursos sean invisibles para el cliente

En un sistema RESTful, ¿qué es lo que se accede cuando se realiza una solicitud?

La representación de un recurso

¿Cuál es una característica clave de un sistema RESTful?

La capacidad de cachear respuestas

En un sistema RESTful, ¿qué es lo que se mantiene invisible para el cliente?

Las capas

¿Cuál es el principio fundamental en el diseño de API que separa la competencia del cliente y el servidor?

La separación de interfaz del usuario y almacenamiento de datos

¿Qué característica de la comunicación entre el cliente y el servidor implica que no se almacena ni se comparte información entre peticiones?

Sin estado

¿Qué ventaja se obtiene al etiquetar las respuestas como cacheable?

Se reduce el tiempo medio de espera de una serie de interacciones

¿Cuál es la principal desventaja de utilizar un sistema de capas en una aplicación?

Añade cabeceras y retrasos al procesamiento de datos

¿Qué característica del sistema por capas permite que el cliente reciba respuestas del servidor a través de intermediarios autorizados?

La capacidad de conectar con otros servidores

¿Qué desventaja se puede presentar al utilizar la cacheable en las respuestas?

Se pueden obtener datos desactualizados del caché

¿Qué es lo que no se puede hacer en una aplicación que utiliza un protocolo de comunicación estadoless?

Almacenar datos en el servidor para identificar un contexto determinado de comunicación

¿Qué es lo que se requiere al utilizar un protocolo de comunicación como SOAP?

Intentar de nuevo la llamada en caso de errores de comunicación

¿Cuál es la principal característica del protocolo SOAP?

Orientado a RCP

¿Qué es lo que permite el protocolo SOAP?

La interoperabilidad fluida entre sistemas heterogéneos

¿Cuál es el objetivo principal de la especificación WS-Security?

Proporcionar un conjunto flexible de mecanismos para construir protocolos de seguridad

¿Qué característica de SOAP permite que los datos sean legibles tanto para humanos como para máquinas?

Formato del mensaje XML

¿Qué tecnología estandarizada se utiliza para cifrar el tráfico de datos entre un navegador web y un sitio web?

SSL/TLS

¿Qué es lo que se utiliza para proteger la conexión en SSL/TLS?

Certificados digitales

¿Cuál es la característica principal de SOAP?

Protocolo basado en estándares

¿Cuál es el nombre del filtro que se utiliza en Struts 2 para implementar el patrón MVC?

StrutsPrepareAndExecuteFilter

¿Qué es un interceptor en Struts 2?

Un objeto que se utiliza para interceptar y procesar las solicitudes antes de que lleguen a la acción

¿Qué es una acción en Struts 2?

Un objeto que se utiliza para procesar las solicitudes y ejecutar la lógica de negocio

¿Cuál es el principal objetivo del StrutsPrepareAndExecuteFilter en Struts 2?

Interpretar todas las peticiones entrantes y determinar qué Action y qué interceptores deberían ejecutarse.

¿Qué es un resultado en Struts 2?

Un objeto que se utiliza para mostrar la interfaz de usuario

¿Qué es el archivo de configuración de Struts 2?

Un archivo que se utiliza para definir las acciones y los resultados

¿Qué clase es utilizada por el StrutsPrepareAndExecuteFilter para determinar si la acción debería ser invocada o no?

ActionMapper

¿Qué es lo que se utiliza para procesar las peticiones en Struts 2?

Tres elementos principales: Actions, interceptores y resultados

¿Qué es lo que se encarga de crear un ActionInvocation en Struts 2?

ActionProxy

¿Qué es lo que representa el fichero de configuración de Struts 2?

ConfigurationManager

¿Qué es lo que se encarga de revisar la petición y determinar el Action apropiado para servirla en Struts 2?

StrutsPrepareAndExecuteFilter

¿Qué es lo que indica cuál result debe ser aplicado en Struts 2?

El Action

¿Cuál es el archivo de configuración de Struts 2 que se utiliza para iniciar los recursos del proyecto?

struts.xml

¿Qué es lo que se configura en el archivo web.xml en Struts 2?

El StrutsPrepareAndExecuteFilter

¿Cuál es el objetivo principal de la arquitectura de microservicios en Spring Boot?

Mejorar la escalabilidad y flexibilidad de las aplicaciones

¿Qué principio se utiliza en Spring Boot para evitar la escritura de código redundante?

Convención sobre la configuración

¿Qué característica de Java se utiliza para asociar metadatos a un elemento de código?

Anotaciones

¿Qué es lo que se configura automáticamente en Spring Boot?

Las dependencias y los servicios necesarios para la aplicación

¿Qué es lo que se reduce en Spring Boot gracias a la configuración automática?

La cantidad de código necesario para configurar un proyecto

¿Qué es la principal característica de las anotaciones en Java?

Asocian metadatos a elementos de código

¿Cuál es el objetivo principal de la arquitectura de microservicios?

Mejorar la escalabilidad y flexibilidad de las aplicaciones

¿Qué es lo que se configura automáticamente en Spring Boot?

Las dependencias y los servicios necesarios

¿Qué principio se utiliza en Spring Boot para evitar la escritura de código redundante?

Convención sobre la configuración

¿Qué es lo que se encarga de generar las dependencias necesarias en Spring Boot?

Los starters

Cuál es el propósito principal de utilizar AJAX en el desarrollo web?

Realizar solicitudes asíncronas al servidor para evitar recargar páginas

Qué tecnología se utiliza para manipular los documentos HTML y sus elementos en AJAX?

DOM

Qué objeto se utiliza para la comunicación asíncrona con el servidor en AJAX?

XMLHttpRequest

¿Cuál es el formato de datos que se utiliza para transferir información entre el servidor y el cliente en una aplicación web?

JSON

Qué formato de datos se utiliza generalmente para el intercambio de datos en AJAX?

JSON

¿Qué es lo que se procesa en el servidor en una solicitud HTTP?

Los datos recibidos en formato JSON

Qué lenguaje de programación se utiliza para unir todas las tecnologías en AJAX?

JavaScript

¿Qué es lo que se utiliza para actualizar la interfaz de usuario de la página web en una aplicación web?

JavaScript

¿Cuál es la ventaja principal de utilizar JSON en la transferencia de datos?

Su ligereza

¿Qué es lo que se envía desde el servidor al cliente en una respuesta HTTP?

Los datos procesados en formato JSON

¿Cuál es la principal característica de JavaScript como lenguaje de programación?

Ser un lenguaje de programación interpretado

¿Qué es lo que se ejecuta en el lado del cliente cuando se utiliza JavaScript?

El navegador web del usuario

¿Cuál es la principal ventaja de usar Node.js en el desarrollo web?

Ser un entorno de programación que incluye numerosas librerías preparadas para ser usadas por parte de los programadores

¿Qué es lo que se utiliza para agregar interactividad a las páginas web?

HTML y JavaScript

¿Qué herramienta se utiliza para permitir el desarrollo web completo con JavaScript del lado del servidor?

Node.js

¿Cuál es el propósito de la clave primaria en una entidad?

Identificar completamente una entidad

¿Cómo se representan los atributos en un diagrama ER?

Con un guion y su nombre en minúsculas

¿Qué se llama a una entidad que no se puede identificar completamente con sus atributos?

Entidad débil

¿Qué se llama a la asociación entre entidades en un diagrama ER?

Interrelación

¿Qué característica deben tener todos los atributos?

Ser univaluados

¿Cuál es la principal característica de una entidad débil?

Se representa con un rectángulo doble

¿Qué es lo que se cumple en la relación entre una entidad superclase y una entidad subclase?

Toda ocurrencia de una entidad subclase es una ocurrencia de su entidad superclase

¿Qué es lo que se utiliza para clasificar el tipo de relación en una interrelación?

Tipo de conectividad

¿Qué es lo que se refiere al número mínimo y el número máximo de correspondencias en las que puede tomar parte cada ocurrencia de una entidad en una relación?

Cardinalidad

¿Qué es lo que se utiliza para modelizar las características propias de las especializaciones en una entidad?

Entidad subclase

¿Cuál es la principal característica de una relación M:N en la etapa del diseño físico?

La clave primaria está formada por la suma de las claves primarias de las relaciones implicadas

¿Cuál es el objetivo principal de la etapa del diseño físico?

Conseguir un buen rendimiento de la base de datos

¿Qué es lo que se logra al aplicar las reglas de transformación del modelo ER al modelo relacional?

Un nuevo modelo relacional solo con la reestructuración de la información

¿Cuál es la característica principal de una tabla en Primera Forma Normal (1NF)?

La tabla contiene una clave primaria única

¿Qué es lo que se busca alcanzar en el proceso de normalización?

Eliminar datos duplicados y reducir la redundancia

¿Cuál es el propósito principal de un Sistema de Gestión de Bases de Datos (SGBD)?

Administrar y gestionar la base de datos

¿Qué caracteriza a las bases de datos jerárquicas?

La estructura en forma de árbol

¿Qué es lo que se normaliza en el diseño de una base de datos relacional?

Los modelos de datos

¿Cuál es la ventaja principal de las bases de datos relacionales?

La organización en tablas relacionadas

¿Qué problema resuelve el modelo de base de datos en red?

La redundancia de datos

¿Cuál es la función principal de una base de datos?

Todas las anteriores

¿Qué caracteriza a las bases de datos?

Ser colecciones organizadas de datos

¿Cuál es el objetivo principal del diseño de una base de datos?

Crear un modelo de datos eficiente

¿Qué tipo de base de datos se utiliza comúnmente en aplicaciones y contextos diferentes?

Base de datos relacional

¿Qué es lo que se puede agregar, modificar, eliminar y consultar en una base de datos?

La información

¿Cuál es la principal diferencia entre una base de datos relacional y una base de datos NoSQL?

El uso de esquemas de bases de datos entidad-relación

¿Cuál es el tipo de base de datos NoSQL que almacena la información como un documento?

Base de datos documental

¿Cuál es el propósito de una clave primaria en una tabla?

Identificar de manera única cada registro en la tabla

¿Cuál es el nombre del modelo de base de datos NoSQL más popular?

Base de datos clave-valor

¿Cuál es la principal ventaja de utilizar bases de datos NoSQL?

La capacidad de manejar grandes cantidades de datos

¿Qué característica principal distingue a las bases de datos NoSQL de las bases de datos relacionales?

La no utilización de un esquema entidad-relación

¿Cuál es el tipo de base de datos NoSQL que almacena la información como un documento?

Bases de datos documentales

¿Qué es lo que se relaciona con la clave primaria de otra tabla en una base de datos relacional?

Una clave foránea

¿Cuál es la ventaja principal de las bases de datos NoSQL en comparación con las bases de datos relacionales?

La mayor escalabilidad y rendimiento

¿Cuál es el privilegio de sistema que permite crear y borrar bases de datos?

SYSDBA

¿Qué herramienta es la opción preferente para recuperar información en Oracle?

RMAN

¿Qué comando se utiliza para crear un rol en Oracle?

CREATE ROLE

¿Qué privilegio se utiliza para realizar operaciones específicas en un objeto de la base de datos?

Privilegios de objeto

¿Qué instrucción se utiliza para parar la instancia de base de datos en Oracle?

SHUTDOWN

¿Cuál es el propósito del comando SHUTDOWN IMMEDIATE en una base de datos Oracle?

Cerrar la instancia de Oracle en buenas condiciones para realizar una copia en frío

¿Qué pasa con los archivos de datos cuando se coloca un Tablespace en modo begin backup?

No se escriben por el proceso DBWRITER.

¿Qué archivos se deben copiar al realizar un backup en frío de una base de datos Oracle?

Los archivos de datos, control, parámetros y contraseñas

¿Qué comando se debe ejecutar después de copiar los archivos de una copia en frío para restaurar la base de datos?

RECOVER DATABASE

¿Qué comando se utiliza para montar la base de datos después de restaurar el archivo de control?

STARTUP MOUNT

¿Qué es lo que se debe hacer durante un backup en caliente para minimizar el impacto en la base de datos?

Poner cada tablespace en modo BACKUP individualmente

¿Qué archivos se copian durante la copia de seguridad?

Los archivos de datos y el archivo de control.

¿Qué pasa si falla un archivo de control y no se tienen copias multiplexadas?

Se puede restaurar el archivo de control pero es más complicado.

¿Cuál es el beneficio de utilizar el modo ARCHIVELOG al realizar un backup de una base de datos Oracle?

Permite restaurar la base de datos hasta un punto anterior en el tiempo

¿Qué orden se debe ejecutar después de recuperar la base de datos?

ALTER TABLESPACE ONLINE

¿Cuál es el propósito principal de la recuperación de tipo flashback en Oracle?

Retroceder a un punto en el tiempo en el que los datos eran correctos

¿Qué tipo de copias se realizarían en un modo ARCHIVELOG?

Ambas, en caliente y en frío

¿Qué comando se ejecuta para cerrar la instancia de Oracle en buenas condiciones para hacer una copia en frío?

SHUTDOWN IMMEDIATE

¿Qué archivos se copian cuando se realiza un backup de la base de datos en frío?

Todos los archivos mencionados

¿Qué paso se debe seguir para restaurar la base de datos desde un backup en frío?

Todos los pasos mencionados

¿Qué se recomienda hacer cuando se realiza un backup en caliente?

Paralizar individualmente cada tablespace

¿Qué tipo de copias se realizan mientras la base de datos está abierta y funcionando?

Copias en caliente

¿Qué comando se ejecuta después de copiar los archivos de la copia a donde están los de la base de datos?

RECOVER DATABASE

¿Qué comando se ejecuta para arrancar la base de datos en modo MOUNT?

STARTUP

¿Qué es lo que se busca evitar al realizar un backup de la base de datos?

Perder datos importantes

¿Cuál es la principal función de la estructura en memoria PGA?

Utilizar cada proceso de servidor para atender peticiones

¿Qué componente de la SGA contiene la caché de búfer de datos?

SGA

¿Qué tipo de archivo de base de datos se utiliza para almacenar los datos finales de la base de datos?

Archivos de datos

¿Qué proceso de segundo plano se encarga de grabar los datos de la caché del búfer de datos en los archivos de datos?

DBWRn

¿Qué estado de la instancia de Oracle se caracteriza por que no hay procesos de servidor ejecutándose?

Shutdown

¿Qué archivo de base de datos se utiliza para almacenar las modificaciones de los datos confirmados?

Archivos redo logs

¿Qué es el propósito principal de la estructura en memoria SGA?

Compartir memoria entre todos los procesos de servidor

¿Qué proceso de Oracle se encarga de gestionar las peticiones de los procesos de usuario?

Procesos de servidor

¿Qué estado de la instancia de Oracle se caracteriza por que se han ejecutado todos los procesos de servidor y se ha abierto la base de datos?

Open

¿Qué proceso de segundo plano se encarga de realizar tareas de mantenimiento en la base de datos?

SMON

¿Cuál es la función principal de la estructura de memoria PGA en Oracle?

Proporcionar memoria para cada proceso de servidor

¿Qué componente de la SGA contiene la caché de búfer de datos?

Caché de búfer de datos

¿Cuál es el propósito principal del archivo redo log?

Almacenar las modificaciones de los datos confirmadas

¿Qué ocurre cuando se ejecuta un checkpoint en Oracle?

Se graban los datos de la caché del búfer de datos en los archivos de datos

¿Cuál es el estado de la instancia de Oracle cuando se está ejecutando?

Estado de ejecución

¿Cuál es el propósito del archivo INIT.ORA en la creación de una base de datos en Oracle?

Contener los parámetros de configuración de la base de datos

¿Qué se crea automáticamente cuando se crea la base de datos Oracle?

Vistas estáticas del diccionario de datos

¿Qué tipo de vistas del diccionario de datos muestran objetos a los que el usuario tiene acceso?

Vistas ALL_

¿Cuál es el propósito del diccionario de datos en Oracle?

Contener información sobre la estructura y el contenido de la base de datos

¿Qué se crea al definir un ORACLE_SID?

La base de datos con el nombre definido

¿Cuál es la función principal del proceso de usuario en Oracle?

Recoger las instrucciones lanzadas por el usuario y enviarlas al servidor

¿Qué es lo que se encarga de asignar a cada proceso de usuario el proceso servidor adecuado en el modo de servidor compartido?

Un dispatcher (repartidor)

¿Qué se refiere a la comunicación entre el lado del cliente y el lado del servidor?

Conexión

¿Cuál es la característica principal del modo de servidor dedicado?

Cada proceso servidor atiende a un único proceso de usuario

¿Qué es lo que se encarga de procesar el código lanzado por el usuario?

Proceso servidor

¿Cuál es el nombre del proceso que se encarga de escribir los archivos redo log históricos en una base de datos Oracle?

ARCn

¿Qué tipo de archivo es requerido para una base de datos Oracle, pero no es obligatorio para su funcionamiento?

Archivos de parámetros

¿Qué estructura lógica se utiliza en Oracle para relacionar la lógica de la base de datos con la parte física?

Tablespaces

¿Cuál es el tipo de segmento que se utiliza para almacenar los viejos valores de los datos que han sido modificados por las transacciones?

Segmentos de Rollback

¿Qué es lo que se divide en extensiones en una base de datos Oracle?

Segmentos

¿Cuál es el nivel de permisos más alto en el que se pueden aplicar los permisos en MySQL?

Nivel global

¿Qué es lo que se utiliza para crear una nueva cuenta de usuario en MySQL?

Comandos CREATE USER y GRANT

¿Cuál es el propósito principal del sistema de privilegios de MySQL?

Autenticar un usuario y asociarlo con privilegios en una base de datos

¿Cómo se refiere a un usuario en MySQL una vez que se ha creado?

Usuario@host

¿Qué caracteres se pueden utilizar en los valores de las columnas Host?

% y _

¿Cuál es el nivel de permiso que se aplica a columnas en una tabla dada?

Nivel de columna

¿Qué pasa si añadimos WITH GRANT OPTION al final de los GRANT?

El usuario podrá otorgar privilegios a otros usuarios

¿Cuál es la función de los roles en MySQL?

Proporcionar una alternativa conveniente para otorgar privilegios individuales

¿Qué comando se utiliza para revocar permisos a un usuario o rol?

REVOKE

¿Dónde se almacenan los permisos de nivel de tabla?

Tabla mysql.tables_priv

¿Cuál es el propósito principal del usuario 'mysql.sys'@'localhost' en MySQL?

Propietario de los objetos de sistema de la base de datos/esquema sys

¿Qué sucede cuando un servidor MySQL no reconoce la identidad de un usuario?

El servidor deniega el acceso completamente

¿Qué es lo que se utiliza para proteger las bases de datos en MySQL?

Un sistema de seguridad lógica

¿Qué es el propósito principal de la cuenta 'root'@'localhost' en MySQL?

Realizar operaciones de administración en la base de datos

¿Qué sucede cuando un usuario se conecta a un servidor MySQL?

El servidor verifica la identidad del usuario y la clave correcta

¿Cuál es el propósito principal del comando 'USE nombre_de_tu_base_de_datos' en MySQL?

Cambiar la conexión actual a la base de datos especificada

¿Cuál es el propósito del sistema de seguridad lógica en MySQL?

Asignar permisos y definir roles para proteger tus bases de datos

¿Qué ocurre cuando un servidor MySQL identifica un usuario?

El servidor solicita la clave correcta

¿Qué tipo de roles de servidor existen en el nivel de servidor?

Roles fijos de servidor y roles de servidor definidos por el usuario

¿Cuál es el propósito del comando GRANT?

Otorgar permisos a entidades de seguridad

¿Cómo se organizan los permisos de servidor?

De forma jerárquica

¿Qué opción se utiliza para permitir a entidades de seguridad otorgar permisos sobre otras entidades de seguridad?

WITH GRANT OPTION

¿Cuál es el propósito principal de crear un rol de servidor en SQL Server?

Crear una capa de abstracción entre los usuarios y los objetos de la base de datos

¿Cuál es el propósito principal de la palabra clave GRANT en el sistema de permisos de SQL Server?

Otorgar permisos a un usuario o rol

¿Qué tipo de rol no contiene miembros en SQL Server?

Rol de aplicación

¿Cómo se crea un rol de base de datos en SQL Server?

Con la sentencia CREATE ROLE

¿Qué tipo de permisos se heredan de forma jerárquica en SQL Server?

Todos los permisos mencionados

¿Cuál es la función principal del esquema dbo en SQL Server?

Es el esquema predeterminado de cada base de datos

¿Qué es lo que se puede restaurar con una copia de seguridad completa en SQL Server?

La base de datos completa, incluyendo objetos y transacciones

¿Por qué es preferible asignar permisos a roles en lugar de a usuarios en SQL Server?

Porque facilita la gestión de permisos y reduce la complejidad

¿Qué tipo de rol se utiliza para agrupar permisos a nivel de servidor en SQL Server?

Rol de servidor

¿Cuál es el propósito principal de la cláusula HAVING en una consulta SQL?

Especificar condiciones de búsqueda para grupos de filas

¿Qué tipo de subconsulta puede devolver un único valor?

Subconsulta en la cláusula SELECT

¿Qué función cumplen las funciones de agregado en una consulta SQL?

Realizar cálculos en los datos agrupados

¿Cuál es el propósito principal de utilizar subconsultas correlacionadas en una consulta?

Utilizar datos de la consulta principal para filtrar los resultados de la subconsulta

¿Qué se puede utilizar en la cláusula HAVING para aplicar una condición a una subconsulta?

Funciones de agregado

¿Qué tipo de JOIN se utiliza para mantener todas las filas de la tabla izquierda en una consulta?

LEFT JOIN

¿Cuál es el propósito principal de utilizar la cláusula USING en lugar de la cláusula ON en una consulta con JOIN?

Asociar columnas con el mismo nombre

¿Qué se utiliza para comprobar si una subconsulta produce alguna fila de resultados?

Predicado EXISTS

¿Cuál es la función principal de la cláusula HAVING en una consulta SQL?

Filtra las filas resultantes de una consulta después de agruparlas

¿Qué tipo de consulta se utiliza para obtener las filas que contienen al menos un valor en común con otra consulta?

Subconsulta correlacionada

¿Qué cláusula se utiliza para filtrar las filas resultantes de una consulta antes de agruparlas?

WHERE

¿Qué tipo de JOIN se utiliza para combinar las filas de dos tablas que no tienen una relación directa?

FULL OUTER JOIN

¿Cuál es el propósito principal de la sentencia CREATE en una base de datos?

Crear nuevos objetos en la base de datos

¿Qué es un procedimiento almacenado en una base de datos?

Una rutina o programa que se almacena en una base de datos relacional con código SQL

¿Qué se utiliza para modificar la estructura de un objeto existente en la base de datos?

La sentencia ALTER

¿Qué tipo de variables se utilizan en un procedimiento almacenado para almacenar valores temporales?

Variables locales

¿Cuál es el propósito principal de la cláusula WHERE en una sentencia SELECT?

Obtener las filas que cumplen una condición específica

¿Qué sucede cuando se utiliza la opción DISTINCT en una sentencia SELECT?

Se eliminan las filas repetidas en la consulta

¿Qué es lo que se utiliza para definir las condiciones en la cláusula WHERE?

Operadores de comparación

¿Qué es lo que se utiliza para Agrupar filas en una consulta?

La cláusula GROUP BY

¿Qué es lo que se utiliza para Filtrar grupos en una consulta?

La cláusula HAVING

¿Cuál es el propósito del módulo GlobalNamingResources en Tomcat?

Definir recursos JNDI globales a todas las aplicaciones

¿Cuál es la función del atributo name en el módulo Service de Tomcat?

Establecer el comportamiento por defecto del contenedor en modo stand alone

¿Cuál es el propósito del módulo Connector en Tomcat?

Representar el endpoint que reciben las peticiones para pasárselas al engine

¿Qué característica de Java EE no cumple Apache Tomcat?

Soporte para EJBs

¿Cuál es la función del fichero server.xml en Tomcat?

Modificar las clases que utiliza Tomcat por clases propias

¿Qué servidor de aplicaciones se puede utilizar para agregar soporte para EJBs a Apache Tomcat?

WildFly

¿Cuál es el nombre del módulo que representa el contenedor de servlets Catalina al completo en Tomcat?

Server

¿Qué tipo de contenedor incluye Apache Tomcat?

Contenedor de servlets

¿Qué característica de Apache Tomcat permite desplegar aplicaciones web y ejecutarlas?

Servidor web completo

¿Qué opción de configuración de Apache Tomcat permite funcionar como complemento a otros servidores web?

Modo complemento

¿Cuál es el nombre del fichero de configuración global de Tomcat?

server.xml

¿Qué es el Engine en Tomcat?

Un análisis de las cabeceras HTTP para derivar a un host virtual

¿Qué es el directorio common en la estructura de directorios de Tomcat?

Un directorio que contiene clases y librerías compartidas entre Tomcat y las aplicaciones web

¿Cuál es el nombre del fichero que contiene la configuración global para todas las aplicaciones?

web.xml

¿Qué es el directorio webapps en la estructura de directorios de Tomcat?

Un directorio usado como raíz donde se colocan todas las aplicaciones web

¿Cuál es la función principal de un contenedor de servlets en Tomcat?

Manejar las solicitudes HTTP y generar dinámicamente contenido web

¿Qué es lo que Tomcat no incluye, por lo que no se considera un servidor de aplicaciones?

Un contenedor de EJBs

¿Qué opción se tiene disponible para agregar soporte para EJBs en Tomcat?

Utilizar un servidor EJB de código abierto como JBoss/WildFly

¿Cuál es la diferencia principal entre Tomcat y un servidor web como Apache?

El soporte para servlets y JSPs

¿Qué es lo que se puede utilizar para complementar la funcionalidad de Tomcat?

Un servidor web como Apache

¿Cuál es la principal ventaja de utilizar un sistema de control de versiones distribuido en lugar de uno centralizado?

Permite trabajar en paralelo con varias personas en diferentes características

¿Qué sistema de control de versiones se utiliza principalmente en proyectos de gran envergadura?

Perforce

¿Qué es lo que permite a los desarrolladores de software registrar y controlar los cambios en el código fuente de un proyecto de software?

Un sistema de control de versiones

¿Qué sistema de control de versiones es centralizado?

Subversion (SVN)

¿Qué sistema de control de versiones fue creado para el desarrollo del kernel de Linux?

Git

¿Cuál es la principal desventaja de los sistemas de control de versiones centralizados?

El servidor centralizado cae, entonces durante ese tiempo nadie podrá colaborar o guardar cambios en archivos en los que hayan estado trabajando

¿Qué es lo que se lleva en una simple base de datos en los sistemas de control de versiones locales?

El registro de todos los cambios realizados a los archivos

¿Cuál es la principal ventaja de los sistemas de control de versiones centralizados?

El control detallado sobre qué puede hacer cada usuario

¿Qué es lo que los programadores desarrollaron para afrontar el problema de los sistemas de control de versiones locales?

VCS locales que contenían una simple base de datos

¿Qué es lo que hace que los sistemas de control de versiones locales sean muy propensos a errores?

La facilidad de olvidar en qué directorio te encuentras y guardar accidentalmente en el archivo equivocado

¿Cuál es la principal ventaja de utilizar un sistema de control de versiones distribuido sobre uno centralizado?

La mayor flexibilidad en la colaboración entre desarrolladores

¿Qué sucede con los datos en un sistema de control de versiones centralizado si el disco duro se corrompe?

Se pierden todos los datos, excepto las copias instantáneas

¿Cuál es la característica principal de los sistemas de control de versiones distribuidos?

La replicación completa del repositorio en cada cliente

¿Qué tipo de colaboración se utiliza en los sistemas de control de versiones centralizados?

Colaboración centralizada

¿Qué es lo que se puede hacer en un sistema de control de versiones distribuido para restaurar un servidor que ha dejado de funcionar?

Copiar el repositorio desde un cliente

¿Qué sucede cuando se fusionan dos ramas que tienen un ancestro común?

Se realiza una fusión a tres bandas

¿Qué comando se utiliza para borrar una rama que ya no se necesita?

git branch -d

¿Qué pasa con la rama Hotfix después de fusionarla con la rama master?

Se borra la rama Hotfix

¿Qué se llama cuando se fusiona una rama con la rama master y se actualiza la rama master?

Avance rápido

¿Qué sucede cuando se hace git checkout en una rama?

Se cambia a la rama especificada

¿Qué permiso es necesario para poder agregar contenido a un curso?

Rol de administrador del sitio

¿Qué tipo de recursos se pueden agregar a un curso?

Páginas de texto, enlaces a sitios web, visualizar directorio y paquetes de contenido IMS

¿Qué tipo de usuario puede calificar dentro de un curso pero no puede editar contenido?

Profesor no-editor

¿Qué tipo de rol tiene un usuario que ha ingresado al sitio pero solo tiene acceso a la portada?

Rol de usuario autenticado en la portada

¿Qué tipo de actividad se puede agregar a un curso?

Actividades y recursos

¿Qué es lo que deben tener los usuarios antes de poder asignarles un rol de estudiante o profesor dentro de un curso?

Una cuenta en el sitio

¿Qué es lo que pueden hacer los profesores dentro de un curso?

Añadir o cambiar las actividades y calificar a los estudiantes

¿Qué es lo que se puede configurar para determinar qué puede hacer o ver un usuario dentro de un sitio Moodle?

Los permisos de acceso

¿Qué es lo que se puede hacer para permitir que los profesores inscriban a otros profesores?

Configurar la variable 'Profesor asigna profesor'

¿Qué es lo que se puede hacer si se necesita modificar significativamente el rol de profesor?

Crear un nuevo rol

¿Cuál es el propósito principal de las herramientas de seguimiento y evaluación en las plataformas de gestión del aprendizaje?

Evaluar el progreso de los estudiantes y realizar autoevaluación

¿Qué tipo de herramientas permiten al profesor poner a disposición del alumno información en forma de archivos?

Herramientas de gestión de contenidos

¿Quién es el único que puede asignar (o eliminar) otros usuarios para que sean administradores en una plataforma de gestión del aprendizaje?

El administrador principal

¿Qué tipo de herramientas permiten la comunicación y colaboración entre los estudiantes y profesores en una plataforma de gestión del aprendizaje?

Herramientas de comunicación y colaboración

¿Qué tipo de herramientas se utilizan para asignar permisos y controlar el acceso a los recursos en una plataforma de gestión del aprendizaje?

Herramientas de administración y asignación de permisos

¿Quién puede crear un curso en Moodle?

Creador de curso

¿Qué tipo de contenido se puede añadir a un curso en Moodle?

Recursos y actividades

¿Qué rol en Moodle puede calificar dentro de un curso, pero no puede editar el contenido?

Profesor no-editor

¿Qué permite a las personas visitar el sitio Moodle sin tener una cuenta?

Rol de invitado

¿Qué rol en Moodle puede gestionar y añadir contenidos a los cursos?

Profesor

¿Cuál es la principal característica de la medida de disponibilidad en la evaluación de la fiabilidad del software?

La cantidad de tiempo que el software está disponible para su uso

¿Qué es lo que se busca evaluar con la medida de porcentaje de pruebas aprobadas?

La cantidad de pruebas que se han aprobado con éxito

¿Cuál es el enfoque principal del modelo de calidad de McCall?

La perspectiva del usuario del software

¿Qué es lo que se busca evaluar con la capacidad de operación en el modelo de calidad de McCall?

La corrección, fiabilidad, eficiencia, integridad, robustez y facilidad de uso del software

¿Qué es lo que se busca evaluar con la capacidad de integridad en el modelo de calidad de McCall?

La seguridad del software

¿Qué es lo que se busca evaluar con la capacidad de robustez en el modelo de calidad de McCall?

La funcionalidad del software en situaciones excepcionales

¿Qué es lo que se busca evaluar con la capacidad de facilidad de uso en el modelo de calidad de McCall?

La facilidad con la que el usuario puede utilizar el software

¿Qué es lo que se busca evaluar con la capacidad de corrección en el modelo de calidad de McCall?

La capacidad del software de hacer lo que se necesita

¿Qué es lo que se busca evaluar con la capacidad de eficiencia en el modelo de calidad de McCall?

La capacidad del software de aprovechar el hardware lo mejor posible

¿Qué es lo que se busca evaluar con la capacidad de fiabilidad en el modelo de calidad de McCall?

La capacidad del software de hacer lo que se necesita de forma exacta siempre

¿Cuál es la unidad de medida utilizada para calcular la Tasa de Fallas?

Fallas por hora

¿Qué indica un Tiempo Medio Entre Fallas (TMEF) alto?

Que el software es más confiable y tiene menos probabilidades de fallar

¿Qué se refiere a la cantidad de errores o defectos encontrados durante el proceso de pruebas del software?

Tasa de Errores Encontrados

¿Qué es la capacidad del software para funcionar correctamente y sin fallos bajo condiciones específicas durante un período de tiempo determinado?

Fiabilidad

¿Qué se puede utilizar para evaluar la calidad del software?

Todas las opciones anteriores

¿Cuál es el propósito del prototipo en el desarrollo de software?

Obtener retroalimentación temprana y mejorar el diseño del software

¿Qué modelo de desarrollo de software se caracteriza por dividir el desarrollo en pequeñas partes o incrementos?

Modelo de ciclo de vida incremental

¿Qué problema puede surgir al utilizar el modelo de prototipo en el desarrollo de software?

El usuario confunde el prototipo con el producto final

¿Cuál es la ventaja del modelo de prototipo en el desarrollo de software?

Permite una mayor flexibilidad en el cambio de requisitos

¿Qué etapa del desarrollo de software se enfoca en recopilar comentarios y retroalimentación sobre el prototipo?

Evaluación y reescritura de requisitos

¿Cuál de las siguientes etapas del desarrollo de software se encarga de identificar y definir los requisitos del software?

Análisis de requisitos

¿Qué modelo de desarrollo de software se caracteriza por una serie de etapas que se realizan de manera secuencial?

Modelo cascada

¿Qué tipo de mantenimiento se realiza en respuesta a un cambio en las especificaciones de requisitos o en el entorno tecnológico?

Mantenimiento adaptativo

¿Cuál de las siguientes etapas del desarrollo de software se encarga de definir la estructura de datos, la arquitectura del software y la caracterización de la interfaz?

Diseño

¿Qué modelo de desarrollo de software se caracteriza por la creación de un prototipo que se va refinando iterativamente?

Prototipado

¿Cuál de los siguientes modelos de ciclo de vida de software se caracteriza por ser un modelo secuencial lineal que se basa en la premisa de que el desarrollo de software se puede dividir en etapas bien definidas y secuenciales?

Modelo de ciclo de vida clásico

¿Cuál de los siguientes modelos de ciclo de vida de software se caracteriza por la entrega de pequeñas partes del software en cada iteración?

Modelo de desarrollo incremental

¿Cuál de los siguientes pasos es el primer paso del modelo de ciclo de vida clásico?

Análisis del sistema

¿Cuál de los siguientes modelos de ciclo de vida de software se caracteriza por la creación de un prototipo del software que se va a desarrollar?

Modelo de prototipos

¿Cuál de los siguientes modelos de ciclo de vida de software se caracteriza por una serie de fases que se repiten en forma cíclica a lo largo de la vida útil del software?

Modelo espiral

¿Cuál es el objetivo principal de las pruebas de caja negra?

Asegurar que el software cumpla con los requisitos y expectativas del usuario

¿Qué tipo de pruebas se realizan para evaluar el funcionamiento del software en su conjunto?

Pruebas del sistema

¿Cuál es la principal característica de las pruebas de caja blanca?

Se enfoca en la verificación del código fuente del software

¿Qué tipo de pruebas se realizan para evaluar la integridad del software en diferentes etapas de desarrollo?

Pruebas de integración

¿Qué tipo de pruebas se realizan para evaluar si el software cumple con los requisitos y expectativas del usuario?

Pruebas de aceptación

¿Cuál es el objetivo principal de la técnica de pruebas de valores límite?

Identificar los valores límite de una clase de equivalencia.

¿Qué tipo de prueba se utiliza cuando el sistema bajo prueba depende de eventos o valores pasados?

Prueba de transición de estado

¿Qué es lo que se muestra en las filas de una tabla de decisión?

Condiciones y resultados

¿Cuál es la ventaja principal de las pruebas de caja negra?

La prueba es imparcial porque el diseñador y el evaluador son independientes entre sí.

¿Qué tipo de prueba se utiliza para probar el comportamiento del sistema utilizando diferentes combinaciones de entrada?

Tablas de decisión

¿Cuál es el objetivo principal de las pruebas de caja blanca?

Realizar pruebas que cubran la estructura interna de un sistema

¿Qué es una desventaja de las pruebas de caja negra?

No son realistas porque llevan una cantidad de tiempo excesiva

¿Qué criterio de cobertura lógica se considera débil?

Cobertura de sentencias

¿Por qué es impracticable realizar una prueba exhaustiva de todos los caminos de un programa?

Porque llevaría una cantidad de tiempo excesiva

¿Qué es el objetivo principal de las pruebas de caja blanca?

Realizar pruebas que cubran la estructura interna del sistema

¿Cuál es el tipo de polimorfismo que se determina en tiempo de ejecución?

Polimorfismo universal

¿Qué tipo de polimorfismo permite definir varias funciones con el mismo nombre pero con parámetros diferentes?

Polimorfismo paramétrico

¿Cuál es el tipo de polimorfismo que se resuelve en tiempo de compilación?

Polimorfismo ad-hoc

¿Qué ocurre cuando una subclase modifica los métodos heredados de una superclase?

Sobrescritura de métodos

¿Qué tipo de herencia permite que una clase herede de varias clases?

Herencia múltiple

¿Qué es el resultado de definir varios métodos con el mismo nombre pero con parámetros diferentes?

Sobrecarga de métodos

¿Qué es un objeto en programación orientada a objetos?

Una instancia de una clase que contiene datos y funciones.

¿Qué es una clase en programación orientada a objetos?

La descripción de un conjunto de objetos que comparten atributos, comportamiento, relaciones y semántica.

¿Qué es el operador "new" en programación orientada a objetos?

Un operador que se utiliza para crear un objeto a partir de una clase.

¿Qué es un atributo en programación orientada a objetos?

Un lugar donde se almacena el estado de un objeto.

¿Qué es un método en programación orientada a objetos?

Un comportamiento que se utiliza para interactuar con objetos.

¿Qué es un constructor en programación orientada a objetos?

Un tipo especial de método que se utiliza para crear instancias de una clase.

¿Qué es la abstracción en programación orientada a objetos?

La capacidad de mostrar solo la información necesaria y esconder el resto.

¿Qué es el encapsulamiento en programación orientada a objetos?

La capacidad de combinar atributos y métodos en una unidad.

¿Cuál es el término utilizado para describir la habilidad de redefinir un método que se hereda de una clase base?

Polimorfismo de inclusión

¿Qué tipo de polimorfismo ocurre cuando existen métodos con el mismo nombre, con funcionalidad similar, en clases que son completamente independientes una de otra?

Polimorfismo de sobrecarga

¿Qué es el polimorfismo que se refiere a la conversión de un parámetro de un método al tipo de dato esperado?

Polimorfismo de coerción

¿Qué es la característica que permite llamar a un método del objeto sin tener que conocer su tipo intrínseco?

Especialización

¿Qué es el lenguaje de modelado visual utilizado para describir sistemas y procesos complejos en la programación orientada a objetos?

UML

¿Qué es el término utilizado para describir la habilidad de un método de aceptar argumentos de diferentes tipos?

Polimorfismo ad-hoc

¿Cuál es el tipo de vulnerabilidad que surge cuando los ataques se producen antes de que el fabricante del software conozca la brecha de seguridad?

Vulnerabilidad de día cero

¿Qué técnica de ingeniería social se utiliza para engañar a los usuarios y obtener información confidencial?

Phishing

¿Cuál es el mayor riesgo para la seguridad de una empresa en cuanto a las vulnerabilidades humanas?

Todas las anteriores

¿Qué es lo que los ciberdelincuentes buscan obtener a través de ataques de phishing?

Información confidencial como contraseñas y números de tarjetas de crédito

¿Cuál es una buena práctica de ciberseguridad para reducir el riesgo de vulnerabilidades humanas?

Capacitar a los empleados en ciberseguridad

¿Qué tipo de vulnerabilidad se produce cuando los usuarios usan contraseñas débiles o los administradores de TI no implementan sistemas de autenticación más eficientes?

Vulnerabilidad de procesos

¿Cuál es el principal motivador para los atacantes de ransomware?

El pago de rescates que pueden ser rentable y fácil de conseguir

¿Cuál es la característica principal de una vulnerabilidad de red?

Se ubica en la infraestructura del hardware o en el software

¿Qué tipo de vulnerabilidad se explotó en el ataque WannaCry?

Vulnerabilidad en el sistema operativo Windows

¿Qué es un tipo de vulnerabilidad que se refiere a un fallo en un sistema que no ha sido descubierto aún?

Vulnerabilidad zero-day

¿Qué técnica de ataque se utiliza para insertar código malicioso en una aplicación?

Inyección de código malicioso

¿Qué es un tipo de ataque cibernético que se utiliza para obtener información confidencial de una persona?

Phishing

¿Qué tipo de inyección de código permite a un atacante inyectar y ejecutar comandos directamente en el sistema operativo?

Inyección de comandos del sistema operativo

¿Qué es una técnica de ataque cibernético que se utiliza para engañar a las personas para que divulguen información confidencial?

Social engineering

¿Qué tipo de ataques se aprovechan de vulnerabilidades en el sistema operativo?

Ataques que aprovechan vulnerabilidades en el sistema operativo

¿Qué es una práctica recomendada para prevenir ataques cibernéticos?

Utilizar autenticación de dos factores

¿Qué es lo que se puede utilizar como forma de presión para forzar el pago del rescate en un ataque de ransomware?

La amenaza del cifrado permanente

¿Qué tipo de dispositivos pueden ser infectados y conectarse a los equipos corporativos?

Dispositivos externos

¿Qué es un tipo de vulnerabilidad que se refiere a una debilidad o defecto en la tecnología o en los procesos relacionados con la información?

Vulnerabilidad informática

¿Qué es lo que puede hacer que un ataque de ransomware sea especialmente grave?

La dependencia de los sistemas informáticos en instituciones críticas

Study Notes

Protocolos de Red

  • El protocolo RARP (Reverse Address Resolution Protocol) obtiene direcciones IP desde las direcciones físicas.
  • El protocolo NDP (Neighbor Discovery Protocol) es equivalente al protocolo ARP en IPv4, pero también incorpora funcionalidades de ICMP.
  • El protocolo ICMP (Internet Control Message Protocol) se utiliza para comprobar el estado de la red, detecta y registra las condiciones de error en la misma.

Capa de Transporte

  • El protocolo TCP (Transmission Control Protocol) es un protocolo orientado a conexión y fiable, se encarga de que los segmentos lleguen correctamente a destino.
  • El protocolo SCTP (Stream Control Transmission Protocol) es un protocolo de capa de transporte fiable orientado a la conexión que ofrece los mismos servicios a las aplicaciones que TCP.
  • El protocolo UDP (User Datagram Protocol) proporciona un servicio de entrega de datagramas y no verifica las conexiones entre los hosts transmisores y receptores.

Niveles de la Arquitectura TCP/IP

  • La capa de Acceso a la Red se encarga de la transmisión de datos entre dispositivos en la misma red local y es dependiente de características físicas de la red.
  • La capa de Internet se encarga de la transmisión de datos entre redes diferentes y la segmentación de paquetes.
  • La capa de Transporte se encarga de la comunicación extremo a extremo entre aplicaciones que se ejecutan en diferentes dispositivos.
  • La capa de Aplicación se encarga de las aplicaciones y servicios de red que se ejecutan en los dispositivos finales.

Protocolos de la Capa de Internet

  • El protocolo IP (Internet Protocol) proporciona un servicio de distribución de paquetes de información orientado a no conexión de manera no fiable.
  • El protocolo ARP (Address Resolution Protocol) se encarga de obtener la dirección física o MAC de otro dispositivo dentro de la misma red a través de su dirección IP.

PDU (Unidades de Información)

  • En la capa de Acceso a la Red, la PDU es el marco (frame).
  • En la capa de Internet, la PDU es el paquete (packet).
  • En la capa de Transporte, la PDU es el segmento (segment).
  • En la capa de Aplicación, la PDU es el mensaje.

Modelo Cliente-Servidor

  • El DNS se basa en un modelo cliente-servidor, donde el cliente envía una solicitud de resolución de nombre de dominio al servidor DNS y el servidor responde con la dirección IP correspondiente.

Recursos

  • Los recursos son elementos, servicios o grupos dentro de un dominio.
  • Cada recurso tiene un nombre de longitud variable y se identifica por una letra (A, NS, MX, CNAME, etc.).
  • Un host común con un nombre y una dirección IP es considerado un recurso de clase 'A'.
  • Ejemplo: 'www.uva.es' es un recurso clase 'A' llamado 'www' que se encuentra en el dominio 'uva.es'.

Tipos de Registros

  • A: dirección de dispositivo final, con nombre del equipo y dirección IP.
  • NS: nombre del servidor autoritativo para un dominio.
  • CNAME: nombre canónico para un alias, con alias y nombre canónico real.
  • MX: registro de intercambio de correos, que asigna un nombre de dominio a una lista de servidores de intercambio de correo.

Servidores DNS

  • Existen tres tipos de servidores DNS: raíz, TLD y autoritativos.
  • Servidores raíz: encuentran en la parte superior de la jerarquía de administración de DNS y responden a consultas de cualquier registro almacenado en la zona raíz o en la caché de esta.
  • Servidores TLD: se encuentran un nivel por debajo de los servidores raíz y mantienen la información de todos los nombres de dominio que comparten una extensión común (.com, .net, .org, etc.).
  • Servidores autoritativos: se encuentran en la parte inferior de la jerarquía de DNS y proporcionan la dirección IP del nombre de dominio buscado.

Consultas DNS

  • Consulta iterativa: los servidores DNS devuelven el nombre de otro servidor DNS al que preguntar.
  • Consulta recursiva: el servidor DNS es el encargado de resolver el nombre.

Formato de los Mensajes

  • El protocolo DNS establece las normas y reglas para el formato de los mensajes.
  • El formato de un mensaje DNS consta de un encabezado, pregunta, respuesta, autoridad y adicional.
  • El encabezado contiene un identificador que relaciona las preguntas con las respuestas y indicadores para distinguir condiciones del mensaje.
  • La pregunta incluye la consulta a realizar, indicando el tipo de registro solicitado y su nombre.
  • La respuesta del servidor DNS incluye el registro completo solicitado.
  • La autoridad proporciona los nombres de los servidores autoritativos del dominio.
  • La sección adicional proporciona información adicional, como direcciones IP de los servidores anteriores.

Protocolo SMTP

  • El cliente envía un mensaje de saludo (HELO) al servidor SMTP.
  • El servidor responde con un mensaje de saludo.
  • El cliente envía el comando MAIL FROM con la dirección de correo electrónico del emisor.
  • El servidor responde con "250 OK" si el origen es válido.
  • El cliente envía el comando RCPT TO para indicar los destinatarios del correo electrónico.
  • El servidor responde con "250 OK" o "550 No such user here" según el destinatario.
  • El cliente envía el comando DATA para indicar el comienzo del mensaje.
  • El servidor contesta con el inicio de la recepción y especifica que el texto del correo electrónico debe cerrarse con un punto.
  • El mensaje de correo electrónico se compone de dos partes: cabecera y cuerpo del mensaje.
  • La cabecera incluye palabras clave para definir los campos del mensaje, como subject, from y to.
  • El cuerpo del mensaje es el mensaje propiamente dicho, compuesto únicamente por texto y finalizado con una línea en la que el único carácter es un punto.

DNS

  • DNS es un protocolo utilizado para resolver nombres de dominio en direcciones IP y viceversa.
  • SET: Utilizado por los administradores para modificar o asignar el valor del dispositivo administrado.
  • TRAP: Señal enviada al administrador por el agente cuando se producen eventos.
  • INFORM: Similar a TRAP, pero incluye una confirmación del administrador una vez que recibe el mensaje.
  • RESPONSE: Se utiliza para devolver los valores o la señal de las acciones dirigidas por el gerente.

SNMP

  • SNMP es un protocolo utilizado para administrar dispositivos en redes.
  • Existen tres versiones de SNMP: SNMPv1, SNMPv2c y SNMPv3.
  • SET: Utilizado por los administradores para modificar o asignar el valor del dispositivo administrado.
  • TRAP: Señal enviada al administrador por el agente cuando se producen eventos.
  • INFORM: Similar a TRAP, pero incluye una confirmación del administrador una vez que recibe el mensaje.
  • RESPONSE: Se utiliza para devolver los valores o la señal de las acciones dirigidas por el gerente.

Protocolo HTTP

  • HTTP es un protocolo sin estado basado en peticiones y respuestas.
  • El cliente envía una petición a un servidor y este responde con una respuesta.
  • Cada par petición-respuesta, el servidor cierra inmediatamente la conexión.
  • Utiliza TCP como protocolo de transporte.
  • La identificación de recursos siempre se hace por medio de URI.
  • El formato de un mensaje HTTP se compone de tres partes: línea inicial de petición, línea/s de cabecera y cuerpo del mensaje.
  • La línea inicial de petición incluye el método utilizado, la parte relativa al servidor de la URL o la URL completa y la versión del protocolo utilizada.
  • Las cabeceras determinan cómo será procesada la petición por parte del servidor.

Topologías de Red

  • En una topología de bus, todos los dispositivos están conectados a un cable común llamado bus.
  • Ventajas: facilidad de implementación y crecimiento, simplicidad en la arquitectura, coste reducido.
  • Desventajas: altas pérdidas en la transmisión debido a colisiones entre mensajes, un problema en el canal usualmente degrada toda la red, límite de equipos a medida que la red crece, puede producirse degradación de la señal, complejidad de reconfiguración y aislamiento de fallos.

Topología de Anillo

  • En una topología de anillo, cada dispositivo está conectado a otro dispositivo en un círculo cerrado.
  • Ventajas: red muy ordenada donde cada dispositivo tiene acceso al token y la oportunidad de transmitir, no se producen embotellamientos en la red, arquitectura sencilla.
  • Desventajas: retraso en la comunicación dependerá de la cantidad de estaciones por la que tenga que pasar la información, si falla el canal, falla toda la red, una estación de trabajo defectuosa puede crear problemas para toda la red, modificar agregando, quitando o sustituyendo dispositivos afectará a toda la red.

Topología de Estrella

  • En una topología de estrella, las estaciones están conectadas directamente a un punto central y todas las comunicaciones se hacen necesariamente a través de ese punto.
  • Ventajas: posee un sistema que permite agregar nuevos equipos fácilmente, reconfiguración rápida.

Topología en Árbol

  • Es una combinación de topologías en bus y en estrella.
  • Ventajas: fácil de escalar para crecer, si un nodo falla el resto no se ven afectados, si lo hace el hub o switch se verán afectados los elementos de ese segmento, es confiable y segura, facilidad de mantenimiento y de resolución de problemas.
  • Desventajas: como los datos deben viajar desde el cable central, esto crea un tráfico de red denso, difícil de configurar, la medida de cada segmento viene determinada por el tipo de cable utilizado, si se cae el segmento principal todo el segmento también cae, si se llegara a desconectar un nodo, todos los que están conectados a él se desconectan también.

Redes de Ordenadores

  • Las redes de ordenadores son un conjunto de dispositivos electrónicos que se conectan entre sí para intercambiar datos y recursos.
  • Un host es cualquier dispositivo conectado a una red de ordenadores que tiene una dirección IP única y puede enviar o recibir datos a través de la red.

Subredes

  • Ventajas de utilizar subredes: aumenta las opciones de seguridad, simplifica la administración, controla el crecimiento.

Arquitectura TCP/IP

  • La arquitectura TCP/IP es el conjunto de protocolos de comunicación que se utilizan en Internet.
  • El direccionamiento en la arquitectura TCP/IP se realiza mediante las direcciones IP.
  • Destacan dos versiones del protocolo IP: IPv4 y la versión IPv6.
  • En IPv4 una dirección IP está formado por 32 bits dividido en 4 octetos.

Certificados y Autoridades de Certificación

  • Un certificado contiene la parte pública y la parte privada de un certificado.
  • Las Autoridades de Certificación (CA) permiten confiar en el certificado de un usuario sin relación previa, mediante la confianza en terceras partes.

Funciones de las Autoridades de Certificación

  • Emisión de nuevos certificados de clave pública, garantizando la integridad y autenticidad del certificado con la firma digital de la CA.
  • Revocación de certificados, cancelación de un certificado previamente emitido.
  • Publicación de la clave pública de los usuarios.
  • Recuperación de claves, posibilitación de recuperar las claves de un usuario.
  • Evaluación de la confianza, determinación sobre si un certificado es válido y qué operaciones están permitidas para dicho certificado.

Jerarquía de Autoridades de Certificación

  • CA raíz: Autoridad de certificación de primer nivel que emite certificados para sí misma y sus CA Subordinadas.
  • CA Subordinadas: Autoridades de Certificación subordinadas de "AC Raíz" que emiten certificados para los titulares de un tipo de certificado.

Listas de Revocación de Certificados

  • Las CA mantienen listas de revocación de certificados (CRL) con un período máximo de validez entre 3 y 5 años.
  • El objetivo de este período de caducidad es obligar a la renovación del certificado para adaptarlo a los cambios tecnológicos.

Ventajas y Desventajas de las CRL

  • Desventajas: peligro de que un certificado haya sido revocado pero no aparezca en la CRL, responsabilidad legal por el uso de un certificado revocado, y crecimiento en tamaño de las CRL.

Protocolo Online Certificate Status Protocol (OCSP)

  • Define un método para determinar el estado de revocación de un certificado digital X.509 sin utilizar CRL.

Autoridades de Registro (RA)

  • Entidades responsables de verificar la identidad del solicitante antes de emitir un certificado digital y de proporcionar asistencia en la solicitud y emisión de certificados.
  • La función principal de una RA es validar la identidad del solicitante antes de emitir un certificado.

Tipos de Certificados

  • Certificados de Clase 2: verifican documento de identidad o permiso de conducir, número de la Seguridad Social y fecha de nacimiento.
  • Certificados de Clase 3: verifican crédito de la persona o empresa mediante un servicio del tipo Equifax, Datacredito.
  • Certificados de Clase 4: verifican cargo o posición de una persona dentro de una organización.

Uso de Certificados

  • Certificados SSL para cliente: mediante el protocolo Secure Socket Layer, dirigido a una persona física.
  • Certificados SSL para servidor: usados para identificar a un servidor ante un cliente en comunicaciones mediante SSL.
  • Certificados S/MIME: usados para servicios de correo electrónico firmado y cifrado, que se expiden generalmente a una persona física.
  • Certificados para la firma de código: usados para identificar al autor de ficheros o porciones de código en cualquier lenguaje de programación que se deba ejecutar en red.
  • Certificados para AC (Autoridades Certificadoras): se usa por el software cliente para determinar si pueden confiar en un certificado cualquiera.

Formatos de los Certificados

  • Formato PEM: la mayoría de las CA proporcionan certificados en formato PEM en archivos codificados ASCII Base64.

Certificados Digitales

  • Existen diferentes tipos de certificados digitales, clasificados en 4 clases:
    • Clase 2: Verifica la identidad del titular mediante el documento de identidad o permiso de conducir.
    • Clase 3: Verifica la identidad y el crédito del titular.
    • Clase 4: Verifica la identidad, el crédito y la posición del titular en una organización.

Certificados SSL/TLS

  • Certificados SSL/TLS utilizados para:
    • Autenticación: Verificar la identidad del titular.
    • Integridad: Garantizar que el mensaje no se modifique.
    • No repudio: Evitar que el emisor niegue haber enviado el mensaje.

Formatos de Certificados

  • Formato PEM: La mayoría de las Autoridades de Certificación (CA) emiten certificados en formato PEM en archivos codificados ASCII Base64.

Certificados X.509

  • Un certificado digital es un documento que garantiza la vinculación entre la identidad de un usuario y su par de claves.
  • Los certificados X.509 contienen la clave pública del firmante y no la clave privada.
  • El estándar X.509 especifica formatos estándar para certificados de clave pública y listas de revocación de certificados.

Autoridades de Certificación (CA)

  • Las Autoridades de Certificación (CA) emiten y verifican certificados digitales.
  • Los servicios ofrecidos por las CA incluyen:
    • Emisión de nuevos certificados de clave pública.
    • Revocación de certificados.
    • Publicación de la clave pública de los usuarios.
    • Recuperación de claves.
    • Evaluación de la confianza.

Jerarquía de CA

  • Existe una jerarquía de CA, incluyendo:
    • CA Raíz: Autoridad de certificación de primer nivel.
    • CA Subordinadas: Autoridades de Certificación subordinadas de la CA Raíz.

Listas de Revocación de Certificados

  • Las listas de revocación de certificados son mantenidas por las Autoridades de Certificación.
  • El objetivo de este periodo de caducidad es obligar a la renovación del certificado para adaptarlo a los cambios tecnológicos.

Operaciones en Unix/Linux

  • Se pueden realizar operaciones aritméticas utilizando variables numéricas dentro de $(( )).
  • Se pueden realizar operaciones de cadenas de texto utilizando variables de texto, como concatenación, longitud de la cadena y extracción de una subcadena.
  • Operaciones lógicas se utilizan para determinar si algo es verdadero o falso para la toma de decisiones, utilizando la orden test y operadores como -eq, -ne, -ge, -gt, -le, -lt, ==, !=, y ..

Variables en Unix/Linux

  • Las variables se utilizan para almacenar datos en la memoria y acceder a ellos cuando sea necesario.
  • Las variables pueden tener prácticamente cualquier nombre, pero con restricciones:
    • Sólo puede contener caracteres alfanuméricos y guiones bajos.
    • El primer carácter debe ser una letra del alfabeto o "_".
    • No pueden contener espacios.
    • Las mayúsculas y las minúsculas importan.
  • Asignación de variables: se utiliza el signo = para asignar el valor a una variable.
  • Recuperación de variables: se utiliza el símbolo de dólar $ antes del nombre de la variable.

Variables de entorno globales

  • PATH: se utiliza para especificar la ubicación de los comandos ejecutables en el sistema.
  • HOME: se utiliza para especificar el directorio de inicio del usuario actual.
  • USER: se utiliza para mostrar el nombre de usuario actual.

Comandos para encontrar información de usuarios

  • id: muestra el ID de usuario y los grupos a los que pertenece.
  • who: muestra quién está actualmente conectado al sistema, incluyendo su nombre de usuario, terminal de conexión y hora de inicio.
  • w: muestra quién está conectado actualmente al sistema, incluyendo información sobre qué están haciendo.
  • finger: muestra información detallada sobre un usuario específico, como su nombre completo, la última vez que inició sesión y la ubicación de su directorio de inicio.

Creación y edición de ficheros

  • Crear un fichero vacío: se utiliza el comando touch.
  • Crear un fichero con contenido: se puede utilizar el comando echo o cat.
  • Editar un fichero: se pueden utilizar editores de texto como Vi o Vim, o GNU Nano.
  • En Vi o Vim, se pueden utilizar modos como comando y edición, y se pueden cambiar entre ellos utilizando teclas como ESC y i.

Redirección de Errores

  • El comando 2> fichero redirige la salida de error a un fichero.
  • El comando 2>&1 redirige la salida de error a la salida estándar.
  • El comando &> fichero redirige tanto la salida estándar como los mensajes de error a un archivo.

Funciones en Unix/Linux

  • Las funciones son bloques de código reutilizables para realizar tareas específicas en un script de shell.
  • La sintaxis para definir una función es: funcion1() { comandos }.
  • Las funciones pueden recibir parámetros pasados por posición, utilizando $1, $2, ..., $* para la lista completa.

Paso de Parámetros

  • La función referencia los parámetros pasados por posición, es decir, $1, $2, ..., $* para la lista completa.
  • Un ejemplo de función que recibe parámetros es: funcion1() { echo "Parámetros pasados a la función: $*" }.

Combinar Comandos y Redirigir Salidas

  • Se puede combinar varios comandos y redirigir sus salidas para realizar tareas más complejas.
  • El símbolo | (pipe) se utiliza para combinar comandos, pasando la salida de unos como entrada para los siguientes.
  • Un ejemplo de combinación de comandos es: ls -l | grep ".txt" | sort > lista_ficheros_ordenada.txt.

Bucles y Ejecución Condicionada de Comandos

  • Existen tres tipos de bucles en Unix/Linux: while, until, y for.
  • El bucle while se ejecuta mientras se cumpla una condición.
  • El bucle until se ejecuta hasta que se cumpla la condición.
  • El bucle for permite iterar sobre una serie de elementos de una cadena, lista, rango, etc.
  • La ejecución condicionada de comandos se puede lograr utilizando la sentencia if.

Sintaxis de la Shell de Unix/Linux

  • La Shell de Unix/Linux es una interfaz de línea de comandos (CLI) que permite a los usuarios interactuar con el sistema operativo.
  • La sintaxis general de un comando de la Shell es: comando [opciones] [argumentos].
  • La Shell proporciona una serie de comandos integrados y herramientas para trabajar con archivos y directorios, manipular texto, administrar procesos y servicios, entre otras tareas.

Comandos en Unix/Linux

  • El comando ls lista los archivos en el directorio actual.
  • El comando ls -l lista los archivos con detalles.
  • El comando ls /home/usuario/documentos lista los archivos de un directorio específico.

Variables y Operaciones

  • Las variables se utilizan para almacenar datos en la memoria y acceder a ellos cuando sea necesario.
  • Las variables pueden tomar cualquier nombre, pero con algunas restricciones:
    • Sólo pueden contener caracteres alfanuméricos y guiones bajos.
    • El primer carácter debe ser una letra del alfabeto o _.
    • No pueden contener espacios.
    • Las mayúsculas y las minúsculas importan.
  • Asignación de variables: se utiliza el signo = para asignar un valor a una variable.
  • Recuperación de variables: se utiliza el símbolo $ antes del nombre de la variable.
  • Variables de entorno globales:
    • PATH: especifica la ubicación de los comandos ejecutables en el sistema.
    • HOME: especifica el directorio de inicio del usuario actual.
    • USER: muestra el nombre de usuario actual.
    • PS1: especifica el formato del prompt de la terminal.
    • PWD: directorio actual.

Operaciones

  • Operaciones aritméticas: se pueden realizar utilizando variables numéricas dentro de $( ).
  • Operaciones de cadenas de texto:
    • Concatenación: nombre_completo="$nombre $apellido".
    • Longitud de la cadena: longitud=${#nombre}.
    • Extracción de una subcadena: subcadena=${<a>nombre:0:3</a>}.
  • Operaciones lógicas:
    • Se utiliza el comando test para determinar si algo es verdadero o falso.
    • Se pueden utilizar operadores como -eq, -ne, -ge, -gt, -le, -lt para comparar números.
    • Se pueden utilizar operadores como ==, !=, -n para comparar cadenas de caracteres.
    • Se pueden combinar varias condiciones utilizando los comandos booleanos &amp;&amp;, ||, !.

Comandos Básicos en Unix/Linux

  • id: muestra el ID de usuario y los grupos a los que pertenece.

Combinar Comandos y Redirigir Salidas

  • Se puede utilizar el símbolo | (pipe) para combinar varios comandos y redirigir sus salidas.
  • Ejemplo: ls -l | grep ".txt" | sort &gt; lista_ficheros_ordenada.txt.

Bucles y Ejecución Condicionada de Comandos

  • while: el bucle se ejecutará mientras se cumpla una condición.
  • until: el bucle se ejecutará hasta que se cumpla la condición.
  • for: permite iterar sobre una serie de elementos de una cadena, lista, rango, etc.
  • Ejemplo: for i in {1..1000}; do echo $i; done.
  • Ejemplo: for i in $(ls); do echo $i; done.
  • if: ejecuta un conjunto de comandos si una determinada condición es verdadera.
  • Ejemplo: if [ $nombre = "Juan" ]; then echo "Hola, Juan!"; else echo "Hola, mundo!"; fi.

Herencia de Clase Objeto

  • La herencia de clase objeto depende de la secuencia de definiciones de clase objeto que la preceden.
  • Las unidades organizativas son tipos de objetos especiales que no tienen más característica que ser un nodo que divide las ramas del árbol.

Entradas y Atributos

  • Una entrada se compone de un conjunto de atributos, cada uno de ellos tiene un tipo y uno o varios valores (univaluado o multievaluado).
  • El tipo define la clase de información que va a almacenar y los valores son la información en sí.
  • Cada entrada tiene un atributo especial llamado RDN (Relative Distinguished Name) que la distingue en la jerarquía.
  • El DN (Distinguished Name) se utiliza para identificar a la entrada dentro del árbol, está constituido por todos los RDN separados por comas desde la entrada hasta la raíz del árbol.

Esquemas

  • Un esquema es un conjunto de reglas que controla la forma en que se pueden almacenar los datos en el directorio.
  • El esquema define el tipo de entradas permitidas (objectClass disponibles), su estructura de atributos y la sintaxis de los atributos.

Modelo de Información

  • La unidad básica de información almacenada en el directorio es la entrada (entry).
  • Generalmente una entrada representa un objeto del mundo real (una persona, un servidor, etc), pero el modelo no exige este aspecto.

Clases de Objetos

  • Una clase de objeto puede ser de tres tipos: Estructural, Abstracto y Auxiliar.
  • Estructural: cada entrada debe pertenecer a una única clase estructural, que define el contenido base de la entrada.
  • Abstracto: se utiliza como superclase o plantilla para otras clases objeto.
  • Auxiliar: indica atributos adicionales que se pueden asociar con una clase de objeto estructural.

Modelo de Nombrado

  • El modelo de nombrado de LDAP define como se organizan y se referencian los datos, es decir, define los tipos de estructuras que se pueden definir utilizando las entradas.
  • Las entradas son organizadas dentro del DIT en base a su Distinguished Name (DN).
  • El DN es un nombre único que identifica de forma unívoca a una entrada.

Modelo de Directorio LDAP

  • La unidad básica de información almacenada en el directorio es la entrada (entry), que puede representar un objeto del mundo real, como una persona o un servidor.
  • Cada entrada precisa de un atributo ObjectClass, que define el contenido base de la entrada y sus atributos obligatorios y opcionales.

Tipos de Clases de Objetos (ObjectClass)

  • Estructural: define el contenido base de la entrada y sus atributos obligatorios y opcionales.
  • Abstracto: se utiliza como superclase o plantilla para otras clases objeto, define un conjunto de atributos comunes a un conjunto de clases de objetos estructurales o auxiliares.
  • Auxiliar: indica atributos adicionales que se pueden asociar con una clase de objeto estructural.

Estructura del Directorio

  • La información se almacena de forma jerárquica, formando el árbol de directorio.
  • Cada entrada se compone de un conjunto de atributos, cada uno con un tipo y uno o varios valores.
  • Existe un atributo especial en cada entrada, el RDN (Relative Distinguished Name), que la distingue en la jerarquía.
  • El DN (Distinguished Name) se utiliza para identificar una entrada en el árbol, está formado por la concatenación de todos los RDN separados por comas desde la entrada hasta la raíz del árbol.

Esquema del Directorio

  • Un esquema es un conjunto de reglas que controla la forma en que se pueden almacenar los datos en el directorio.
  • Define el tipo de entradas permitidas, su estructura de atributos y la sintaxis de los atributos.
  • El esquema valida las operaciones de consulta, inserción o modificación sobre las entradas y los atributos.

Modelo de Nombrado

  • El modelo de nombrado define como se organizan y se referencian los datos en el directorio.
  • Las entradas se organizan dentro del DIT (Directorio de Información del Terminal) en base a su DN.
  • El DN es un nombre único que identifica de forma unívoca a una entrada.

Ejemplos de Uso de LDAP

  • Se puede buscar información en un servidor LDAP a través de una URL, utilizando la sintaxis ldap://host:puerto/DN?atributos?alcance?filtro?extensiones.
  • Se pueden realizar operaciones de búsqueda, modificación y borrado de entradas en el directorio utilizando bibliotecas o módulos de programación, como JNDI (Java Naming and Directory Interface) o JLDAP (Java LDAP).

Introducción a HTML

  • HTML es el lenguaje de marcado estándar para definir la estructura y organización del contenido en una página web.
  • Los elementos en HTML se identifican mediante etiquetas que proporcionan información general sobre el contenido.

Etiquetas en HTML

  • Las etiquetas se utilizan para definir diferentes elementos en una página web.
  • Los elementos proporcionan estructura al documento mediante las etiquetas de comienzo y terminación.
  • Los elementos pueden ser vacíos (sin contenido) o con contenido.
  • Existen tres elementos especiales y obligatorios en todo documento HTML: , y ``.

Atributos en HTML

  • Los atributos proporcionan información adicional sobre el contenido del elemento.
  • Los atributos se agregan a la etiqueta utilizando la sintaxis "atributo=valor".

Formularios en HTML

  • Los formularios se utilizan para enviar información a un servidor web.
  • Los formularios se crean utilizando la etiqueta `` y pueden contener diferentes tipos de campos.
  • Los atributos importantes de los formularios son id, action, method, etc.

Enlaces en HTML

  • Los enlaces se utilizan para conectar o referenciar diferentes páginas web y recursos.
  • Los enlaces se crean utilizando la etiqueta <a> y se definen con el atributo href.

Tablas en HTML

  • Las tablas se utilizan para organizar la información en filas y columnas.
  • Las tablas se crean utilizando la etiqueta </a> y se dividen en filas y columnas utilizando las etiquetas y.

Párrafos en HTML

  • Los párrafos se utilizan para dividir el contenido de la página en secciones legibles.
  • Los párrafos se crean utilizando la etiqueta <p> y se pueden formatear utilizando atributos.

Listas en HTML

  • Las listas se utilizan para organizar la información en una lista.
  • Las listas se crean utilizando la etiqueta </p><ul><li> o </li></ul><ol><li> y se definen con los atributos type y value.

Iframes en HTML

  • Los iframes se utilizan para incrustar contenido de otra página web dentro de una página web.
  • Los iframes se crean utilizando la etiqueta `` y se definen con el atributo src.

Capas en HTML

  • Las capas se utilizan para organizar el contenido en capas superpuestas.
  • Las capas se crean utilizando la etiqueta </li></ol><div> y se definen con atributos de estilo.

XHTML

  • XHTML es una versión más estricta y modular de HTML que sigue las reglas del lenguaje de marcado XML.
  • XHTML es una evolución de HTML que ofrece una sintaxis más limpia y clara.
  • Las restricciones básicas de XHTML son:
    • Las etiquetas se deben cerrar de acuerdo con cómo se abren.
    • Los nombres de las etiquetas y atributos siempre se escriben en minúsculas.
    • El valor de los atributos siempre se encierra con comillas.
    • Los atributos no se pueden comprimir.
    • Todas las etiquetas deben cerrarse siempre.
    • El elemento raíz del documento debe contener una declaración xmlns para el espacio de nombres de XHTML.

CSS

  • CSS es un lenguaje de estilos en cascada que se utiliza para definir la presentación de los elementos en una página web.
  • Las propiedades en CSS son los atributos específicos que se aplican a los elementos.
  • Las pseudo-clases en CSS son palabras clave que se añaden a los selectores y que especifican un estado especial del elemento seleccionado.
  • Las formas de dar estilo a un documento son:
    • Utilizando una hoja de estilo externa.
    • Utilizando el elemento `

Introducción a HTML

  • HTML es el lenguaje de marcado estándar para definir la estructura y organización del contenido en una página web.
  • Los elementos en HTML se identifican mediante etiquetas que proporcionan información general sobre el contenido.

Etiquetas en HTML

  • Las etiquetas se utilizan para definir diferentes elementos en una página web.
  • Los elementos proporcionan estructura al documento mediante las etiquetas de comienzo y terminación.
  • Los elementos pueden ser vacíos (sin contenido) o con contenido.
  • Existen tres elementos especiales y obligatorios en todo documento HTML: , y ``.

Atributos en HTML

  • Los atributos proporcionan información adicional sobre el contenido del elemento.
  • Los atributos se agregan a la etiqueta utilizando la sintaxis "atributo=valor".

Formularios en HTML

  • Los formularios se utilizan para enviar información a un servidor web.
  • Los formularios se crean utilizando la etiqueta `` y pueden contener diferentes tipos de campos.
  • Los atributos importantes de los formularios son id, action, method, etc.

Enlaces en HTML

  • Los enlaces se utilizan para conectar o referenciar diferentes páginas web y recursos.
  • Los enlaces se crean utilizando la etiqueta <a> y se definen con el atributo href.

Tablas en HTML

  • Las tablas se utilizan para organizar la información en filas y columnas.
  • Las tablas se crean utilizando la etiqueta </a> y se dividen en filas y columnas utilizando las etiquetas y.

Párrafos en HTML

  • Los párrafos se utilizan para dividir el contenido de la página en secciones legibles.
  • Los párrafos se crean utilizando la etiqueta <p> y se pueden formatear utilizando atributos.

Listas en HTML

  • Las listas se utilizan para organizar la información en una lista.
  • Las listas se crean utilizando la etiqueta </p><ul><li> o </li></ul><ol><li> y se definen con los atributos type y value.

Iframes en HTML

  • Los iframes se utilizan para incrustar contenido de otra página web dentro de una página web.
  • Los iframes se crean utilizando la etiqueta `` y se definen con el atributo src.

Capas en HTML

  • Las capas se utilizan para organizar el contenido en capas superpuestas.
  • Las capas se crean utilizando la etiqueta </li></ol><div> y se definen con atributos de estilo.

XHTML

  • XHTML es una versión más estricta y modular de HTML que sigue las reglas del lenguaje de marcado XML.
  • XHTML es una evolución de HTML que ofrece una sintaxis más limpia y clara.
  • Las restricciones básicas de XHTML son:
    • Las etiquetas se deben cerrar de acuerdo con cómo se abren.
    • Los nombres de las etiquetas y atributos siempre se escriben en minúsculas.
    • El valor de los atributos siempre se encierra con comillas.
    • Los atributos no se pueden comprimir.
    • Todas las etiquetas deben cerrarse siempre.
    • El elemento raíz del documento debe contener una declaración xmlns para el espacio de nombres de XHTML.

CSS

  • CSS es un lenguaje de estilos en cascada que se utiliza para definir la presentación de los elementos en una página web.
  • Las propiedades en CSS son los atributos específicos que se aplican a los elementos.
  • Las pseudo-clases en CSS son palabras clave que se añaden a los selectores y que especifican un estado especial del elemento seleccionado.
  • Las formas de dar estilo a un documento son:
    • Utilizando una hoja de estilo externa.
    • Utilizando el elemento `

XML (Lenguaje de Marcado Extensible)

  • XML es un metalenguaje que permite definir otros lenguajes.
  • XML es un estándar para la creación de documentos, no solo para Internet, sino para cualquier tipo de actividad que requiera estructurar y publicar información.

Estructura de un documento XML

  • Un documento XML está compuesto por:
    • Elementos
    • Atributos
    • Referencias a entidades
    • Texto
    • Secciones CDATA
    • Comentarios
    • Instrucciones de procesamiento
    • La declaración XML

Elementos en XML

  • Los elementos identifican el tipo de información o contenido en una sección específica del documento XML.
  • Los elementos se dividen en:
    • Elementos vacíos (solo contienen una etiqueta)
    • Elementos con contenido (pueden contener texto, elementos o contenido mixto)
  • Reglas para los elementos:
    • Existe un único elemento raíz por cada documento XML.
    • Cada elemento comienza con una etiqueta de inicio y termina con una etiqueta de fin.
    • Las etiquetas de comienzo y fin pueden contener caracteres alfanuméricos, _, -, y ..
    • No se permiten espacios en blanco en el nombre del elemento.

Atributos en XML

  • Los atributos proporcionan información adicional sobre el contenido del elemento.
  • Los atributos se definen en la etiqueta de inicio del elemento.
  • Reglas para los atributos:
    • Los nombres de atributos siguen las mismas reglas que los nombres de elementos.
    • Los valores de atributos deben estar encerrados entre comillas.

Entidades en XML

  • Una entidad es una unidad de almacenamiento que puede contener desde una cadena de caracteres hasta un archivo, gráfico, etc.
  • Entidades predefinidas en XML:
    • < (menor que)
    • > (mayor que)
    • & (ampersand)
    • " (comillas dobles)
    • ' (comillas simples)

Secciones CDATA

  • En un documento XML, se pueden definir secciones CDATA que contienen texto que se debe tratar como texto literal.

Declaración de atributos

  • La declaración de atributos se utiliza para definir un atributo o una lista de atributos.
  • Tipo de un atributo:
    • Tipo cadena: CDATA
    • Tipo enumerado
    • Tipo simbólico

Esquemas XML

  • Un esquema XML utiliza la sintaxis de XML para crear un lenguaje de definición de documentos muy potente y flexible.
  • Los esquemas definen la estructura válida para un documento XML.
  • Los esquemas son extensibles y soportan tipos de datos y namespaces.
  • Un documento XML Schema tiene la extensión ".xsd" y incluye elementos como xs:element, xs:attribute, etc.

DOM y SAX

  • DOM (Document Object Model) es una especificación de un API que define una manera estándar de acceder y manipular documentos XML y HTML.
  • SAX (Simple API for XML) es una API para analizar documentos XML.
  • Las principales diferencias entre DOM y SAX son:
    • DOM permite leer, manipular y modificar un documento XML en memoria.
    • SAX es ideal para manipular archivos de gran tamaño y es más rápido y sencillo que utilizar DOM.
  • XSL (Extensible Stylesheet Language) es un lenguaje que se utiliza para describir la presentación de documentos XML, HTML y otros formatos de documento.
  • XSL se compone de dos partes principales: XSLT (Extensible Stylesheet Language Transformations) y XPath (XML Path Language).
  • XLink (XML Linking Language) es un lenguaje de marcado utilizado para crear hipervínculos entre documentos XML y otros recursos en la web.

XML (Lenguaje de Marcado Extensible)

  • XML es un metalenguaje que permite definir otros lenguajes.
  • XML es un estándar para la creación de documentos, no solo para Internet, sino para cualquier tipo de actividad que requiera estructurar y publicar información.

Estructura de un documento XML

  • Un documento XML está compuesto por:
    • Elementos
    • Atributos
    • Referencias a entidades
    • Texto
    • Secciones CDATA
    • Comentarios
    • Instrucciones de procesamiento
    • La declaración XML

Elementos en XML

  • Los elementos identifican el tipo de información o contenido en una sección específica del documento XML.
  • Los elementos se dividen en:
    • Elementos vacíos (solo contienen una etiqueta)
    • Elementos con contenido (pueden contener texto, elementos o contenido mixto)
  • Reglas para los elementos:
    • Existe un único elemento raíz por cada documento XML.
    • Cada elemento comienza con una etiqueta de inicio y termina con una etiqueta de fin.
    • Las etiquetas de comienzo y fin pueden contener caracteres alfanuméricos, _, -, y ..
    • No se permiten espacios en blanco en el nombre del elemento.

Atributos en XML

  • Los atributos proporcionan información adicional sobre el contenido del elemento.
  • Los atributos se definen en la etiqueta de inicio del elemento.
  • Reglas para los atributos:
    • Los nombres de atributos siguen las mismas reglas que los nombres de elementos.
    • Los valores de atributos deben estar encerrados entre comillas.

Entidades en XML

  • Una entidad es una unidad de almacenamiento que puede contener desde una cadena de caracteres hasta un archivo, gráfico, etc.
  • Entidades predefinidas en XML:
    • < (menor que)
    • > (mayor que)
    • & (ampersand)
    • " (comillas dobles)
    • ' (comillas simples)

Secciones CDATA

  • En un documento XML, se pueden definir secciones CDATA que contienen texto que se debe tratar como texto literal.

Declaración de atributos

  • La declaración de atributos se utiliza para definir un atributo o una lista de atributos.
  • Tipo de un atributo:
    • Tipo cadena: CDATA
    • Tipo enumerado
    • Tipo simbólico

Esquemas XML

  • Un esquema XML utiliza la sintaxis de XML para crear un lenguaje de definición de documentos muy potente y flexible.
  • Los esquemas definen la estructura válida para un documento XML.
  • Los esquemas son extensibles y soportan tipos de datos y namespaces.
  • Un documento XML Schema tiene la extensión ".xsd" y incluye elementos como xs:element, xs:attribute, etc.

DOM y SAX

  • DOM (Document Object Model) es una especificación de un API que define una manera estándar de acceder y manipular documentos XML y HTML.
  • SAX (Simple API for XML) es una API para analizar documentos XML.
  • Las principales diferencias entre DOM y SAX son:
    • DOM permite leer, manipular y modificar un documento XML en memoria.
    • SAX es ideal para manipular archivos de gran tamaño y es más rápido y sencillo que utilizar DOM.
  • XSL (Extensible Stylesheet Language) es un lenguaje que se utiliza para describir la presentación de documentos XML, HTML y otros formatos de documento.
  • XSL se compone de dos partes principales: XSLT (Extensible Stylesheet Language Transformations) y XPath (XML Path Language).
  • XLink (XML Linking Language) es un lenguaje de marcado utilizado para crear hipervínculos entre documentos XML y otros recursos en la web.

Introducción a PHP

  • PHP es un lenguaje de programación de código abierto utilizado principalmente para el desarrollo de aplicaciones web.
  • Permite incrustar código PHP dentro de código HTML y se ejecuta en el servidor, generando una salida HTML.
  • PHP no se limita a generar HTML, sino que también puede crear imágenes, ficheros PDF, películas Flash y otros tipos de archivos.

Configuración de PHP

  • Para configurar PHP como módulo en un servidor Apache en UNIX, se necesitan los siguientes pasos:
    • Descargar los fuentes de Apache y PHP de sus páginas oficiales.
    • Compilar e instalar Apache.
    • Compilar PHP y habilitar extensiones.
    • Configurar el archivo php.ini con las opciones deseadas. +.Editar el fichero httpd.conf para cargar el módulo de PHP.
    • Arrancar Apache.
  • La instalación de PHP implica descargar e instalar la última versión desde el sitio web oficial de PHP.
  • El archivo php.ini es el archivo de configuración principal de PHP, que se debe reiniciar cada vez que se realizan cambios.

Archivo php.ini

  • El archivo php.ini se divide en secciones, cada una con variables relacionadas con esa sección.
  • El archivo contiene numerosos parámetros que controlan el comportamiento de PHP relacionado con directorios, sesiones, parámetros de bases de datos y extensiones.

Configuración del servidor web

  • Se debe configurar el servidor web (Apache, Nginx, IIS, etc.) para trabajar con PHP.
  • La configuración puede incluir la definición de alias o rutas a los archivos de PHP, así como la configuración de los módulos o extensiones de PHP en el servidor web.

Prueba de la configuración de PHP

  • Se puede probar la configuración de PHP mediante la creación de un archivo de prueba con una instrucción simple de PHP, como phpinfo(), que muestra información detallada sobre la configuración de PHP.

Sintaxis básica

  • PHP analiza un fichero busca las etiquetas de apertura y cierre, que son &lt;?php y ?&gt;.

Introducción a PHP

  • PHP es un lenguaje de programación de código abierto utilizado principalmente para el desarrollo de aplicaciones web.
  • Permite incrustar código PHP dentro de código HTML y se ejecuta en el servidor, generando una salida HTML.
  • PHP no se limita a generar HTML, sino que también puede crear imágenes, ficheros PDF, películas Flash y otros tipos de archivos.

Configuración de PHP

  • Para configurar PHP como módulo en un servidor Apache en UNIX, se necesitan los siguientes pasos:
    • Descargar los fuentes de Apache y PHP de sus páginas oficiales.
    • Compilar e instalar Apache.
    • Compilar PHP y habilitar extensiones.
    • Configurar el archivo php.ini con las opciones deseadas. +.Editar el fichero httpd.conf para cargar el módulo de PHP.
    • Arrancar Apache.
  • La instalación de PHP implica descargar e instalar la última versión desde el sitio web oficial de PHP.
  • El archivo php.ini es el archivo de configuración principal de PHP, que se debe reiniciar cada vez que se realizan cambios.

Archivo php.ini

  • El archivo php.ini se divide en secciones, cada una con variables relacionadas con esa sección.
  • El archivo contiene numerosos parámetros que controlan el comportamiento de PHP relacionado con directorios, sesiones, parámetros de bases de datos y extensiones.

Configuración del servidor web

  • Se debe configurar el servidor web (Apache, Nginx, IIS, etc.) para trabajar con PHP.
  • La configuración puede incluir la definición de alias o rutas a los archivos de PHP, así como la configuración de los módulos o extensiones de PHP en el servidor web.

Prueba de la configuración de PHP

  • Se puede probar la configuración de PHP mediante la creación de un archivo de prueba con una instrucción simple de PHP, como phpinfo(), que muestra información detallada sobre la configuración de PHP.

Sintaxis básica

  • PHP analiza un fichero busca las etiquetas de apertura y cierre, que son &lt;?php y ?&gt;.

Introducción a PHP

  • PHP es un lenguaje de programación de código abierto utilizado principalmente para el desarrollo de aplicaciones web.
  • Permite incrustar código PHP dentro de código HTML y se ejecuta en el servidor, generando una salida HTML.
  • PHP no se limita a generar HTML, sino que también puede crear imágenes, ficheros PDF, películas Flash y otros tipos de archivos.

Configuración de PHP

  • Para configurar PHP como módulo en un servidor Apache en UNIX, se necesitan los siguientes pasos:
    • Descargar los fuentes de Apache y PHP de sus páginas oficiales.
    • Compilar e instalar Apache.
    • Compilar PHP y habilitar extensiones.
    • Configurar el archivo php.ini con las opciones deseadas. +.Editar el fichero httpd.conf para cargar el módulo de PHP.
    • Arrancar Apache.
  • La instalación de PHP implica descargar e instalar la última versión desde el sitio web oficial de PHP.
  • El archivo php.ini es el archivo de configuración principal de PHP, que se debe reiniciar cada vez que se realizan cambios.

Archivo php.ini

  • El archivo php.ini se divide en secciones, cada una con variables relacionadas con esa sección.
  • El archivo contiene numerosos parámetros que controlan el comportamiento de PHP relacionado con directorios, sesiones, parámetros de bases de datos y extensiones.

Configuración del servidor web

  • Se debe configurar el servidor web (Apache, Nginx, IIS, etc.) para trabajar con PHP.
  • La configuración puede incluir la definición de alias o rutas a los archivos de PHP, así como la configuración de los módulos o extensiones de PHP en el servidor web.

Prueba de la configuración de PHP

  • Se puede probar la configuración de PHP mediante la creación de un archivo de prueba con una instrucción simple de PHP, como phpinfo(), que muestra información detallada sobre la configuración de PHP.

Sintaxis básica

  • PHP analiza un fichero busca las etiquetas de apertura y cierre, que son &lt;?php y ?&gt;.

Fundamentos de Java

  • Java es un lenguaje de programación de alto nivel y orientado a objetos.
  • Fue desarrollado por Sun Microsystems en la década de 1990 y ahora es propiedad de Oracle Corporation.

Características de Java

  • Portabilidad: Java puede ser ejecutado en cualquier plataforma que tenga una máquina virtual Java (JVM) instalada.
  • Orientación a objetos: Java se basa en la creación de clases y objetos, lo que permite programación modular, reutilización de código y mayor eficiencia en el desarrollo de aplicaciones.
  • Gestión automática de memoria: Java utiliza un sistema de limpieza para liberar la memoria utilizada por objetos que ya no son necesarios en el programa.
  • Seguridad: Java fue diseñado con la seguridad en mente y proporciona una amplia gama de características de seguridad para proteger contra posibles ataques de malware y virus.
  • Biblioteca de clases: Java viene con una amplia biblioteca de clases que facilita el desarrollo de aplicaciones.

Programación Multihilo en Java

  • Java soporta la programación multihilo, lo que significa que los programas pueden ejecutar múltiples procesos simultáneamente.
  • Un hilo (también conocido como thread) es un subproceso que se ejecuta dentro de un programa y que tiene su propio flujo de control.
  • Los hilos pueden utilizarse para realizar tareas en segundo plano, mantener una interfaz de usuario sensible al usuario mientras se realizan operaciones de larga duración, y para realizar múltiples tareas simultáneamente.
  • Los hilos se pueden crear utilizando la clase "Thread" o implementando la interfaz "Runnable".

Tratamiento de Excepciones en Java

  • El tratamiento de excepciones en Java es un mecanismo que permite manejar errores en tiempo de ejecución para evitar que el programa se detenga abruptamente.
  • En lugar de ello, el programa puede manejar la excepción y tomar acciones adecuadas para recuperarse del error.
  • Las excepciones se representan mediante objetos que pertenecen a una clase que extiende la clase "Throwable".

Interfaz Runnable

  • La interfaz Runnable proporciona un método alternativo a la utilización de la clase Thread.
  • La interfaz Runnable se utiliza cuando no es posible hacer que la clase definida extienda la clase Thread.
  • La clase que implementa la interfaz Runnable debe proporcionar una implementación del método "run()".

Clase Principal en Java

  • En Java, toda aplicación tiene una clase principal donde se ejecuta el método especial "main".
  • La clase principal no se puede instanciar y este método será el primero en ser ejecutado.
  • La estructura básica de todo programa Java será: public class Principal { public static void main (String[] args){ // Bloque de sentencias } }

Introducción a Java

  • Java es un lenguaje de programación de alto nivel y orientado a objetos.
  • Fue desarrollado por Sun Microsystems en la década de 1990 y ahora es propiedad de Oracle Corporation.
  • Java es utilizado en una variedad de campos, incluyendo la programación de aplicaciones móviles, la programación web y la programación de sistemas de alta tecnología.

Características de Java

  • Portabilidad: Java puede ser ejecutado en cualquier plataforma que tenga una máquina virtual Java (JVM) instalada.
  • Orientación a objetos: Java se basa en la creación de clases y objetos, lo que permite una programación modular, reutilización de código y mayor eficiencia en el desarrollo de aplicaciones.
  • Gestión automática de memoria: Java utiliza un sistema de limpieza para liberar la memoria utilizada por objetos que ya no son necesarios en el programa.
  • Seguridad: Java fue diseñado con la seguridad en mente y proporciona una amplia gama de características de seguridad para proteger contra posibles ataques de malware y virus.

Programación multihilo

  • Java soporta un mecanismo simple denominado planificación por prioridad fija (fixed priority scheduling).
  • La interfaz Runnable proporciona un método alternativo a la utilización de la clase Thread, para los casos en los que no es posible hacer que la clase definida extienda la clase Thread.
  • La clase Thread se utiliza para crear un nuevo hilo, y el método run() se utiliza para definir el código que se ejecutará en el hilo.

Tratamiento de excepciones

  • El tratamiento de excepciones en Java es un mecanismo que permite manejar errores en tiempo de ejecución para evitar que el programa se detenga abruptamente.
  • Existen dos tipos de excepciones en Java: excepciones verificadas y excepciones no verificadas.
  • Las excepciones verificadas son aquellas que son obligatorias manejarlas porque si no, no nos deja compilar.
  • Las excepciones no verificadas son aquellas donde se deja al programador la decisión de capturarlas o no.
  • El tratamiento de excepciones en Java se realiza mediante el uso de bloques try-catch.

Estándares de conectividad: ODBC y JDBC

  • ODBC (Open Database Connectivity) es un estándar de acceso a las bases de datos que permite acceder a cualquier dato desde cualquier aplicación, sin importar qué sistema de gestión de bases de datos almacene los datos.
  • JDBC (Java Database Connectivity) es una interfaz de acceso a bases de datos estándar SQL que proporciona un acceso uniforme a una gran variedad de bases de datos relacionales desde el lenguaje de programación Java.
  • Existen 4 tipos de drivers JDBC: Tipo 1 (Puente JDBC-ODBC), Tipo 2 (driver API-Nativo), Tipo 3 (Middleware) y Tipo 4 (Driver Java Puro directo a la base de datos).

Características de Java

  • Java es un lenguaje de programación de alto nivel y orientado a objetos.
  • Fue desarrollado por Sun Microsystems en la década de 1990 y ahora es propiedad de Oracle Corporation.
  • Se utiliza para crear aplicaciones y programas en una variedad de plataformas, incluyendo Windows, Mac OS y Linux.
  • Es uno de los lenguajes de programación más populares en todo el mundo.

Ventajas de Java

  • Portabilidad: puede ser ejecutado en cualquier plataforma que tenga una máquina virtual Java (JVM) instalada.
  • Orientación a objetos: se basa en la creación de clases y objetos, lo que permite una programación modular, reutilización de código y mayor eficiencia en el desarrollo de aplicaciones.
  • Gestión automática de memoria: utiliza un sistema de limpieza para liberar la memoria utilizada por objetos que ya no son necesarios en el programa.
  • Seguridad: fue diseñado con la seguridad en mente y proporciona una amplia gama de características de seguridad para proteger contra posibles ataques de malware y virus.
  • Biblioteca de clases: viene con una amplia biblioteca de clases que facilita el desarrollo de aplicaciones.

Clases y Objetos

  • Una clase es un modelo o plantilla que define un conjunto de propiedades y métodos comunes que comparten todos los objetos creados a partir de ella.
  • Un objeto es una instancia de una clase.
  • Cada vez que se crea un objeto en Java, se reserva memoria para almacenar sus propiedades y métodos.
  • Se utiliza la palabra clave "class" seguida del nombre de la clase para crear una clase en Java.
  • Dentro de la clase se definen sus propiedades y métodos.

Programación Multihilo

  • Java soporta la programación multihilo, lo que significa que los programas pueden ejecutar múltiples procesos simultáneamente.
  • Un hilo (también conocido como thread) es un subproceso que se ejecuta dentro de un programa y que tiene su propio flujo de control.
  • La programación multihilo en Java permite que los programas realicen tareas simultáneas, lo que puede mejorar significativamente el rendimiento y la eficiencia.
  • Los hilos pueden utilizarse para realizar tareas en segundo plano, mantener una interfaz de usuario sensible al usuario mientras se realizan operaciones de larga duración, y para realizar múltiples tareas simultáneamente.

Creación de Hilos

  • Se pueden crear utilizando la clase "Thread" o implementando la interfaz "Runnable".
  • La forma más directa para hacer un programa multihilo es extender la clase Thread, y redefinir el método run().
  • El método run() es invocado cuando se inicia el hilo (mediante una llamada al método start() de la clase Thread).
  • La clase "Thread" proporciona métodos que permiten controlar el comportamiento del hilo, como iniciar, detener y pausar.

Estructura de una Aplicación JEE

  • La estructura de una aplicación JEE se basa en la separación de capas, lo que permite un reparto de diferentes responsabilidades y disminuye el acoplamiento entre las diferentes partes de la aplicación.
  • La estructura sugerida para el desarrollo de aplicaciones JEE incluye:
  • Capa de cliente: se encarga de la interacción con el usuario
  • Capa de presentación o Web: controla la lógica de interacción entre el cliente y la capa de lógica de negocio
  • Capa de lógica de negocio: responsable de la lógica de la aplicación propiamente dicha
  • Capa de acceso a datos: realiza tareas de integración con los sistemas de información

Arquitectura JEE

  • La arquitectura JEE es una plataforma para el desarrollo y ejecución de aplicaciones en el lenguaje de programación Java
  • Está definida por una especificación que establece las pautas, reglas y servicios que deben ofrecer los servidores de aplicaciones compatibles con JEE
  • Se utiliza arquitecturas de N capas distribuidas y componentes de software modulares ejecutándose sobre un servidor de aplicaciones

Conceptos Clave de la Arquitectura JEE

  • Servicios: permiten que el programador se concentre en su lógica de negocio y usar estos servicios para su aplicación
  • Contenedores: son entornos en tiempo de ejecución donde se ejecutan los componentes y estos pueden utilizar los servicios
  • Componentes: una unidad funcional autónoma escrita en lenguaje Java dentro de una aplicación JEE

Patrón MVC

  • El patrón MVC se utiliza para el desarrollo de aplicaciones JEE
  • Incluye tres capas:
    • El Modelo: representa la información con la que el sistema opera y gestiona todos los accesos a dicha información
    • El Controlador: responde a eventos y invoca peticiones al modelo cuando se hace alguna solicitud sobre la información
    • La Vista: presenta el modelo en un formato adecuado para interactuar con el usuario

Elementos Constitutivos de JavaEE

  • Se dividen en tres categorías: componentes empresariales, servicios y contenedores
  • Componentes empresariales: una unidad funcional de software que está embebida en la aplicación con sus ficheros y clases asociadas y se comunica con otros componentes

Despliegue de Aplicaciones JEE

  • Los archivos JAR incluidos en el EAR se ponen a disposición de cualquier aplicación WAR incluida en el EAR.
  • El directorio META-INF es donde se encuentra los distintos ficheros de configuración necesarios, como el descriptor de despliegue application.xml.

Herramientas y Productos

  • Servidor de aplicaciones JEE: proporciona un entorno de ejecución para los componentes empresariales de una aplicación JEE.
  • Java Development Kit (JDK): es un conjunto de herramientas de software que se utilizan para desarrollar aplicaciones Java.
  • Eclipse: es un entorno de desarrollo integrado (IDE) para Java que proporciona una serie de herramientas para el desarrollo de aplicaciones JEE.

Archivos WAR

  • Un archivo WAR se puede distribuir una aplicación web completa, compuesta por cualquier número de recursos, en una única unidad de distribución.
  • El archivo WAR incluye carpetas y archivos especiales, como la carpeta META-INF con el manifiesto y la carpeta WEB-INF específica de las aplicaciones Web.
  • La carpeta WEB-INF contiene el archivo web.xml, que proporciona información sobre configuración y despliegue de los componentes web.
  • La carpeta WEB-INF/classes/ contiene las clases Java utilizadas dentro del WAR.
  • La carpeta WEB-INF/lib/ contiene los archivos JAR que serán utilizados por la aplicación.

Archivos EAR

  • Los archivos EAR son la forma estándar de empaquetar en un único fichero distintas aplicaciones web (ficheros WAR) y distintos ficheros JAR con clases Java.
  • Los contenedores EJB proporcionan servicios como gestión del ciclo de vida de los EJB, gestión de la persistencia, servicio de nombres, mensajería asíncrona, seguridad de acceso, gestión de transacciones, gestión de concurrencia y balanceo de carga.

Empaquetado y Despliegue

  • Una aplicación Java EE está formada por un empaquetamiento de una o varias unidades conocidas con el nombre de módulos.
  • Los módulos van empaquetados en ficheros JAR o WAR.
  • Los ficheros JAR empaquetan clases Java y pueden contener Enterprise JavaBeans (EJB) y módulos de la capa de aplicación cliente.
  • La carpeta META-INF que incluye el fichero de Manifiesto (MANIFEST.MF) nos aporta información adicional sobre nuestro fichero JAR.

Despliegue de Aplicaciones JEE

  • Los archivos JAR incluidos en el EAR se ponen a disposición de cualquier aplicación WAR incluida en el EAR.
  • El directorio META-INF es donde se encuentra los distintos ficheros de configuración necesarios, como el descriptor de despliegue application.xml.

Herramientas y Productos

  • Servidor de aplicaciones JEE: proporciona un entorno de ejecución para los componentes empresariales de una aplicación JEE.
  • Java Development Kit (JDK): es un conjunto de herramientas de software que se utilizan para desarrollar aplicaciones Java.
  • Eclipse: es un entorno de desarrollo integrado (IDE) para Java que proporciona una serie de herramientas para el desarrollo de aplicaciones JEE.

Archivos WAR

  • Un archivo WAR se puede distribuir una aplicación web completa, compuesta por cualquier número de recursos, en una única unidad de distribución.
  • El archivo WAR incluye carpetas y archivos especiales, como la carpeta META-INF con el manifiesto y la carpeta WEB-INF específica de las aplicaciones Web.
  • La carpeta WEB-INF contiene el archivo web.xml, que proporciona información sobre configuración y despliegue de los componentes web.
  • La carpeta WEB-INF/classes/ contiene las clases Java utilizadas dentro del WAR.
  • La carpeta WEB-INF/lib/ contiene los archivos JAR que serán utilizados por la aplicación.

Archivos EAR

  • Los archivos EAR son la forma estándar de empaquetar en un único fichero distintas aplicaciones web (ficheros WAR) y distintos ficheros JAR con clases Java.
  • Los contenedores EJB proporcionan servicios como gestión del ciclo de vida de los EJB, gestión de la persistencia, servicio de nombres, mensajería asíncrona, seguridad de acceso, gestión de transacciones, gestión de concurrencia y balanceo de carga.

Empaquetado y Despliegue

  • Una aplicación Java EE está formada por un empaquetamiento de una o varias unidades conocidas con el nombre de módulos.
  • Los módulos van empaquetados en ficheros JAR o WAR.
  • Los ficheros JAR empaquetan clases Java y pueden contener Enterprise JavaBeans (EJB) y módulos de la capa de aplicación cliente.
  • La carpeta META-INF que incluye el fichero de Manifiesto (MANIFEST.MF) nos aporta información adicional sobre nuestro fichero JAR.

Principios de REST

  • La comunicación entre el cliente y el servidor debe ser mediante solicitudes HTTP.
  • Debe separarse lo que concierne al interfaz del usuario del almacenamiento de datos.
  • La comunicación entre el cliente y el servidor debe ser sin estado, lo que implica que no se almacenará ni se compartirá información entre peticiones.

Estado sin estado (Stateless)

  • Cada petición del cliente debe contener toda la información necesaria para que el servidor la comprenda.
  • El estado de la sesión se guarda íntegramente en el cliente.

Uso de Cache

  • Las respuestas a una petición deben poder ser etiquetadas como cacheable o nocacheable.
  • El cliente puede almacenar en memoria cache una respuesta cacheable para utilizarla posteriormente.
  • La ventaja de esta restricción es que se evitarán determinadas peticiones al servidor y se reducirá el tiempo medio de espera.
  • La desventaja es que puede inducir a un mal funcionamiento de una aplicación si los datos obtenidos del caché difieren de los que se hubiesen obtenido realizando la petición directamente al servidor.

Sistema por capas

  • En una arquitectura de sistema por capas, el cliente puede conectarse con otros intermediarios autorizados entre el cliente y el servidor.
  • Los servidores también pueden pasar las solicitudes a otros servidores.
  • Es posible diseñar el servicio web RESTful para que se ejecute en varios servidores con múltiples capas.

Orientada a recursos

  • Los recursos son la información que diferentes aplicaciones proporcionan a sus clientes.
  • El servidor identifica cada recurso con identificadores únicos de recursos (URI).
  • Cuando un usuario desea realizar una actividad remota, accede a un recurso o a la representación de ese recurso.

Fiabilidad

  • REST requiere que se intente de nuevo la llamada en caso de errores de comunicación.

SOAP

  • SOAP es un protocolo para acceder a los servicios web.
  • Es un protocolo de comunicación basado en XML que permite la interoperabilidad fluida entre sistemas heterogéneos.
  • SOAP actúa como un mensajero universal, permitiendo que aplicaciones en diferentes lenguajes y plataformas se intercambien información de manera estándar y estructurada.
  • SOAP se transporta principalmente a través de HTTP, pero también se puede transportar a través de otros protocolos como SMTP y FTP.

Servicios Web y API

  • Los términos "servicio web" y "API" se usan indistintamente, pero las API son la categoría más amplia y los servicios web son un tipo especial de API.
  • SOAP y REST permiten la comunicación síncrona.

Comparación entre SOAP y REST

  • SOAP es un protocolo orientado a RPC (Llamada a procedimiento remoto), mientras que REST está orientado a recursos.
  • SOAP utiliza HTTP como un túnel para pasar sus mensajes, mientras que REST propone HTTP como nivel de aplicación.
  • REST no permite el uso estricto de "sesión" ya que es sin estado, mientras que SOAP, al ser orientado a RPC, crea sesiones para invocar a los métodos remotos.

Arquitectura REST

  • La arquitectura REST define reglas, comportamiento y restricciones sobre el funcionamiento de una API.
  • Las APIs que siguen esta arquitectura son conocidas como "API RESTful".

Principios de diseño de REST

  • Cliente-servidor: El cliente y el servidor deben estar completamente separados e independientes.
  • Sin estado (stateless): La comunicación entre el cliente y el servidor debe ser sin estado, lo que implica que no se almacenará ni se compartirá información entre peticiones.
  • Posible uso de Cache: Las respuestas a una petición deben poder ser etiquetadas como cacheable o nocacheable.
  • Sistema por capas: En una arquitectura de sistema por capas, el cliente puede conectarse con otros intermediarios autorizados entre el cliente y el servidor y todavía recibir respuestas del servidor.
  • Uso correcto de HTTP: REST debe respetar los métodos y códigos de estado para cada operación (GET, POST, PUT, DELETE, etc.).
  • Uso correcto de métodos en las peticiones y código de estado HTTP de las respuestas: Se deben utilizar sustantivos en endpoints y nombres en plural, y no verbos de acción.

Autenticación y autorización en API REST

  • La protección y el control de la información de los servicios es un requisito obligatorio a la hora de hacer públicos los servicios mediante una API o cualquier otro sistema.

Uso de parámetros para el filtrado

SOAP

  • Cuerpo (SOAP-ENV:Body): El cuerpo SOAP es necesario y contiene información destinada al destinatario final del mensaje.
  • Atributo encodingStyle: El atributo encodingStyle indica las normas utilizadas para codificar las partes de un mensaje SOAP.
  • Seguridad con WS-Security: La meta de WS-Security es permitir que las aplicaciones construyan intercambios seguros de mensajes SOAP.

Características de SOAP

  • Formato del mensaje: SOAP utiliza XML para estructurar y formatear los mensajes.
  • Mensaje estructurado: Un mensaje SOAP consta de una envoltura (envelope) que contiene el mensaje y su información asociada.
  • Protocolo basado en estándares: SOAP es un protocolo basado en estándares y es independiente de la plataforma.
  • Independiente del protocolo de aplicación subyacente: SOAP puede ser utilizado por diferentes sistemas operativos y lenguajes de programación.
  • Seguridad: SOAP proporciona opciones para implementar medidas de seguridad como SSL/TLS para encriptar la comunicación.

Proceso de peticiones en Struts 2

  • El navegador web hace una petición para un recurso de la aplicación, que es revisada por el filtro de Struts (StrutsPrepareAndExecuteFilter).
  • El filtro determina el Action apropiado para servir la petición y aplica los interceptores correspondientes.
  • El Action ejecuta el método adecuado (por defecto, el método "execute") y almacena y/o regresa información referente al proceso.
  • El Action indica el resultado que debe ser aplicado, generando la salida apropiada dependiendo del resultado del proceso.
  • Los mismos interceptores se aplican al resultado en orden inverso, y finalmente el resultado pasa por el StrutsPrepareAndExecuteFilter nuevamente.
  • El resultado es enviado al usuario y este lo visualiza.

Configuración de aplicaciones con Struts

  • Se pueden hacer configuraciones utilizando ficheros xml o anotaciones.
  • El archivo web.xml se configura el controlador, StrutsPrepareAndExecuteFilter.
  • El archivo struts.xml se utiliza para iniciar los recursos del proyecto, como interceptores, actions, resultados y variables globales.

Características de Struts 2

  • Struts 2 es un framework de código abierto para el desarrollo de aplicaciones web de Java EE.
  • Está basado en el patrón MVC (Modelo-Vista-Controlador), que busca reducir el acoplamiento dividiendo las responsabilidades en 3 capas claramente diferenciadas: Modelo, Vista y Controlador.
  • El framework incluye una biblioteca de etiquetas web para presentar datos dinámicos.
  • Permite agregar funcionalidades mediante el uso de plugins de forma transparente.

Componentes clave de Struts 2

  • StrutsPrepareAndExecuteFilter: es el controlador en Struts 2 y es el punto de entrada del framework.
  • ActionMapper: determina si la acción debería ser invocada o no.
  • ActionProxy: delega el control al ActionProxy que consulta el ConfigurationManager y crea un ActionInvocation.
  • ConfigurationManager: es un objeto java que representa el fichero struts.xml y contiene toda la información de configuración.

Interceptores en Struts 2

  • Los interceptores son clases que siguen el patrón interceptor.
  • Se aplican a la petición y al resultado en orden inverso.
  • Realizan funciones como validaciones, flujos de trabajo, manejo de la subida de archivos, etc.

Codificación por Convención

  • La codificación por convención busca mantener la flexibilidad y permite a los desarrolladores concentrarse solo en los aspectos poco convencionales de la aplicación.
  • Cuando el comportamiento deseado de la aplicación coincide con las convenciones establecidas, la aplicación se ejecutará de forma predeterminada sin necesidad de escribir archivos de configuración.

Dependencias Starter

  • Spring Boot cuenta con dependencias "starter" que simplifican la configuración y construcción de una aplicación.
  • Al incluir una dependencia "starter", se añaden todas las dependencias necesarias para que funcione ese módulo en tiempo de construcción.
  • Ejemplo: spring-boot-starter-web incluye dependencias para la creación de aplicaciones Web, como spring-context, que contiene anotaciones como @Service, @Repository, @Controller.

Anotaciones

  • @Controller: indica que es un controlador y se utiliza para que los requests puedan conectarse al Back-End.
  • @Service: indicar que la clase es utilizada para la lógica de negocio (Business Logic).
  • @Repository: indicar que la clase es usada como DAO.

Servidores Web

  • Spring Boot incluye servidores HTTP integrados como Tomcat y Jetty para no tener que configurar un servidor externo para ejecutar una aplicación.
  • No es necesario desplegar ficheros WAR en un servidor Web externo.

Ventajas

  • Integra aplicaciones de la familia de proyectos de Spring sin problemas.
  • Ofrece complementos y herramientas para facilitar el desarrollo, como Spring Initializr para crear el proyecto base/inicial.
  • Soporte para pruebas unitarias para asegurar que el código funciona correctamente y que no hay errores en la lógica de la aplicación.

Microservicios

  • Spring Boot permite crear microservicios, que son un enfoque arquitectónico para la construcción de aplicaciones que se dividen en pequeños servicios independientes.
  • Los microservicios se comunican entre sí mediante interfaces bien definidas y protocolos estándar, como HTTP.

Configuración

  • La característica clave de Spring Boot es la autoconfiguración, que no requiere configuración XML.
  • Spring Boot automáticamente configura las dependencias y los servicios necesarios para su aplicación, reduciendo la cantidad de código necesario para configurar un proyecto.

Codificación por Convención

  • La codificación por convención busca mantener la flexibilidad y permite a los desarrolladores concentrarse solo en los aspectos poco convencionales de la aplicación.
  • Cuando el comportamiento deseado de la aplicación coincide con las convenciones establecidas, la aplicación se ejecutará de forma predeterminada sin necesidad de escribir archivos de configuración.

Dependencias Starter

  • Spring Boot cuenta con dependencias "starter" que simplifican la configuración y construcción de una aplicación.
  • Al incluir una dependencia "starter", se añaden todas las dependencias necesarias para que funcione ese módulo en tiempo de construcción.
  • Ejemplo: spring-boot-starter-web incluye dependencias para la creación de aplicaciones Web, como spring-context, que contiene anotaciones como @Service, @Repository, @Controller.

Anotaciones

  • @Controller: indica que es un controlador y se utiliza para que los requests puedan conectarse al Back-End.
  • @Service: indicar que la clase es utilizada para la lógica de negocio (Business Logic).
  • @Repository: indicar que la clase es usada como DAO.

Servidores Web

  • Spring Boot incluye servidores HTTP integrados como Tomcat y Jetty para no tener que configurar un servidor externo para ejecutar una aplicación.
  • No es necesario desplegar ficheros WAR en un servidor Web externo.

Ventajas

  • Integra aplicaciones de la familia de proyectos de Spring sin problemas.
  • Ofrece complementos y herramientas para facilitar el desarrollo, como Spring Initializr para crear el proyecto base/inicial.
  • Soporte para pruebas unitarias para asegurar que el código funciona correctamente y que no hay errores en la lógica de la aplicación.

Microservicios

  • Spring Boot permite crear microservicios, que son un enfoque arquitectónico para la construcción de aplicaciones que se dividen en pequeños servicios independientes.
  • Los microservicios se comunican entre sí mediante interfaces bien definidas y protocolos estándar, como HTTP.

Configuración

  • La característica clave de Spring Boot es la autoconfiguración, que no requiere configuración XML.
  • Spring Boot automáticamente configura las dependencias y los servicios necesarios para su aplicación, reduciendo la cantidad de código necesario para configurar un proyecto.

AJAX

  • Permite interactuar con el servidor de manera asíncrona, actualizando el contenido de las páginas sin necesidad de recargarlas.
  • El cliente hace solicitudes al servidor, mientras el navegador sigue mostrando la misma página web, y cuando el navegador reciba una respuesta del servidor, la mostrará al cliente y todo ello sin recargar o cambiar de página.
  • El cliente hace una solicitud HTTP al servidor por medio de JavaScript, y el servidor proceso la solicitud y devuelve un resultado en XML (o generalmente en XML) que es procesado por JavaScript, y este actualiza solo las secciones de la página necesarias.

Ventajas de AJAX

  • Permite actualizar el contenido de la página sin recargarla.
  • Reduce el tiempo de espera del cliente.

Técnicas de desarrollo web en AJAX

  • HTML/XHTML para el lenguaje principal y CSS para la presentación.
  • El Modelo de objetos del documento (DOM) para manipular los documentos HTML y sus elementos.
  • XML para el intercambio de datos y XSLT para su manipulación.
  • El objeto XMLHttpRequest para la comunicación asíncrona.
  • El lenguaje de programación JavaScript para unir todas estas tecnologías.

El objeto XMLHttpRequest

  • Es un elemento fundamental para la comunicación asíncrona con el servidor.
  • Permite enviar y recibir información en formato XML y en general en cualquier formato.

Procesamiento de datos en AJAX

  • El servidor procesa los datos recibidos y los convierte en un objeto en el lenguaje de programación utilizado en el servidor.
  • El servidor envía una respuesta al cliente con los datos procesados en formato JSON.
  • El cliente procesa la respuesta recibida y utiliza los datos para actualizar la interfaz de usuario de la página web.

Ventajas de JSON

  • Ligereza: El formato JSON es muy ligero, lo que permite transferir grandes cantidades de datos con rapidez y eficiencia.
  • Facilidad de uso: La notación de objetos de JavaScript utilizada en JSON hace que sea fácil de entender y utilizar.
  • Compatibilidad: JSON es compatible con una amplia gama de lenguajes de programación y sistemas, lo que lo hace una buena opción para la transferencia de datos entre diferentes aplicaciones.

JavaScript

  • Es un lenguaje de programación interpretado que se utiliza principalmente para agregar interactividad a las páginas web.
  • Es uno de los tres pilares fundamentales del desarrollo web, junto con HTML y CSS.
  • Se utiliza para controlar el comportamiento de los elementos de la página web y manipular y actualizar el contenido de la página web en tiempo real.

Desarrollo en JavaScript del lado del servidor

  • Se hace instalando en el servidor herramientas que permiten el uso de JavaScript del lado del servidor, como Node.js.
  • Node.js es un entorno de programación que incluye numerosas librerías preparadas para ser usadas por parte de los programadores.

Ventajas de Node.js

  • Simplicidad: Posee una estructura sencilla que lo vuelve más fácil de aprender e implementar.
  • Velocidad: Se ejecuta más rápido que otros lenguajes y favorece la detección de los errores.
  • Versatilidad: Es compatible con otros lenguajes, como PHP, Perl y Java.
  • Popularidad: Existen numerosos recursos y foros disponibles para ayudar a los principiantes con habilidades y conocimientos limitados.
  • Descarga de carga al servidor: Desarrolla aplicaciones del lado del servidor sin sobrecargar el servidor.

El Modelo ER

  • El modelo ER proporciona una notación diagramática para representar gráficamente las construcciones básicas: entidades, atributos y interrelaciones.

Entidades

  • Una entidad es un objeto del mundo real que podemos distinguir del resto de objetos y del que nos interesan algunas propiedades.
  • Se representan con un rectángulo y el nombre de la entidad se escribe en mayúsculas dentro del rectángulo.
  • Una entidad puede tener varias claves candidatas y se elegirá una clave primaria.
  • La clave primaria se subraya en el diagrama ER para distinguirla del resto de las claves.
  • Todos los atributos tienen que ser univaluados.

Atributos

  • Son las propiedades de los objetos que nos interesan.
  • Se representan mediante su nombre en minúsculas unido con un guion al rectángulo de la entidad a la que pertenecen.
  • Un atributo es univaluado si tiene un único valor para cada ocurrencia de una entidad.

Interrelaciones

  • Se define como una asociación entre entidades.
  • Se representan en los diagramas del modelo ER mediante un rombo.
  • Junto al rombo se indica el nombre de la interrelación con letras mayúsculas.
  • Las interrelaciones pueden tener atributos y pueden asociar dos o más entidades.
  • El número de entidades que asocia una interrelación es el grado de la interrelación.

Generalización/Especialización

  • La generalización/especialización permite reflejar el hecho de que hay una entidad general, que denominamos entidad superclase, que se puede especializar en entidades subclase.
  • La entidad superclase nos permite modelizar las características comunes de la entidad vista de una forma genérica.
  • Las entidades subclase nos permiten modelizar las características propias de sus especializaciones.

Interrelaciones Binarias

  • Las interrelaciones de grado dos se denominan también interrelaciones binarias.
  • Las interrelaciones binarias se clasifican en:
    • Uno a uno (1:1)
    • Uno a muchos (1:n)
    • Muchos a muchos (m:n)

Cardinalidad y Tipo de Conectividad

  • Cardinalidad: con la que una entidad participa en una relación especifica el número mínimo y el número máximo de correspondencias en las que puede tomar parte cada ocurrencia de dicha entidad.
  • Tipo de conectividad: se utiliza para clasificar el tipo de relación.

Etapa del Diseño Físico

  • En esta etapa se transforma la estructura obtenida en la etapa del diseño lógico en una descripción de la implementación de la base de datos que estará fuertemente ligada al SGBD elegido.
  • Se expresa haciendo uso del lenguaje de definición de datos del SGBD.
  • Incluye la descripción de las estructuras de almacenamiento y los métodos de acceso a los datos.

Normalización de Bases de Datos Relacionales

  • El resultado es un nuevo modelo relacional en el que ni se ha introducido nuevos atributos, solo se ha reestructurado la información.
  • Existen varias formas normales, para alcanzar cada una de ellas hay que aplicar una serie de restricciones que el modelo debe cumplir.
  • El proceso de normalización se divide en varias formas o niveles de normalización, que se enumeran a continuación:
    • Primera forma normal (1NF)
      • Todos los atributos son atómicos, contienen valores indivisibles.
      • La tabla contiene una clave primaria única.
      • La clave primaria no contiene atributos nulos.
      • Una tabla no puede tener múltiples valores en cada columna.

Diseño de una base de datos relacional

  • La relación M:N se traduce en una nueva relación donde la clave primaria está formada por la suma de las claves primarias de las relaciones implicadas.
  • Todas las interrelaciones n-arias se traducen en nuevas relaciones.

Etapa del diseño físico

  • Se transforma la estructura obtenida en la etapa del diseño lógico en una descripción de la implementación de la base de datos.
  • Se expresa haciendo uso del lenguaje de definición de datos del SGBD.
  • Incluye la descripción de las estructuras de almacenamiento y los métodos de acceso a los datos.
  • El objetivo es conseguir un buen rendimiento de la base de datos, considerando las características de los procesos que consultan y actualizan la base de datos.

Normalización de bases de datos relacionales

  • Es un proceso que se aplica después de transformar el modelo ER al modelo relacional.
  • El resultado es un nuevo modelo relacional en el que no se ha introducido nuevos atributos, solo se ha reestructurado la información.

Formas Normales

  • Primera forma normal (1NF): todos los atributos son atómicos, la tabla contiene una clave primaria única, la clave primaria no contiene atributos nulos, y una tabla no puede tener múltiples valores en cada columna.
  • Segunda forma normal (2NF): una relación está en 2NF si está en 1NF y si los atributos que no forman parte de ninguna clave dependen de forma completa de la clave principal, sin dependencias parciales.
  • Tercera forma normal (3NF): la tabla se encuentra en 3NF si es 2NF y si no existe ninguna dependencia funcional transitiva entre los atributos que no son clave.

Tipos de bases de datos

  • Bases de datos jerárquicas: se almacena la información en una estructura jerárquica o con un orden de importancia, organizados en forma de árbol.
  • Bases de datos en red: evolución de las jerárquicas, los nodos pueden tener diversos padres, y se establecen relaciones de muchos a muchos.
  • Bases de datos relacionales: se organizan en tablas relacionadas entre sí por claves primarias y foráneas, las más utilizadas y basadas en el modelo relacional.

Conceptos de Bases de Datos

  • Las bases de datos son colecciones organizadas de datos que se pueden almacenar, acceder, actualizar y administrar de manera eficiente.
  • Se utilizan para gestionar grandes cantidades de información en una variedad de contextos, como empresas, organizaciones gubernamentales, sitios web y aplicaciones móviles.

Tipos de Bases de Datos

  • Bases de datos jerárquicas: almacenan la información en una estructura jerárquica o con un orden de importancia, organizados en forma de árbol.
  • Bases de datos en red: una evolución de las jerárquicas, permiten establecer relaciones de muchos a muchos, mejorando las bases de datos jerárquicas.
  • Bases de datos relacionales: las más utilizadas, basadas en el modelo relacional, organizan los datos en tablas relacionadas entre sí por claves primarias y foráneas.
  • Bases de datos en grafo: representan la información como nodos de un grafo y sus relaciones con las aristas del mismo, utilizadas en el Big Data para operar con grandes cantidades de datos con complejas relaciones.
  • Bases de datos orientadas a objetos: permiten el almacenamiento de objetos complejos que incluyen datos y métodos para manipularlos, utilizadas en aplicaciones implementadas con lenguajes orientados a objetos.
  • Bases de datos No SQL: no cumplen con el esquema entidad-relación, no utilizan una estructura de datos en forma de tabla, y se utilizan en situaciones de problemas de escalabilidad y rendimiento.
  • Bases de datos clave-valor: modelo de base de datos NoSQL más popular, almacenan información en pares clave-valor, donde la clave identifica un elemento de la base de datos unívocamente.
  • Bases de datos documentales: almacenan la información como un documento, utilizando estructuras como JSON o XML, y permiten realizar búsquedas y consultas más avanzadas.

Diseño de una Base de Datos Relacional

  • El diseño de una base de datos consiste en definir la estructura de los datos que debe tener la base de datos de un sistema de información determinado.
  • Etapa del diseño conceptual: se obtiene una estructura de la información de la futura BD independiente de la tecnología que se utilizará, se expresa mediante un modelo de datos de alto nivel, como el modelo entidad-interrelación (ER).
  • Estructura de las tablas: cada tabla tiene una clave primaria, que es un campo o conjunto de campos que identifican de manera única cada registro en la tabla, y están interconectadas mediante claves foráneas.

Conceptos de Bases de Datos

  • Las bases de datos son colecciones organizadas de datos que se pueden almacenar, acceder, actualizar y administrar de manera eficiente.
  • Se utilizan para gestionar grandes cantidades de información en una variedad de contextos, como empresas, organizaciones gubernamentales, sitios web y aplicaciones móviles.

Tipos de Bases de Datos

  • Bases de datos jerárquicas: almacenan la información en una estructura jerárquica o con un orden de importancia, organizados en forma de árbol.
  • Bases de datos en red: una evolución de las jerárquicas, permiten establecer relaciones de muchos a muchos, mejorando las bases de datos jerárquicas.
  • Bases de datos relacionales: las más utilizadas, basadas en el modelo relacional, organizan los datos en tablas relacionadas entre sí por claves primarias y foráneas.
  • Bases de datos en grafo: representan la información como nodos de un grafo y sus relaciones con las aristas del mismo, utilizadas en el Big Data para operar con grandes cantidades de datos con complejas relaciones.
  • Bases de datos orientadas a objetos: permiten el almacenamiento de objetos complejos que incluyen datos y métodos para manipularlos, utilizadas en aplicaciones implementadas con lenguajes orientados a objetos.
  • Bases de datos No SQL: no cumplen con el esquema entidad-relación, no utilizan una estructura de datos en forma de tabla, y se utilizan en situaciones de problemas de escalabilidad y rendimiento.
  • Bases de datos clave-valor: modelo de base de datos NoSQL más popular, almacenan información en pares clave-valor, donde la clave identifica un elemento de la base de datos unívocamente.
  • Bases de datos documentales: almacenan la información como un documento, utilizando estructuras como JSON o XML, y permiten realizar búsquedas y consultas más avanzadas.

Diseño de una Base de Datos Relacional

  • El diseño de una base de datos consiste en definir la estructura de los datos que debe tener la base de datos de un sistema de información determinado.
  • Etapa del diseño conceptual: se obtiene una estructura de la información de la futura BD independiente de la tecnología que se utilizará, se expresa mediante un modelo de datos de alto nivel, como el modelo entidad-interrelación (ER).
  • Estructura de las tablas: cada tabla tiene una clave primaria, que es un campo o conjunto de campos que identifican de manera única cada registro en la tabla, y están interconectadas mediante claves foráneas.

Copias de seguridad y recuperación

  • Cuando un tablespace se coloca en modo begin backup, Oracle hace que los datafiles no sean escritos por el proceso DBWRITER y todos los cambios ocurridos son escritos en los redo logs.
  • Se copian los ficheros correspondientes a la ubicación de copia y se repite el proceso con todos los tablespaces.
  • Para la recuperación en caliente, se deben seguir los siguientes pasos:
    • Poner offline los tablespaces correspondientes
    • Copiar el archivo o archivos de la copia de seguridad
    • Hacer el RECOVER TABLESPACE
    • Ponerlo en online

Restaurar archivos de control

  • Si ocurre un fallo en un archivo de control y se tienen copias multiplexadas, se puede apagar la base de datos, copiar el archivo correcto y sobrescribir el incorrecto.
  • Si es un fallo general de todos los archivos de control, se deben seguir los siguientes pasos:
    • Parar la base de datos
    • Copiar el archivo de control desde la carpeta de copia de seguridad
    • Copiar todos los archivos de datos desde la copia de seguridad
    • Montar la base de datos (STARTUP MOUNT)
    • Ejecutar la orden: RECOVER DATABASE USING BACKUP CONTROLFILE

Tipos de copias de seguridad

  • Copias manuales: se pueden clasificar en físicas y lógicas
    • Físicas: se realizan cuando se copian los ficheros que soportan la BD
    • Lógicas: se realizan sobre la estructura de la BD
  • Backups de la BD en frío en modo ARCHIVELOG:
    • Se ejecuta el comando SHUTDOWN IMMEDIATE
    • Se copian los archivos desde el sistema operativo
    • Se archiva el redo log actual
    • Se copian los archivos de control, parámetros, contraseñas, etc.
  • Copias de la BD en caliente:
    • Se realizan mientras la BD está abierta y funcionando en modo ARCHIVELOG
    • Se debe tener cuidado de realizarlo cuando la carga de la BD sea pequeña
    • Se aconseja paralizar individualmente cada tablespace y copiar sus archivos de datos

Privilegios de sistema y objeto

  • SYSDBA: capacidad de parar e iniciar la instancia de base de datos, modificar la base de datos, crear y borrar bases de datos, recuperar la base de datos, etc.
  • SYSOPER: permite lo mismo que SYSDBA, excepto crear y borrar la base de datos y recuperar en todas las formas la base de datos
  • Privilegios de objeto: se aplican a un objeto concreto de la base de datos
  • Se pueden crear roles con CREATE ROLE, modificarlos con ALTER ROLE y eliminarlos con DROP ROLE
  • Se pueden otorgar privilegios con GRANT y quitarlos con REVOKE

Características Principales de Oracle

  • Oracle es un sistema gestor de base de datos objeto-relacional desarrollado por Oracle Corporation.
  • Tiene diferentes tipos de licencias: Enterprise, Standard, y Oracle Express Edition.
  • Oracle se ejecuta en múltiples plataformas, incluyendo Windows, Linux, Unix, y macOS.
  • Incluye un lenguaje de programación procedimental llamado PL/SQL.
  • Oracle proporciona varias herramientas de desarrollo y gestión, como SQL*Plus y Oracle SQL Developer.

Arquitectura del Sistema

  • Cuando se ejecuta el proceso de segundo plano LGWR, se graba el búfer de redo log de la SGA al fichero redo log.
  • Archivos de control: fichero binario donde se almacena información esencial para el funcionamiento de la Base de datos.
  • Archivos de parámetros: almacenan parámetros de configuración de la base de datos.

Arranque y Parada de Bases de Datos

  • Una base de datos Oracle puede estar en uno de cuatro estados: SHUTDOWN, NOMOUNT, MOUNT, y OPEN.
  • Para iniciar la base de datos, se usa el comando STARTUP seguido del nombre del estado deseado.
  • El comando ALTER DATABASE seguido del estado permite cambiar de estado.
  • En el modo de sesión restringida, solo se permite el acceso a usuarios con permiso RESTRICTED para hacer tareas especiales de administración.

Parada de la Base de Datos

  • El comando de apagado de la instancia es SHUTDOWN, con opciones NORMAL, TRANSACTIONAL, IMMEDIATE, y ABORT.
  • NORMAL: no se admiten más conexiones a la base de datos, pero las actuales se mantienen.
  • TRANSACTIONAL: igual que la anterior, pero se cortan todas las conexiones que no hayan empezado una transacción.
  • IMMEDIATE: no se aceptan nuevas conexiones y se cierran las actuales, se cortan las transacciones mediante una instrucción ROLLBACK.
  • ABORT: apagado brusco, todas las conexiones se cortan de golpe, no se cierran los archivos ni se provoca un checkpoint.

Seguridad Lógica

  • Para acceder a los datos en una BD Oracle, se debe tener acceso a una cuenta de usuario en esa BD.
  • Privilegios de objeto: son permisos que se aplican a un objeto concreto de la base de datos.
  • Privilegios de sistema: SYSDBA y SYSOPER, que permiten realizar tareas administrativas.
  • Los privilegios se pueden quitar con REVOKE.

Seguridad Física: Backup

  • Planear y comprobar los procedimientos de backup del sistema es la única garantía que existe contra fallos del sistema.
  • Oracle dispone de tres posibilidades principales para recuperar información: la herramienta RMAN, copias manuales, y recuperaciones de tipo flashback.
  • Copias manuales: se pueden clasificar en físicos y lógicos. Los físicos se realizan cuando se copian los ficheros que soportan la BD.
  • Copias en frío en modo ARCHIVELOG: se deben cerrar la instancia de Oracle en buenas condiciones, copiar los archivos, y luego restaurar la base de datos.
  • Copias en caliente en modo ARCHIVELOG: se realiza mientras la BD está abierta y funcionando, se debe tener cuidado de realizarlo cuando la carga de la BD sea pequeña.

Proceso de Arranque y Parada de una Base de Datos Oracle

  • La base de datos Oracle puede estar en uno de cuatro estados: SHUTDOWN, NOMOUNT, MOUNT y OPEN.
  • En el estado SHUTDOWN, la base de datos está cerrada y no hay procesos en ejecución.
  • En el estado NOMOUNT, la instancia de base de datos está en memoria, con procesos comunes y en segundo plano funcionando, espacio asignado para la SGA y archivo de parámetros abierto.
  • En el estado MOUNT, se lee los archivos de control para determinar cómo preparar la instancia y se busca la existencia de archivos de datos y redo log.
  • En el estado OPEN, la base de datos está completamente funcional, con los archivos de datos y redo log abiertos y comprobada la consistencia de los datos.

Comandos para Arrancar y Parada de la Base de Datos

  • El comando para arrancar la base de datos es STARTUP, seguido del nombre del estado deseado.
  • El comando para parar la base de datos es SHUTDOWN, con opciones NORMAL, TRANSACTIONAL, IMMEDIATE y ABORT.

Opciones de SHUTDOWN

  • NORMAL: no se admiten más conexiones, pero las actuales se mantienen hasta que se cierre la última sesión.
  • TRANSACTIONAL: se cortan todas las conexiones que no hayan empezado una transacción.
  • IMMEDIATE: no se aceptan nuevas conexiones y se cierran las actuales, con un rollback de transacciones.
  • ABORT: apagado brusco, todas las conexiones se cortan de golpe, no se cierran los archivos ni se provoca un checkpoint.

Seguridad Lógica

  • Se necesita una cuenta de usuario con contraseña para acceder a los datos en una BD Oracle.
  • Oracle JDeveloper es un entorno de desarrollo integrado gratuito que cubre todo el ciclo de vida del desarrollo de aplicaciones.

Arquitectura del Sistema Oracle

  • Oracle utiliza un modelo cliente/servidor, con procesos de usuario en el cliente y procesos del servidor en el servidor.
  • La instancia de la base de datos se encuentra en el servidor, compuesta por procesos y estructuras de memoria.
  • Los procesos del servidor se encargan de la comunicación con los procesos de cliente y la gestión de peticiones.
  • Los procesos en segundo plano se encargan de la escritura de los búferes a sus archivos de disco correspondientes.

Estructuras de Memoria

  • PGA: estructura en memoria que utiliza cada proceso de servidor para atender peticiones de procesos de usuario.
  • SGA: estructura en memoria compartida por todos los procesos de servidor, contiene la caché de búfer de datos y el búfer redo log.

Archivos de la Base de Datos

  • Archivos de datos: donde se almacenan los datos finales de la base de datos, se graban los datos de la caché del búfer de datos cuando se ejecuta un checkpoint.
  • Archivos redo logs: donde se almacenan las modificaciones de los datos confirmados.

Proceso de Arranque y Parada de una Base de Datos Oracle

  • La base de datos Oracle puede estar en uno de cuatro estados: SHUTDOWN, NOMOUNT, MOUNT y OPEN.
  • En el estado SHUTDOWN, la base de datos está cerrada y no hay procesos en ejecución.
  • En el estado NOMOUNT, la instancia de base de datos está en memoria, con procesos comunes y en segundo plano funcionando, espacio asignado para la SGA y archivo de parámetros abierto.
  • En el estado MOUNT, se lee los archivos de control para determinar cómo preparar la instancia y se busca la existencia de archivos de datos y redo log.
  • En el estado OPEN, la base de datos está completamente funcional, con los archivos de datos y redo log abiertos y comprobada la consistencia de los datos.

Comandos para Arrancar y Parada de la Base de Datos

  • El comando para arrancar la base de datos es STARTUP, seguido del nombre del estado deseado.
  • El comando para parar la base de datos es SHUTDOWN, con opciones NORMAL, TRANSACTIONAL, IMMEDIATE y ABORT.

Opciones de SHUTDOWN

  • NORMAL: no se admiten más conexiones, pero las actuales se mantienen hasta que se cierre la última sesión.
  • TRANSACTIONAL: se cortan todas las conexiones que no hayan empezado una transacción.
  • IMMEDIATE: no se aceptan nuevas conexiones y se cierran las actuales, con un rollback de transacciones.
  • ABORT: apagado brusco, todas las conexiones se cortan de golpe, no se cierran los archivos ni se provoca un checkpoint.

Seguridad Lógica

  • Se necesita una cuenta de usuario con contraseña para acceder a los datos en una BD Oracle.
  • Oracle JDeveloper es un entorno de desarrollo integrado gratuito que cubre todo el ciclo de vida del desarrollo de aplicaciones.

Arquitectura del Sistema Oracle

  • Oracle utiliza un modelo cliente/servidor, con procesos de usuario en el cliente y procesos del servidor en el servidor.
  • La instancia de la base de datos se encuentra en el servidor, compuesta por procesos y estructuras de memoria.
  • Los procesos del servidor se encargan de la comunicación con los procesos de cliente y la gestión de peticiones.
  • Los procesos en segundo plano se encargan de la escritura de los búferes a sus archivos de disco correspondientes.

Estructuras de Memoria

  • PGA: estructura en memoria que utiliza cada proceso de servidor para atender peticiones de procesos de usuario.
  • SGA: estructura en memoria compartida por todos los procesos de servidor, contiene la caché de búfer de datos y el búfer redo log.

Archivos de la Base de Datos

  • Archivos de datos: donde se almacenan los datos finales de la base de datos, se graban los datos de la caché del búfer de datos cuando se ejecuta un checkpoint.
  • Archivos redo logs: donde se almacenan las modificaciones de los datos confirmados.

Creación de una base de datos en Oracle

  • Para crear una base de datos en Oracle, se deben seguir varios pasos: definir ORACLE_SID, crear el fichero INIT.ORA, definir el fichero de passwords, arrancar la instancia y crear la base de datos.
  • El fichero INIT.ORA es un fichero de texto que contiene los parámetros de configuración de la base de datos, como la ubicación de los ficheros de control.

###Diccionario de datos

  • El diccionario de datos es un conjunto de tablas de solo lectura que contiene información sobre la estructura y el contenido de la base de datos (METADATOS).
  • El diccionario de datos se crea automáticamente cuando se crea la base de datos Oracle.
  • Las vistas del diccionario de datos se pueden agrupar en estáticas y dinámicas.
  • Las vistas estáticas son:
    • USER_: Muestran objetos que pertenecen al usuario que hace la consulta.
    • ALL_: Muestran objetos a los que el usuario tiene acceso (sean o no de su propiedad).
    • DBA_: Muestran todos los objetos de la base de datos.

Arquitectura de Oracle

  • Oracle proporciona un sistema de al menos dos capas para comunicarse con el servidor de bases de datos: una capa del cliente y una capa del servidor.
  • La comunicación entre el cliente y el servidor se realiza a través de dos procesos: proceso de usuario y proceso servidor.

Proceso de usuario y proceso servidor

  • El proceso de usuario es un software que se ejecuta en el lado del cliente y se encarga de recoger las instrucciones lanzadas por el usuario y enviarlas al servidor.
  • El proceso servidor es un software que se ejecuta en el servidor de bases de datos y se encarga de procesar el código lanzado por el usuario.
  • Hay dos formas de trabajar del servidor: servidor dedicado y servidor compartido.

Archivos de la base de datos

  • Una base de datos Oracle necesita los siguientes archivos para grabar la información de la misma:
    • Archivos de datos: almacenan los datos en sí de la base de datos.
    • Archivos de control: almacenan información de control de la base de datos.
    • Archivos Red Log: almacenan información de redo log.

Estructuras lógicas de almacenamiento

  • Oracle utiliza estructuras lógicas de almacenamiento para relacionar la lógica de la base de datos con la parte física.
  • Las estructuras lógicas de almacenamiento son:
    • Tablespaces: son una estructura lógica que relaciona la lógica de la base de datos con la parte física.
    • Segmentos: se encuentran en cada tablespace y están relacionados directamente con un objeto de la base de datos.
    • Extensiones: los segmentos se dividen en extensiones.

Niveles de permisos

  • Los permisos se dividen en 4 niveles: global, base de datos, tabla y columna.
  • Los permisos globales se aplican a todas las bases de datos de un servidor dado y se almacenan en la tabla mysql.user.
  • Los permisos de base de datos se aplican a todos los objetos en una base de datos dada y se almacenan en las tablas db y host.
  • Los permisos de tabla se aplican a todas las columnas en una tabla dada y se almacenan en la tabla mysql.tables_priv.
  • Los permisos de columna se aplican a columnas en una tabla dada y se almacenan en la tabla mysql.columns_priv.

Asignación de permisos

  • Se utilizan sentencias GRANT para asignar permisos a usuarios o roles.
  • La sentencia GRANT lista_privilegios ON *.* TO {id_usuario|rol} otorga permisos globales.
  • La sentencia GRANT lista_privilegios ON db_name.* TO {id_usuario|rol} otorga permisos de base de datos.
  • La sentencia GRANT lista_privilegios (lista_columnas) ON db_name.tbl_name TO {id_usuario|rol} otorga permisos de columna.
  • La sentencia GRANT lista_privilegios ON PROCEDURE nombre_procedimiento TO {id_usuario|rol} otorga permisos de rutina.

###Roles

  • Un rol de MySQL es una colección de privilegios con nombre.
  • Los roles pueden tener privilegios otorgados y revocados.
  • Esto permite la asignación de conjuntos de privilegios a las cuentas y proporciona una alternativa conveniente para otorgar privilegios individuales.

Usuarios

  • Un usuario es una cuenta que puede conectarse al servidor MySQL.
  • La comprobación de la identidad se realiza utilizando las tres columnas de la tabla user (Host, User, y Password).
  • Los valores de Host en la tabla pueden ser especificados de varias maneras, incluyendo un nombre de máquina, un número IP, 'localhost' para la máquina local, o incluso caracteres comodín como '%' y '_'.
  • Se puede crear nuevas cuentas de usuario MySQL de varias formas, utilizando MySQL Workbench, comandos CREATE USER, o manipulando las tablas de permisos MySQL directamente.

Permisos y seguridad

  • La función primaria del sistema de privilegios de MySQL es autenticar un usuario conectándose desde un equipo dado y asociar dicho usuario con privilegios en una base de datos.
  • El sistema de privilegios de MySQL asegura que todos los usuarios pueden ejecutar solo la operación permitida a los mismos.
  • MySQL cuenta con un sistema de seguridad lógica que te permite crear usuarios, asignar permisos y definir roles para proteger tus bases de datos.

Características de MySQL

  • MySQL es un sistema de gestión de bases de datos relacionales ampliamente utilizado.
  • Está disponible bajo licencia dual: GNU para versiones Community y licencia comercial para versiones Enterprise.
  • Es rápido en lectura con el motor de almacenamiento no transaccional MyISAM.
  • Es multiplataforma y funciona en varias plataformas, incluyendo Windows, Linux y macOS.
  • Utiliza el lenguaje SQL para manipular y consultar datos.
  • Es fácil de instalar, configurar y utilizar.
  • El diseño de MySQL Server es multi capa, con módulos independientes desarrollados en C y C++.
  • Permite escoger entre múltiples motores de almacenamiento para cada tabla.

Creación de bases de datos

  • Para crear una base de datos, se puede utilizar Workbench o la sentencia CREATE DATABASE o SCHEMA.
  • La sentencia CREATE DATABASE permite especificar el set de caracteres, que por defecto es latin1.
  • Se pueden utilizar formatos de codificación Unicode como UTF-8, UTF-16 y UTF-32.

Seguridad lógica

  • MySQL cuenta con un sistema de seguridad lógica que permite crear usuarios, asignar permisos y definir roles.
  • Se preinstalan varias cuentas de usuarios iniciales al instalar MySQL, incluyendo 'root'@'localhost', 'mysql.sys'@'localhost', 'mysql.session'@'localhost' y 'mysql.infoschema'@'localhost'.
  • La cuenta 'root'@'localhost' se utiliza con fines administrativos y tiene todos los privilegios.
  • Las cuentas 'mysql.sys', 'mysql.session' y 'mysql.infoschema' están bloqueadas para conexiones de clientes y se utilizan internamente por plugins o para acceder al servidor.

Instalación y configuración

  • La instalación de MySQL incluye la creación de varias cuentas de usuarios iniciales.
  • Es posible cambiar la contraseña de la cuenta 'root' para evitar exponer una cuenta con privilegios elevados y un nombre conocido.

MariaDB

  • No se menciona explícitamente en el texto, pero se puede considerar que MariaDB es una bifurcación de MySQL con características similares.

Roles de Servidor

  • Para crear un rol de servidor, se utiliza la instrucción CREATE SERVER ROLE nombre_rol.
  • Para agregar un miembro a un rol de servidor, se utiliza la instrucción ALTER SERVER ROLE nombre_rol ADD MEMBER entidad_seguridad_nivel_servidor.
  • Para eliminar un miembro de un rol de servidor, se utiliza la instrucción DROP MEMBER.

Roles de Base de Datos

  • Los roles de base de datos se aplican a toda la base de datos.
  • Existen dos tipos de roles de base de datos: roles fijos de base de datos y roles de base de datos definidos por el usuario.
  • Los roles fijos de base de datos están predefinidos en la base de datos, por ejemplo, db_owner.
  • Los roles de base de datos definidos por el usuario se crean con la instrucción CREATE ROLE nombre_rol.
  • Para agregar un miembro a un rol de base de datos, se utiliza la instrucción ALTER ROLE nombre_rol ADD MEMBER {usuario_de_base_de_datos | rol_de_base_de_datos}.

Roles de Aplicación

  • Los roles de aplicación permiten que los usuarios accedan a ciertos objetos de la base de datos a través de una aplicación externa.
  • Los roles de aplicación no contienen miembros.

Seguridad Física

  • Las copias de seguridad y la restauración son la única forma de proteger los datos de la base de datos SQL Server.
  • Tipos de copias de seguridad:
    • Copia de seguridad completa: incluye todos los objetos, datos de tablas del sistema y transacciones que ocurren durante la copia de seguridad.
  • Permisos de objetos: se pueden otorgar con WITH GRANT OPTION para permitir a las entidades de seguridad otorgar permisos sobre otras entidades de seguridad.

Permisos

  • Permisos de servidor: se otorgan con GRANT permission [ ,...n ] TO [ ,...n ] [ WITH GRANT OPTION ].
  • Permisos de base de datos: se otorgan con GRANT [ ,...n ] TO [ ,...n ] [ WITH GRANT OPTION ].
  • Permisos de esquema: se otorgan con GRANT permission [ ,...n ] ON SCHEMA :: schema_name TO [ ,...n ] [ WITH GRANT OPTION ].
  • Permisos de objeto: se otorgan con GRANT [ ,...n ] ON [ OBJECT :: schema_name. ] object_name [ ( column_name [ ,...n ] ) ] TO [ ,...n ] [ WITH GRANT OPTION ].
  • REVOKE: para quitar permisos previamente otorgados con GRANT.
  • DENY: para prohibir permisos, aunque estos estuvieran otorgados previamente.

Otros

  • La propiedad de los objetos incluidos en el esquema puede transferirse a cualquier entidad de seguridad de nivel de base de datos.
  • El espacio de nombres de los objetos tendrá la forma servidor.basededatos.esquema.objeto.
  • El esquema dbo es el esquema predeterminado de cada base de datos y pertenece a la cuenta de usuario dbo.

Subconsultas correlacionadas

  • Utilizan datos de la consulta principal para filtrar los resultados de la subconsulta.
  • Pueden utilizar predicados como EXISTS o NOT EXISTS.
  • Pueden utilizarse con operadores como IN, NOT IN, SOME, ANY, ALL.

Subconsultas en la cláusula HAVING

  • Se pueden aplicar igual que en la cláusula WHERE.
  • Se utilizan funciones de agregado en lugar de columnas de la tabla principal.

Consultas multitablas

  • Permiten consultar datos de más de una tabla.
  • Se puede listar más de una tabla en la cláusula FROM.
  • La combinación de tablas en el FROM crea una sola tabla (producto cartesiano de todas las tablas).
  • Se utilizan consultas JOIN para combinar filas de dos o más tablas basándose en un campo común.

Consultas por grupos

  • La cláusula GROUP BY agrupa filas según las columnas especificadas.
  • La cláusula HAVING especifica condiciones de búsqueda para grupos de filas.
  • Se pueden utilizar funciones de agregación para realizar cálculos en los datos agrupados.
  • Algunas de las funciones de agregación más comunes en SQL son: SUM, AVG, MAX, MIN, COUNT.

Consultas anidadas

  • Son subconsultas que se incluyen en otra consulta SELECT.
  • La subconsulta es otra consulta SELECT que siempre está entre paréntesis.
  • Pueden devolver un único valor, una fila o una tabla.
  • Las subconsultas en la cláusula SELECT solo pueden devolver un único valor.
  • Las subconsultas en la cláusula FROM pueden devolver varias filas y columnas.

Lenguaje SQL

  • Es un lenguaje estándar ANSI/ISO de definición, manipulación y control de bases de datos relacionales.
  • Es un lenguaje declarativo: solo hay que indicar qué se quiere hacer.

Tipos de datos

  • SQL tiene sus propios tipos de datos para representar diferentes tipos de información en una base de datos.

Operadores

  • Se pueden utilizar operadores de comparación como =, <, >, <=, >=, <>.
  • Se pueden utilizar operadores lógicos como AND, OR, NOT.

La sentencia SELECT

  • Tiene el siguiente formato: SELECT [elemento] FROM [tabla].
  • El elemento puede ser una columna de la tabla o una expresión.
  • La opción AS nos permite renombrar las columnas que queremos seleccionar por un alias.
  • Si ponemos DISTINCT, nos aparecerán las filas resultantes sin repeticiones.
  • Con la sentencia SELECT FROM podemos seleccionar todas las columnas de una tabla con todas las filas.
  • Si queremos seleccionar filas de una tabla, es preciso añadir la cláusula WHERE.

Consultas por grupos

  • La cláusula GROUP BY se utiliza para agrupar filas según las columnas especificadas.
  • La cláusula HAVING especifica condiciones de búsqueda para grupos de filas, similar a la cláusula WHERE pero para grupos.
  • Los factores de agrupación de la cláusula GROUP BY deben ser, como mínimo, las columnas que figuran en SELECT, exceptuando las columnas afectadas por funciones de agregación.
  • Se pueden utilizar funciones de agregado para realizar cálculos en los datos agrupados, como SUM, AVG, MAX, MIN, COUNT, entre otras.

Consultas anidadas

  • Una consulta anidada es una subconsulta que se incluye en otra consulta SELECT.
  • La subconsulta es otra consulta SELECT que siempre está entre paréntesis y se puede colocar en cualquier parte de la consulta SELECT.
  • Las subconsultas pueden devolver un único valor, una fila o una tabla.
  • Las subconsultas en la cláusula SELECT solo pueden devolver un único valor.
  • Las subconsultas en la cláusula FROM pueden devolver varias filas y columnas.

Subconsultas correlacionadas

  • Son un tipo de subconsulta que utiliza datos de la consulta principal para filtrar los resultados de la subconsulta.
  • La subconsulta utiliza valores de la consulta principal para realizar sus cálculos.
  • Se pueden utilizar con predicados como EXISTS o NOT EXISTS.

Subconsultas en la cláusula HAVING

  • Se pueden aplicar subconsultas en la cláusula HAVING, similar a la cláusula WHERE.
  • En lugar de utilizar columnas, se utilizan funciones de agregado en las comparaciones.

Consultas multitablas

  • Se pueden consultar datos de más de una tabla haciendo combinaciones de columnas de tablas diferentes.
  • La combinación de tablas en el FROM crea una sola tabla, resultado del producto cartesiano de todas las tablas.
  • Se pueden utilizar consultas JOIN para combinar filas de dos o más tablas basándose en un campo común entre ellas.
  • El tipo de JOIN que se puede utilizar es LEFT JOIN, que mantiene todas las filas de la tabla izquierda.

Operaciones de DDL

  • CREATE: se utiliza para crear nuevos objetos en la base de datos, como tablas, vistas, índices, procedimientos almacenados, funciones, etc.
  • DROP: se utiliza para eliminar objetos de la base de datos, como tablas, vistas, índices, procedimientos almacenados, funciones, etc.
  • ALTER: se utiliza para modificar la estructura de un objeto existente en la base de datos, como una tabla, vista, procedimiento almacenado, función, etc.
  • GRANT: se utiliza para otorgar permisos a los usuarios para acceder a objetos específicos de la base de datos.
  • REVOKE: se utiliza para revocar permisos otorgados previamente a los usuarios para acceder a objetos específicos de la base de datos.

Procedimiento almacenado

  • Es una rutina o programa que se almacena en una base de datos relacional con código SQL.
  • Los procedimientos almacenados pueden recibir parámetros de entrada y de salida.
  • Los procedimientos almacenados pueden utilizar variables para almacenar valores temporales.

Consultas por grupos

  • La cláusula GROUP BY se utiliza para agrupar filas según las columnas especificadas.
  • La cláusula HAVING especifica condiciones de búsqueda para grupos de filas.
  • Los factores de agrupación de la cláusula GROUP BY deben ser, como mínimo, las columnas que figuran en SELECT, exceptuando las columnas afectadas por funciones de agregación.
  • Se pueden utilizar funciones de agregado para realizar cálculos en los datos agrupados.
  • Algunas de las funciones de agregado más comunes en SQL son: COUNT, SUM, AVG, MAX, MIN, GROUPING.

Consultas anidadas

  • Una consulta anidada es una subconsulta que se incluye en otra consulta SELECT.
  • La subconsulta es otra consulta SELECT que siempre está entre paréntesis.
  • Las subconsultas se pueden colocar en cualquier parte de la consulta SELECT, pero se suelen encontrar en la cláusula WHERE o HAVING.
  • Las subconsultas pueden devolver un único valor, una fila o una tabla.

Subconsultas correlacionadas

  • Son un tipo de subconsulta que utiliza datos de la consulta principal para filtrar los resultados de la subconsulta.
  • Se utiliza con los predicados EXISTS, NOT EXISTS, IN, NOT IN, SOME, ANY, ALL.

Subconsultas en la cláusula HAVING

  • Se puede aplicar lo mismo descrito en el apartado de subconsultas anidadas en la cláusula WHERE, pero en este caso en la cláusula HAVING.
  • Se utiliza funciones de agregado en lugar de columnas en las comparaciones.

Consultas multitablas

  • Se puede listar más de una tabla en la cláusula FROM para consultar datos de varias tablas.
  • La combinación de tablas en el FROM crea una sola tabla resultado del producto cartesiano de todas las tablas.
  • Se deben asociar las columnas de las diferentes tablas para obtener el resultado esperado.
  • Se puede utilizar la cláusula JOIN para combinar filas de dos o más tablas basándose en un campo común entre ellas.
  • Los tipos de join son: LEFT JOIN, RIGHT JOIN, INNER JOIN.

Lenguaje SQL

  • El SQL es el lenguaje estándar ANSI/ISO de definición, manipulación y control de bases de datos relacionales.
  • Es un lenguaje declarativo, solo hay que indicar qué se quiere hacer.

Tipos de datos

  • Los tipos de datos en SQL son: INTEGER, SMALLINT, DECIMAL, NUMERIC, FLOAT, REAL, DATE, TIME, TIMESTAMP, CHAR, VARCHAR, BIT.

Operadores

  • Los operadores de comparación en SQL son: =, <, >, <=, >=, <>, !=
  • Los operadores lógicos en SQL son: AND, OR, NOT.

La sentencia SELECT

  • La sentencia SELECT FROM tiene el siguiente formato: SELECT elemento FROM tabla.
  • La opción AS nos permite renombrar las columnas que queremos seleccionar por un alias.
  • La opción DISTINCT nos muestra las filas resultantes sin repeticiones.
  • La cláusula WHERE nos permite obtener las filas que cumplen la condición especificada en la consulta.

Servidor Web

  • Un servidor web consta de una sección core y módulos que aportan funcionalidad, como mod_php para trabajar con PHP.
  • Apache Tomcat es un servidor web que se prepara para la ejecución de código Java con su MVJ.

Características de Tomcat

  • Tomcat es un servidor web con soporte para servlets y JSPs.
  • Incluye un contenedor de servlets que maneja solicitudes HTTP y genera contenido web dinámicamente.
  • Proporciona una consola de administración web para configurar y gestionar el servidor.
  • No se considera un servidor de aplicaciones porque no es compatible con todas las especificaciones Jakarta EE.

Contenedores de Servlets en Tomcat

  • Contenedores de Servlets stand-alone (independientes): modo por defecto utilizado por Tomcat.
  • Contenedores de Servlets como complemento a otros servidores web.
  • Contenedores de Servlets se pueden dividir en:
    • Engine: analiza las cabeceras HTTP y las deriva al Host (virtual Host) correspondiente.
    • Host: representa un host (o un host virtual) donde se despliegan las aplicaciones.
    • Context: representa cada aplicación web desplegada en el contenedor Tomcat.

Estructura Física de Tomcat

  • La estructura de directorios de Tomcat incluye:
    • bin: ejecutables y scripts para arrancar y parar Tomcat.
    • common: clases y librerías compartidas entre Tomcat y las aplicaciones web.
    • conf: ficheros de configuración.
    • logs: directorio donde se guardan los logs.
    • server: clases que componen Tomcat.
    • shared: clases compartidas por todas las aplicaciones web.
    • webapps: directorio donde se colocan todas las aplicaciones web.
    • work y temp: directorios para almacenar información temporal.

Configuración de Tomcat

  • La configuración más importante se encuentra en dos ficheros: server.xml y web.xml.
  • server.xml: fichero de configuración global de Tomcat.
  • web.xml: fichero de configuración global para aplicaciones web con servlets.
  • Otros ficheros de configuración: tomcat-users.xml, catalina.policy.

Tipos de Contenedores de Servlets

  • Contenedores de Servlets dentro-de-proceso (inprocess): la MVJ se encuentra dentro del servidor web.
  • Contenedores de Servlets fuera-de-proceso (outprocess): la MVJ se encuentra fuera del servidor web.

Estructura Lógica (Módulos Tomcat)

  • Tomcat está compuesto por módulos cuyo comportamiento es altamente configurable.
  • La estructura general de los módulos se muestra en la siguiente figura:
    • Server: es el propio Tomcat.
    • GlobalNamingResources: define recursos JNDI globales a todas las aplicaciones.
    • Service: un objeto que representa el sistema formado por un conjunto de conectores.
    • Connector: representa el endpoint que recibe las peticiones y las pasa al engine.
    • Engine: analiza las cabeceras HTTP y las deriva al Host correspondiente.

Tipos de Contenedores de Servlets

  • Existen dos tipos de contenedores de Servlets: in-process (dentro del servidor web) y out-process (fuera del servidor web).
  • En los contenedores out-process, el servidor web y la MVJ se comunican a través de sockets TCP/IP.

Estructura de Tomcat

  • Tomcat está compuesto por módulos cuyo comportamiento es altamente configurable.
  • La estructura general de los módulos se muestra en la figura adjunta.

Módulos de Tomcat

  • [Server]: Representa el contenedor de servlets Catalina completo.
  • [GlobalNamingResources]: Define recursos JNDI globales a todas las aplicaciones.
  • [Service]: Un objeto que representa el sistema formado por un conjunto de conectores que reciben las peticiones de los clientes y las pasan a un único engine.
  • [Connector]: Representa el endpoint que recibe las peticiones y las pasa al engine.
  • [Engine]: Analiza las cabeceras HTTP y las deriva al host correspondiente.
  • [Host]: Representa un host virtual donde se despliegan las aplicaciones.
  • [Context]: Representa cada aplicación web desplegada en el contenedor Tomcat.

Estructura Física de Tomcat

  • La estructura de directorios de Tomcat incluye:
    • bin: ejecutables y scripts para arrancar y parar Tomcat.
    • common: clases y librerías compartidas entre Tomcat y las aplicaciones web.
    • conf: ficheros de configuración.
    • logs: directorio donde se guardan los logs.
    • server: las clases que componen Tomcat.
    • shared: clases compartidas por todas las aplicaciones web.
    • webapps: directorio donde se colocan todas las aplicaciones web.
    • work y temp: directorios para almacenar información temporal.

Configuración de Tomcat

  • La configuración de Tomcat se encuentra en dos ficheros: server.xml y web.xml.
  • server.xml: fichero de configuración global de Tomcat.
  • web.xml: fichero de configuración global para aplicaciones web con servlets.
  • Otros ficheros de configuración importantes: tomcat-users.xml, catalina.policy.

Características de Tomcat

  • Tomcat es un servidor web con soporte para servlets y JSPs.
  • Incluye un contenedor de servlets y una consola de administración web.
  • No se considera un servidor de aplicaciones completa, ya que no tiene contenedor de EJBs.

Sistemas de Control de Versiones Locales

  • Un método común de control de versiones es copiar archivos a otro directorio, pero esto es propenso a errores.
  • Los programadores desarrollaron VCS locales que contenían una simple base de datos para llevar el registro de todos los cambios realizados a los archivos.

Sistemas de Control de Versiones Centralizados

  • Estos sistemas, como Subversion y Perforce, tienen un servidor central que contiene todos los archivos versionados y varios clientes que descargan los archivos desde ese lugar central.
  • Ventajas:
    • Todos los desarrolladores saben lo que otros están trabajando.
    • Los administradores tienen control detallado sobre qué puede hacer cada usuario.
    • Es más fácil administrar un CVCS que bases de datos locales en cada cliente.
  • Desventajas:
    • El servidor centralizado puede caer, impidiendo la colaboración y el guardado de cambios.

Sistemas de Control de Versiones de Código Fuente

  • Son herramientas que permiten a los desarrolladores registrar y controlar los cambios en el código fuente de un proyecto de software.
  • Ventajas:
    • Mantener el histórico de todos los cambios realizados sobre archivos y carpetas.
    • Comparar un punto del tiempo con otro para conocer los cambios exactos.
    • Conocer el autor de cada cambio y facilitar el trabajo en paralelo.
  • Ejemplos de sistemas de control de versiones de código fuente:
    • Git: popular y utilizado en la actualidad, creado para el desarrollo del kernel de Linux.
    • Subversion (SVN): sistema de control de versiones centralizado, aunque ha perdido popularidad frente a Git.
    • Mercurial: sistema de control de versiones distribuido utilizado en proyectos de software libre y de código abierto.
    • Perforce: sistema de control de versiones comercial utilizado principalmente en proyectos de gran envergadura.

Arquitecturas de Almacenamiento

  • Los sistemas de control de versiones de código fuente pueden utilizar diferentes arquitecturas de almacenamiento para guardar los archivos de código fuente y los metadatos asociados con ellos.
  • Problemas de arquitecturas de almacenamiento:
    • Si el disco duro se corrompe, se perderá toda la información del proyecto, excepto las copias instantáneas en máquinas locales.

Sistemas de Control de Versiones Distribuidos

  • Ofrecen soluciones a los problemas de los sistemas centralizados, como la pérdida de datos en caso de fallo del servidor.
  • Características:
    • Los clientes no solo descargan la última copia instantánea de los archivos, sino que se replica completamente el repositorio.
    • Cada clon es una copia completa de todos los datos.
  • Ejemplos de sistemas de control de versiones distribuidos:
    • Git
    • Mercurial
    • Bazaar
    • Darcs

Flujos de Trabajo

  • El flujo de trabajo de un sistema de control de versiones indica cómo se relacionan los usuarios para colaborar entre sí en la consecución de los objetivos del proyecto.
  • Tipos de flujos de trabajo:
    • Flujo de trabajo centralizado: cada desarrollador es un nodo de trabajo más o menos en igualdad con respecto al repositorio central.
    • Flujo de trabajo distribuido: cada desarrollador es potencialmente un nodo o un repositorio, permitiendo contribuir a otros repositorios y mantener un repositorio público.

Git Status

  • El comando git status se utiliza para ver qué archivos permanecen sin fusionar en un momento conflictivo de una fusión.
  • El comando git status muestra los archivos que tienen conflictos que no se han resuelto.

Conflictos

  • Los archivos conflictivos contienen marcadores especiales de resolución de conflictos que guían al usuario cuando edite los archivos implicados.
  • Para resolver el conflicto, se debe elegir manualmente el contenido de uno o de otro lado y eliminar las líneas de conflicto.
  • Tras resolver todos los bloques conflictivos, se deben lanzar comandos git add para marcar cada archivo modificado.

Fusión

  • Git crea una nueva instantánea (snapshot) resultante de la fusión a tres bandas y crea automáticamente una nueva confirmación de cambios (commit) que apunta a ella.
  • Este proceso se conoce como "fusión confirmada" y tiene más de un padre.
  • Git determina automáticamente el mejor ancestro común para realizar la fusión.

Resolución de Conflictos

  • En algunas ocasiones, los procesos de fusión no son fluidos y se producen conflictos.
  • Si hay modificaciones dispares en una misma porción de un mismo archivo en las dos ramas que se intentan fusionar, Git no puede fusionarlas directamente.
  • Se debe resolver el conflicto manualmente antes de que Git pueda crear una nueva fusión confirmada.

Ramas

  • La rama Hotfix se crea para hacer alguna corrección urgente y se incorpora a la rama master para ponerlos en producción.
  • La rama iss53 se puede fusionar con la rama master utilizando el comando git merge.
  • Se puede eliminar la rama hotfix después de fusionarla con la rama master, ya que no se necesita más.

Seguimiento personalizado de los estudiantes

  • Las plataformas de gestión del aprendizaje permiten hacer seguimientos constantes y personalizados de los estudiantes.
  • Estas plataformas deben poseer funcionalidades mínimas, como herramientas de gestión de contenidos, comunicación y colaboración, seguimiento y evaluación, y administración y asignación de permisos.

Funcionalidades mínimas

  • Herramientas de gestión de contenidos:
    • Permite al profesor poner a disposición del alumno información en forma de archivos (pdf, xls, doc, txt, html...) organizados a través de directorios y carpetas.
  • Herramientas de comunicación y colaboración:
    • Foros de debate e intercambio de información.
    • Salas de chat.
    • Mensajería interna del curso con posibilidad de enviar mensajes individuales y/o grupales.
  • Herramientas de seguimiento y evaluación:
    • Cuestionarios editables por el profesor para evaluación del alumno y de autoevaluación.
    • Tareas.
    • Informes de la actividad de cada alumno.
    • Planillas de calificación.
  • Herramientas de administración y asignación de permisos:
    • Autentificación con nombre de usuario y contraseña para usuarios registrados.

Gestión de usuarios

  • Existe un usuario especial que es el 'Administrador principal', que tiene el id de usuario más bajo (normalmente es el primer usuario administrador que se creó).
  • El administrador principal es el único que puede asignar (o eliminar) otros usuarios para que sean administradores.
  • Los administradores pueden hacer cualquier cosa en cualquier parte del sitio.
  • Para que un administrador pueda dar de alta un usuario para que pueda acceder a un curso, primero hay que darle de alta en el sitio.
  • Los usuarios pueden tener diferentes roles: estudiante, profesor, administrador, etc.

Gestión de roles

  • Rol de administrador:
    • Puede "hacer todo" en el sitio.
  • Rol de mánager (gestor):
    • Un rol de administrador menor.
  • Rol de creador de curso:
    • Puede crear cursos.
  • Rol de profesor:
    • Puede gestionar y añadir contenidos a los cursos.
    • Puede calificar a los estudiantes.
  • Rol de profesor no-editor:
    • Puede calificar a los estudiantes, pero no puede editar los cursos.
  • Rol de estudiante:
    • Puede acceder y participar en cursos.
  • Rol de invitado:
    • Las personas que visitan el sitio pueden entrar como invitados y consultar los cursos, pero no pueden participar.

Gestión de cursos

  • Un curso es un espacio dentro de un sitio Moodle en donde los profesores pueden añadir materiales de aprendizaje para sus estudiantes.
  • Un profesor puede tener más de un curso y un curso puede incluir a más de un profesor y más de un grupo de estudiantes.
  • Para poder añadir contenido a un curso debe tener rol de administrador, de creador de cursos o profesor de ese curso.
  • Se puede crear un curso de dos formas:
    • Crear un nuevo curso vacío.
    • Subir un curso existente de un sitio Moodle diferente.

Contenido de un curso

  • Recursos:
    • Creación de una página de texto.
    • Creación de una página Web.
    • Enlace a un fichero o sitio Web.
    • Visualizar directorio.
    • Insertar etiqueta.
    • Añadir Paquete de contenido IMS.
  • Actividades:
    • Son las actividades en las que pueden participar los alumnos.

Seguimiento personalizado de los estudiantes

  • Las plataformas de gestión del aprendizaje permiten hacer seguimientos constantes y personalizados de los estudiantes.
  • Estas plataformas deben poseer funcionalidades mínimas, como herramientas de gestión de contenidos, comunicación y colaboración, seguimiento y evaluación, y administración y asignación de permisos.

Funcionalidades mínimas

  • Herramientas de gestión de contenidos:
    • Permite al profesor poner a disposición del alumno información en forma de archivos (pdf, xls, doc, txt, html...) organizados a través de directorios y carpetas.
  • Herramientas de comunicación y colaboración:
    • Foros de debate e intercambio de información.
    • Salas de chat.
    • Mensajería interna del curso con posibilidad de enviar mensajes individuales y/o grupales.
  • Herramientas de seguimiento y evaluación:
    • Cuestionarios editables por el profesor para evaluación del alumno y de autoevaluación.
    • Tareas.
    • Informes de la actividad de cada alumno.
    • Planillas de calificación.
  • Herramientas de administración y asignación de permisos:
    • Autentificación con nombre de usuario y contraseña para usuarios registrados.

Gestión de usuarios

  • Existe un usuario especial que es el 'Administrador principal', que tiene el id de usuario más bajo (normalmente es el primer usuario administrador que se creó).
  • El administrador principal es el único que puede asignar (o eliminar) otros usuarios para que sean administradores.
  • Los administradores pueden hacer cualquier cosa en cualquier parte del sitio.
  • Para que un administrador pueda dar de alta un usuario para que pueda acceder a un curso, primero hay que darle de alta en el sitio.
  • Los usuarios pueden tener diferentes roles: estudiante, profesor, administrador, etc.

Gestión de roles

  • Rol de administrador:
    • Puede "hacer todo" en el sitio.
  • Rol de mánager (gestor):
    • Un rol de administrador menor.
  • Rol de creador de curso:
    • Puede crear cursos.
  • Rol de profesor:
    • Puede gestionar y añadir contenidos a los cursos.
    • Puede calificar a los estudiantes.
  • Rol de profesor no-editor:
    • Puede calificar a los estudiantes, pero no puede editar los cursos.
  • Rol de estudiante:
    • Puede acceder y participar en cursos.
  • Rol de invitado:
    • Las personas que visitan el sitio pueden entrar como invitados y consultar los cursos, pero no pueden participar.

Gestión de cursos

  • Un curso es un espacio dentro de un sitio Moodle en donde los profesores pueden añadir materiales de aprendizaje para sus estudiantes.
  • Un profesor puede tener más de un curso y un curso puede incluir a más de un profesor y más de un grupo de estudiantes.
  • Para poder añadir contenido a un curso debe tener rol de administrador, de creador de cursos o profesor de ese curso.
  • Se puede crear un curso de dos formas:
    • Crear un nuevo curso vacío.
    • Subir un curso existente de un sitio Moodle diferente.

Contenido de un curso

  • Recursos:
    • Creación de una página de texto.
    • Creación de una página Web.
    • Enlace a un fichero o sitio Web.
    • Visualizar directorio.
    • Insertar etiqueta.
    • Añadir Paquete de contenido IMS.
  • Actividades:
    • Son las actividades en las que pueden participar los alumnos.

Gestión de la Calidad del Software

  • La gestión de la calidad del software es indispensable para asegurar que el software cumple con los estándares y requisitos de calidad especificados.
  • La gestión de la calidad del software implica la adopción de buenas prácticas en toda la vida útil del software para contribuir al éxito de un proyecto de software y para garantizar la satisfacción del cliente.

Factores de Calidad

  • Corrección: El grado en que una aplicación satisface sus especificaciones y consigue los objetivos encomendados por el cliente.
  • Fiabilidad: El grado en que se puede esperar de una aplicación lleve a cabo las operaciones especificadas y con la precisión requerida.
  • Eficiencia: La cantidad de recursos hardware y software que necesita una aplicación para realizar las operaciones con los tiempos de respuesta adecuados.
  • Integridad: El grado con que puede controlarse el acceso al software o a los datos a personal no autorizado.
  • Robustez: El sistema funciona correctamente en situaciones especiales.
  • Facilidad de Uso: El esfuerzo requerido para aprender el manejo de una aplicación, trabajar con ella, introducir datos y conseguir resultados.
  • Facilidad de Mantenimiento: El esfuerzo requerido para localizar y reparar errores.
  • Facilidad de Prueba: El esfuerzo requerido para probar una aplicación de forma que cumpla con lo especificado en los requisitos.

Medidas de Calidad

  • Porcentaje de pruebas aprobadas: Esta medida indica la cantidad de pruebas que se han aprobado con éxito.
  • Disponibilidad: Esta medida indica la cantidad de tiempo que el software está disponible para su uso.

Modelos de Calidad

  • Modelo de McCall: Descompone el concepto genérico de calidad en tres capacidades importantes para un producto software:-operación, revisión y transición.
  • El modelo de McCall se enfoca en diferentes capacidades o características o atributos u objetivos que debe cumplir un software de calidad.
  • El modelo proporciona una guía para resolver problemas y para la detección de riesgos.

Inspecciones y Auditorías

  • Inspecciones: Técnica de calidad más formal que las revisiones, utilizada para identificar errores y defectos en el software, la documentación y los procesos.
  • Auditorías: Técnica de calidad utilizada para evaluar la conformidad del software con los requisitos, los estándares y los procedimientos de la organización.

Mediciones de la Calidad del Software

  • El porcentaje de pruebas aprobadas indica la cantidad de pruebas que se han aprobado con éxito, lo que signinica que el software ha pasado la mayoría de las pruebas y es más confiable.
  • La disponibilidad indica la cantidad de tiempo que el software está disponible para su uso, si el software tiene una alta disponibilidad, significa que los usuarios pueden acceder a él con mayor frecuencia y confianza.

Modelo de Calidad de McCall

  • El modelo de Calidad de McCall se centra en tres capacidades importantes para un producto software: operación, cambio y transición.
  • La capacidad de operación se descompone en factores como corrección, fiabilidad, eficiencia, integridad, robustez y facilidad de uso.
  • La capacidad de cambio se refiere a la portabilidad, reusabilidad, interoperabilidad y escalabilidad del software.
  • La capacidad de transición se refiere a la facilidad de instalación, configuración y retirada del software.

Inspecciones y Auditorías

  • Las inspecciones son una técnica de calidad más formal que las revisiones, utilizadas para identificar errores y defectos en el software, la documentación y los procesos.
  • Las auditorías son una técnica de calidad utilizada para evaluar la conformidad del software con los requisitos, los estándares y los procedimientos de la organización.

Fiabilidad del Software

  • La fiabilidad del software se refiere a la capacidad del software para funcionar correctamente y sin fallos bajo condiciones específicas durante un período de tiempo determinado.
  • La fiabilidad del software se puede definir en términos estadísticos como la probabilidad de operación libre de fallos en un entorno determinado y durante un tiempo específico.
  • Existen medidas de fiabilidad del software, como la tasa de fallas, el tiempo medio entre fallas (TMEF) y la tasa de errores encontrados.

Desarrollo de Software

  • El desarrollo de software se puede dividir en etapas bien definidas y secuenciales, como el planteamiento de escenarios técnicos, análisis de requisitos, diseño, codificación, pruebas y mantenimiento.

Análisis de Requisitos

  • Se identifican y definen los requisitos del software a desarrollar, seguidos de su documentación y revisión por el cliente.
  • Se define el "qué" debe realizar el sistema, identificando la información a procesar, las funciones a realizar, y las interfaces con otros sistemas existentes.

Diseño

  • Se define la estructura de datos, la arquitectura del software, el detalle de los procedimientos y la caracterización de la interfaz.
  • Se define el "cómo" se implementará el sistema.

Modelos de Ciclo de Vida

  • El modelo de ciclo de vida clásico es un modelo secuencial lineal que se basa en la premisa de que el desarrollo de software se puede dividir en etapas bien definidas y secuenciales.
  • El modelo de prototipos es útil cuando los requisitos del software no están completamente definidos o pueden cambiar durante el proceso de desarrollo.
  • El modelo de ciclo de vida incremental es un modelo iterativo e incremental para el desarrollo de software que divide el desarrollo en pequeñas partes o incrementos que se desarrollan y entregan de forma independiente.

Mantenimiento

  • Se realizan correcciones y mejoras al software después de su lanzamiento.
  • Hay tres tipos de mantenimientos: correctivo, adaptativo y proactivo.

Ciclo de Vida de Software

  • Es un marco de referencia que contiene los procesos, las actividades y las tareas involucradas en el desarrollo, la explotación y el mantenimiento de un producto de software.
  • Los modelos de ciclo de vida del software definen una serie de pasos que hay que dar de forma sistemática el desarrollo del software.

Pruebas de Software

  • Las pruebas de software se realizan en diferentes etapas del ciclo de vida y tienen como objetivo identificar y corregir errores, asegurar que el software cumpla con los requisitos y expectativas del usuario, y evaluar la calidad y el rendimiento del software.

Pruebas de Caja Negra

  • Son una técnica de prueba de software que se utiliza para evaluar el comportamiento funcional del software sin tener en cuenta su estructura interna.
  • El tester no tiene acceso al código fuente del software y no conoce su diseño interno.
  • Las pruebas se basan únicamente en la entrada y salida del software.
  • El objetivo es desarrollar pruebas que validen que el software cumple con los requisitos funcionales.
  • Algunas técnicas comunes de prueba de caja negra son:
    • Pruebas de equivalencia
    • Pruebas de valores límite
    • Tablas de decisión
    • Prueba de Transición de Estado

Pruebas de Caja Blanca

  • El objetivo es realizar pruebas que cubran la estructura interna de un sistema, por lo que también se denominan pruebas de caja transparente o pruebas de caja abierta.
  • El código es visible para los testers.
  • Las pruebas de caja blanca validan que el software cumple con los requisitos funcionales y no funcionales.
  • El objetivo es diseñar casos de prueba para que se ejecuten, al menos una vez, todas las sentencias del programa, y todas las condiciones tanto en su vertiente verdadera como falsa.
  • Criterios de cobertura lógica:
    • Cobertura de sentencias
    • Cobertura de decisión
    • Cobertura de condición

Ventajas y Desventajas

  • Ventajas de las pruebas de caja negra:
    • La prueba es imparcial porque el diseñador y el evaluador son independientes entre sí.
    • El evaluador no necesita conocimientos de ningún lenguaje de programación específico.
    • La prueba se realiza desde el punto de vista del usuario, no del diseñador.
  • Desventajas de las pruebas de caja negra:
    • Los casos de prueba son difíciles de diseñar.
    • Probar cada flujo de entrada posible no es realista porque llevaría una cantidad de tiempo excesiva.

Herencia

  • La herencia es un mecanismo que permite a una clase (subclase) heredar atributos y métodos de otra clase (superclase).
  • La subclase incluye todos los atributos y métodos de la superclase y puede definir sus propios atributos y métodos adicionales.
  • Existen dos tipos de herencia: simple (heredar de una única clase) y múltiple (heredar de varias clases).

Polimorfismo

  • El polimorfismo es la capacidad de un objeto de tener diferentes comportamientos según el contexto.
  • Existen varios tipos de polimorfismo: universal, ad-hoc, paramétrico, de inclusión, de sobrecarga y de coerción.
  • El polimorfismo paramétrico se refiere a la capacidad de definir varias funciones con el mismo nombre pero con parámetros diferentes.
  • El polimorfismo de inclusión (también llamado redefinición o subtipado) permite redefinir un método heredado de una clase base.

Lenguaje de Modelado Unificado (UML)

  • El UML es un lenguaje de modelado visual utilizado para describir sistemas y procesos complejos en la programación orientada a objetos.

Conceptos básicos de Orientación a Objetos

  • Los objetos contienen datos y funciones, y se caracterizan por tener una identidad, un estado y un comportamiento.
  • Los objetos se crean en tiempo de ejecución y se pueden interactuar entre sí para construir sistemas complejos.
  • Una clase es una descripción de un conjunto de objetos que comparten atributos, comportamiento, relaciones y semántica.
  • Las clases constan de atributos, métodos y constructores.
  • Los atributos proporcionan un lugar para almacenar el estado de un objeto, mientras que los métodos proporcionan el comportamiento del objeto.

Vulnerabilidades en la Seguridad Informática

  • Las vulnerabilidades de procesos surgen cuando los métodos que deberían proteger los equipos y sistemas informáticos son insuficientes, como el uso de contraseñas débiles o la falta de sistemas de autenticación eficientes.
  • Las vulnerabilidades humanas son errores de los usuarios que ponen en riesgo el hardware, las redes y los datos confidenciales, y son la amenaza más crítica para una empresa, especialmente con el trabajo colaborativo y remoto.
  • Las vulnerabilidades de día cero son brechas en un software que el fabricante desconoce, y el atacante descubre antes de que el fabricante tenga oportunidad de actuar.

Phishing

  • El phishing es una técnica de ingeniería social utilizada por los ciberdelincuentes para engañar a los usuarios y obtener información confidencial, como contraseñas, números de tarjetas de crédito y otra información personal.
  • Los ciberdelincuentes utilizan correos electrónicos, mensajes de texto, mensajes instantáneos y sitios web fraudulentos para llevar a cabo el phishing.

Amenazas y Vulnerabilidades en los Sistemas de Información

  • Las organizaciones públicas o privadas dependen de la tecnología de los sistemas de información, y todos ellos tienen que enfrentarse con una amplia gama de amenazas y vulnerabilidades asociadas a los entornos informáticos.
  • Las amenazas pueden aprovechar las vulnerabilidades de un activo y pueden venir de cualquier parte, interna o externa.
  • Las vulnerabilidades son una debilidad o un defecto en la tecnología o en los procesos relacionados con la información, y se consideran características propias de los sistemas de información o de la infraestructura que los contienen.

Tipos de Vulnerabilidades

  • Vulnerabilidades de red: se ubican en la infraestructura del hardware, en el software o en procesos organizacionales del sistema, como ataques utilizando el protocolo de escritorio remoto (RDP), vulnerabilidades de servicios expuestos a internet (FTP, SSH, TELNET, etc.) y vulnerabilidades en los sistemas operativos y navegadores.
  • Vulnerabilidades de día cero: brechas en un software que el fabricante desconoce, y el atacante descubre antes de que el fabricante tenga oportunidad de actuar.

Ransomware

  • El ransomware es un negocio muy lucrativo para los atacantes, ya que el pago de rescates puede ser rentable y fácil de conseguir, especialmente cuando las víctimas no tienen copias de seguridad adecuadas.
  • El ransomware se propaga a través de vulnerabilidades en el sistema operativo, y una vez infectado el sistema, cifra los archivos de la víctima y exige un rescate en Bitcoin a cambio de la clave de descifrado.

Inyección de Código

  • La inyección de código es una técnica de ataque en la que se inserta código malicioso en una aplicación con el fin de alterar su comportamiento y obtener acceso no autorizado a los datos o sistemas.
  • Los tres tipos más comunes de inyección de código son la inyección de comandos del sistema operativo, la inyección de SQL y la inyección de Xpath.
  • La inyección de comandos del sistema operativo permite a un atacante inyectar y ejecutar comandos directamente en el sistema operativo en el que se ejecuta tu aplicación.

Temas técnicos convocatoria 2022.06.21 (Titulado Superior Analista): 7, 8, 9, 12, 14, 16, 17, 18, 19 , 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 33, 36, 37, 38, 40, 43 Se suponen asimilables a unos cuantos de la convocatoria 2024.04.24 de TGM Programador

Make Your Own Quizzes and Flashcards

Convert your notes into interactive study material.

Get started for free

More Quizzes Like This

Use Quizgecko on...
Browser
Browser