Programación multiproceso:
- Ejecutables. Procesos. Servicios.
- Estados de un proceso.
- Hilos.
- Programación concurrente.
- Programación paralela y distribuida.
- Comunicación entre procesos.
- Gestión de procesos.
- Sincronización entre procesos.
- Programación de aplicaciones multiproceso.
Teoría de procesos
Conceptos
Ejercicios
Programación multiproceso en Python
Lanzar un programa en Kotlin
Lanzar un comando en Python con Flask
Ejecutar un comando de Windows y almacenar la salida en un archivo en Kotlin
Ejercicio: llamar desde Kotlin a un proceso en Linux con un script en Bash
Ejecutar un script desde PowerShell
Lanzar programa que ejecute el comando ping en Python con Flask
Lanzar programa que ejecute un ping dos veces en Kotlin
Obtener información del proceso padre e hijo en Python con Flask
Crear un proceso en Kotlin con la clase ProcessBuilder
Uso de waitFor() en procesos en Kotlin: espera a que un proceso finalice
Crear un proceso en Kotlin con la clase Runtime
Comunicar dos procesos
Comunicar dos procesos en Python
Realizar una comunicación entre dos procesos
Realizar una comunicación entre dos procesos en Python
Simulación de un ataque Man-in-the-Middle (MitM) en Python
Generador y ejecutor de código Python creado con la inteligencia artificial Gemini
Programación multihilo:
- Recursos compartidos por los hilos.
- Estados de un hilo. Cambios de estado.
- Elementos relacionados con la programación de hilos. Librerías y clases.
- Gestión de hilos.
- Sincronización de hilos.
- Compartición de información entre hilos.
- Programación de aplicaciones multihilo.
Teoría de hilos
Conceptos
- Hilos
- Estado
- Interrupción
- Coroutines
- Sincronización
Ejercicios
Crear un hilo en Python con Flask
Predicción concurrente de objetos en imágenes usando YOLO y hilos en Python
Formas de crear hilos en Kotlin
Crear un hilo y esperar a que se ejecute completamente el hilo
Carrera de tortuga y liebre
Carrera de tortuga y liebre (creando clases)
Crear un reloj sencillo en Kotlin mediante hilos
Ejecución concurrente
Estados y prioridades de los hilos en Kotlin
Interrumpir un hilo en Kotlin
Uso de coroutines
Ejecución de tareas con y sin hilos en Python
Sincronización
Tablas de multiplicar con hilos
Tablas de multiplicar utilizando coroutines en Kotlin
Hilos en Python (con y sin sincronización)
Aplicación de recordatorio en Kotlin con Timer
Crear y administrar tareas concurrentes utilizando hilos en Kotlin
Productor-consumidor: Sincronización con colas en Kotlin
Productor-consumidor: Sincronización con colas en Python
Productor-Consumidor en Kotlin utilizando java.util.concurrent
Simulación de acceso concurrente seguro a un archivo de registro
Programación de comunicaciones en red:
- Comunicación entre aplicaciones.
- Roles cliente y servidor.
- Elementos de programación de aplicaciones en red. Librerías.
- Sockets.
- Creación de sockets.
- Enlazado y establecimiento de conexiones.
- Utilización de sockets para la transmisión y recepción de información.
- Programación de aplicaciones cliente y servidor.
- Utilización de hilos en la programación de aplicaciones en red.
Teoría de redes
Conceptos
Ejercicios
Programación de red en Python
Conectar con una URL en Kotlin
Cómo conectar con una URL y cambiar el User-Agent
Realizar una petición HTTP POST en Kotlin
Comprobar si un puerto TCP está abierto en Kotlin
Servidor y cliente TCP básicos en Kotlin
Servidor y Cliente TCP en Kotlin utilizando clases distintas
Servidor y cliente UDP básicos en Kotlin
Enviar un mensaje UDP a un ordenador desde Python
Cliente y servidor para enviar objeto serializado por TCP en Kotlin (utilizando hilos)
Enviar una imagen entre un cliente y un servidor utilizando sockets TCP en Kotlin
MulticastSocket en Kotlin
Realizar una comunicación multicast entre un código en Android Studio y otro en IntelliJ IDEA
Enviar un mensaje TCP con Kotlin desde una aplicación en Android Studio a un servidor en IntelliJ IDEA
Enviar la posición del cursor mediante TCP con Kotlin desde una aplicación en Android Studio a un servidor en IntelliJ IDEA
Mover el ratón remotamente mediante TCP con Kotlin desde una aplicación en Android Studio a un servidor en IntelliJ IDEA
Crear un API muy simple con Kotlin
Crear un API muy simple con Kotlin que devuelve un contenido en formato JSON
Crear API en Python
Proyecto de conexión remota
Generación de servicios en red:
- Protocolos estándar de comunicación en red a nivel de aplicación (telnet, ftp, http, pop3, smtp, entre otros).
- Librerías de clases y componentes.
- Utilización de objetos predefinidos.
- Establecimiento y finalización de conexiones.
- Transmisión de información.
- Programación de aplicaciones cliente.
- Programación de servidores.
- Implementación de comunicaciones simultáneas.
Teoría de servicios en red
Conceptos
Ejercicios
Conexión a un servidor FTP con Kotlin
Descargar archivos FTP desde Kotlin
Subir un archivo a un FTP desde Kotlin
Realizar un resumen en SHA512 de un documento descargado por FTP en Kotlin
Enviar correos electrónicos utilizando la biblioteca JavaMail desde Kotlin
Conectarse a un servidor SSH en Kotlin
Realizar en Kotlin una suma mediante una interfaz que contiene los métodos que se ejecutarán de forma remota (RMI)
Envío de formulario entre un cliente y un servidor mediante RMI en Kotlin
Envío de datos de un formulario entre cliente y servidor mediante RMI en JavaFX con Kotlin
Leyendo y analizando un Archivo JSON en línea desde Kotlin
Utilización de técnicas de programación segura:
- Prácticas de programación segura.
- Criptografía de clave pública y clave privada.
- Principales aplicaciones de la criptografía.
- Protocolos criptográficos.
- Política de seguridad.
- Programación de mecanismos de control de acceso.
- Encriptación de información.
- Protocolos seguros de comunicaciones.
- Programación de aplicaciones con comunicaciones seguras.
Teoría de programación segura
Conceptos
- Criptografía
- Simetría
- Asimetría
Ejercicios
Utilización de técnicas de programación segura
Combinaciones de la primera fila del teclado en Kotlin
Mostrar propiedades (java.class.path», «java.home», «java.vendor», «java.version», «os.name», «os.version», «user.dir», «user.home», «user.name») utilizando y sin utilizar el gestor de seguridad en Kotlin
Codificación y Decodificación en Base 64 en Java
Obtención de listado de algoritmos hash disponibles en Kotlin
Hash SHA-512 en Kotlin
Generar un resumen HMAC-MD5 utilizando Kotlin
Cálculo de Hash SHA-512 en Kotlin con una semilla
Cálculo de Hash SHA-512 en Python con una semilla
Cifrado y descifrado simple de palabras en Kotlin
Cifrado simétrico TDEA (Triple Data Encryption Algorithm) en Kotlin utilizando la biblioteca Java de javax.crypto
Cifrado simétrico TDEA (Triple Data Encryption Algorithm) en Python
Cifrado simétrico AES (Advanced Encryption Standard) en Kotlin, utilizaremos la clase Cipher proporcionada por el paquete javax.crypto
Cifrado simétrico AES (Advanced Encryption Standard) en Python
Almacenar claves privadas y públicas
Cifrar y descifrar utilizando clave pública
Cifrar y descifrar con clave secreta que se ha transmitido mediante cifrado asimétrico
Socket SSL en Kotlin