Contenidos
- Programación multiproceso:
- Teoría de procesos
- Conceptos
- Ejercicios
- Lanzar un programa en Kotlin
- 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 ping en Kotlin
- Lanzar programa que ejecute un ping dos veces en Kotlin
- Obtener información del proceso padre e hijo
- 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
- Programación multihilo:
- Teoría de hilos
- Conceptos
- Ejercicios
- Crear un hilo
- 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
- Sincronización
- Tablas de multiplicar con hilos
- Tablas de multiplicar utilizando coroutines en Kotlin
- 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 en Kotlin utilizando java.util.concurrent
- Programación de comunicaciones en red:
- Teoría de redes
- Conceptos
- Ejercicios
- 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
- 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
- Generación de servicios en red:
- 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
- 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:
- Teoría de programación segura
- Conceptos
- Ejercicios
- 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
- 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 AES (Advanced Encryption Standard) en Kotlin, utilizaremos la clase Cipher proporcionada por el paquete javax.crypto
- 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
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
- Función básica https://www.jesusninoc.com/07/05/crear-una-funcion-de-saludo-en-kotlin/
- Función main() https://www.jesusninoc.com/07/05/pasar-parametros-a-la-funcion-main-en-kotlin/
- Conceptos generales https://www.jesusninoc.com/07/02/conceptos-importantes-en-kotlin-relacionados-con-procesos-hilos-red-y-seguridad-son/
- Repaso de conceptos para manejar las shells (instalar Ubuntu Server)
- SSH, conexión de red que permita acceder
- Rutas
- Path y Classpath https://docs.oracle.com/javase/tutorial/essential/environment/paths.html
- Pasar parámetros en scripts (PowerShell) https://www.jesusninoc.com/02/17/pasar-parametros-en-scripts-de-powershell/
- Pasar parámetros en scripts (Bash) https://www.jesusninoc.com/02/17/pasar-parametros-en-scripts-de-bash/
- Procesos en Linux https://github.com/jesusninoc/ClasesPSP/blob/master/2022-10-03.md#procesos-en-linux-1
- Ejecutar dos comandos
- Almacenar la ejecución de un comando
- Multiproceso
- BCP
- Process status
- Estados de un proceso
- System
- Funciones
- Creación y ejecución de procesos
- Padre crear hijo
- Comunicación entre procesos: para capturar y leer la salida generada por el comando ping, debemos acceder al flujo de entrada (inputStream) del proceso. Esto puede parecer confuso, pero en este caso, el flujo de entrada (inputStream) del proceso se utiliza para leer los datos que provienen de la salida generada por el comando.
- Descriptores https://www.jesusninoc.com/02/27/crear-y-utilizar-una-tuberia-sin-nombre-en-linux/
- Pipes sin nombre https://www.jesusninoc.com/03/02/comunicar-dos-procesos-usando-pipes-sin-nombre-en-python/
- Pipes con nombre https://www.jesusninoc.com/03/03/comunicar-dos-procesos-usando-pipes-con-nombre-en-python/
- Sincronizar procesos
- Señales
- Creación procesos
- Programación concurrente
- Programación paralela
- Memorias compartidas https://github.com/jesusninoc/ClasesPSP/blob/master/2022-10-17.md#memorias-compartidas
- Señales https://github.com/jesusninoc/ClasesPSP/blob/master/2022-10-17.md#se%C3%B1ales
- Semáforos
- Programación distribuida
Ejercicios
Lanzar un programa en Kotlin
- https://www.jesusninoc.com/03/02/lanzar-un-programa-en-kotlin/
- https://www.jesusninoc.com/06/06/lanzar-un-programa-en-kotlin-2/
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 ping en Kotlin
Lanzar programa que ejecute un ping dos veces en Kotlin
Obtener información del proceso padre e hijo
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
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
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
Sincronización
Tablas de multiplicar con hilos
Tablas de multiplicar utilizando coroutines en Kotlin
Aplicación de recordatorio en Kotlin con Timer
Crear y administrar tareas concurrentes utilizando hilos en Kotlin
- https://www.jesusninoc.com/08/04/crear-y-administrar-tareas-concurrentes-utilizando-hilos-en-kotlin/
Productor-consumidor: Sincronización con colas en Kotlin
Productor-Consumidor en Kotlin utilizando java.util.concurrent
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
- Peticiones a servidores (GET, POST, fuerza bruta)
- URL
- URL (GET y POST)
- Scraping
- Conexión TCP/IP entre distintos sistemas
- Proyecto de conexión remota
- Sockets TCP y UDP
- Serializar https://www.jesusninoc.com/07/05/serializar-y-deserializar-un-objeto-almacenado-en-un-fichero-en-kotlin/
- Serializar JSON https://www.jesusninoc.com/07/05/serializar-y-deserializar-ficheros-json-con-gson-en-kotlin/
Ejercicios
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
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
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
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
Ejercicios
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
- https://www.jesusninoc.com/07/04/hash-sha-512-en-kotlin-utilizando-java-security/
- https://www.jesusninoc.com/07/07/generacion-de-resumenes-sha-512-en-kotlin/