Chuletas y apuntes de Informática y Telecomunicaciones

Problema del Barbero Dormilón: Soluciones con Monitores en Concurrencia

Informática y Telecomunicaciones4,87 KB

Problema del Barbero Dormilón con Monitores

A continuación se presentan tres variantes de solución al clásico problema del barbero dormilón, implementadas mediante monitores con variables de condición. Cada variante corresponde a una configuración distinta de la barbería.

Variante 1: k barberos, sin prioridad, con sillón y sala de espera

Parámetros: k barberos, sin prioridad, con sillón y sala de espera.

Procedimiento del barbero

void barbero(int barbero) {
    barberia.esperar_cliente(barbero);
    do {
        afeitar();
        barberia.avisar_sgte(barbero);
    } while (1);
}

void cliente() {
    barberia.solicitar_barbero();
}

Monitor de la barbería

condition barberos, clientes, afeitando[k];
int mi_barbero = -1;

entry void solicitar_
...
Continuar leyendo "Problema del Barbero Dormilón: Soluciones con Monitores en Concurrencia" »

Gestión de Paquetes RPM y Yum en Linux: Instalación, Runlevels, Compresión y Conexión PHP-MySQL

Informática y Telecomunicaciones4,98 KB

Gestión de Paquetes con Yum y RPM

Yum es el front-end de RPM.

  • Trabaja en red y busca paquetes en repositorios (directorios de paquetes ubicados en algún servidor de la red).
  • Utiliza los servidores HTTP (puerto 80) y FTP (puerto 21).
  • Sus archivos de configuración, con extensión .repo, contienen las direcciones de los repositorios.

Comandos básicos:

  • yum grouplist | more: muestra el contenido disponible en el disco.
  • yum groupinstall "servidor de base de datos": instala el grupo indicado.
  • service mysql start: inicia el programa.
  • service mysql stop: detiene el programa.

Creación de un repositorio local desde el disco

# mkdir /mnt/disco
# mount -t iso9660 /dev/sr0 /mnt/disco
# cp /etc/yum.repos.d/rhel-source.repo /etc/yum.repos.d/rhel-alumno.repo
# nano
...
Continuar leyendo "Gestión de Paquetes RPM y Yum en Linux: Instalación, Runlevels, Compresión y Conexión PHP-MySQL" »

Control de Transacciones en MySQL con InnoDB: Commit y Rollback Explicados

Informática y Telecomunicaciones4,17 KB

Introducción al Control de Transacciones en MySQL

A continuación, veremos mediante un ejemplo práctico cómo funciona el motor de almacenamiento InnoDB en MySQL al gestionar transacciones utilizando las sentencias BEGIN, ROLLBACK y COMMIT.

Creación de la Tabla y Datos Iniciales

Primero, creamos una tabla llamada innotest e insertamos algunos registros iniciales:

mysql> CREATE TABLE innotest (campo INT NOT NULL PRIMARY KEY) ENGINE = InnoDB;
Query OK, 0 rows affected (0.10 sec)

mysql> INSERT INTO innotest VALUES(1);
Query OK, 1 row affected (0.08 sec)

mysql> INSERT INTO innotest VALUES(2);
Query OK, 1 row affected (0.01 sec)

mysql> INSERT INTO innotest VALUES(3);
Query OK, 1 row affected (0.04 sec)

mysql> SELECT * FROM innotest;
+------
...
Continuar leyendo "Control de Transacciones en MySQL con InnoDB: Commit y Rollback Explicados" »

Desarrollo de Clases en Java: Gestión de Empleados y Sueldos

Informática y Telecomunicaciones5,66 KB

Introducción al Código en Java

A continuación se presenta la implementación de dos clases en Java diseñadas para la gestión de información de empleados, permitiendo el ingreso de datos, modificaciones mediante un menú interactivo, cálculo de aumentos y aplicación de descuentos.

Clase Principal: PpalEmpleado

Esta clase contiene el método main encargado de la interacción con el usuario a través de la consola, utilizando BufferedReader.

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class PpalEmpleado { public static void main(String args[]) throws Exception { String r, nom; int ed, porc; long suel; Empleado e[] = new Empleado[2]; BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

    for
...
Continuar leyendo "Desarrollo de Clases en Java: Gestión de Empleados y Sueldos" »

Código VBA para UserForm en Excel: ComboBox, validación de datos y botones

Informática y Telecomunicaciones7,88 KB

Código VBA para UserForm en Excel

A continuación se presenta el código VBA utilizado en un UserForm de Excel, que incluye la carga de elementos en un ComboBox, la validación de campos mediante la tecla Enter y el grabado de datos en una hoja de cálculo.

Evento Activate del UserForm

Este evento se utiliza únicamente para llenar los elementos que aparecerán en el ComboBox1.

Private Sub UserForm_Activate()
    ComboBox1.AddItem "Rancaguita"
    ComboBox1.AddItem "Santiaguitito"
    ComboBox1.AddItem "Viñitita"
    ComboBox1.AddItem "Concepcioncito"
    ComboBox1.AddItem "Chaitencitito"
    ComboBox1.AddItem "La Serena"
    ComboBox1.Text = "Seleccione una Opción"
End Sub

Evento Click del ComboBox

Este procedimiento permite que el cursor pase...

Continuar leyendo "Código VBA para UserForm en Excel: ComboBox, validación de datos y botones" »

Fundamentos de Redes: Medios de Transmisión, Codificación, Topologías y Estándares Ethernet

Informática y Telecomunicaciones10,9 KB

Medios de Transmisión

Los medios de transmisión constituyen el soporte físico o electromagnético por el cual viaja la información entre emisor y receptor.

Medios Cableados (Transmisión de Señales Eléctricas)

  • Balanceados: Constan de 2 conductores. Si hay interferencia exterior, esta afecta a ambos por igual y se cancela al realizar la diferencia en el receptor.
  • No balanceados: La señal de referencia es compartida; si sufre interferencia externa, el receptor capta la señal modificada.
  • Cable de Par Trenzado: Generalmente consta de 4 pares de hilos de cobre trenzados entre sí para reducir el acoplamiento cruzado y las interferencias:
    • UTP (Unshielded Twisted Pair): Sin blindaje exterior; trenzado por parejas. Común en redes de datos locales.
...
Continuar leyendo "Fundamentos de Redes: Medios de Transmisión, Codificación, Topologías y Estándares Ethernet" »

Estructuras en C++ para Gestión Hospitalaria: Médicos, Departamentos y Medicamentos con Ejemplos Prácticos

Informática y Telecomunicaciones11,01 KB

Boletín 4: Estructuras de Datos en C/C++

1. Definición de constantes y tipos

En el fichero estructura.h se definen las constantes y los tipos de datos necesarios para la aplicación:

#define MAXCAR 256      // Longitud máxima de una cadena
#define MAXMEDICOS 25   // Número máximo de médicos por departamento
#define MAXDPTO 15      // Número máximo de departamentos
#define MAX 20          // Tamaño máximo genérico de tablas

typedef char Cadena[MAXCAR];  // Definición de tipo cadena de caracteres

typedef enum {residente, adjunto, interino} Categoria;  // Tipo enumerado con las categorías profesionales

2. Estructura Médico

La estructura Medico agrupa los datos de un profesional sanitario:

typedef struct {
    Cadena nombre;
    Cadena
...
Continuar leyendo "Estructuras en C++ para Gestión Hospitalaria: Médicos, Departamentos y Medicamentos con Ejemplos Prácticos" »

Protocolos de Acceso al Medio, Cableado Estructurado y Capa Física: Fundamentos de Redes de Comunicaciones

Informática y Telecomunicaciones7,27 KB

CAPA DE ENLACE

- Contienda (puro y ranurado): Tt: tamaño de trama (bits) / velocidad de transmisión (bits/seg).

* ALOHA PURO (óptimo para tráficos bajos, rendimiento = 18,4%): tiempo de espera = 0; tiempo de vulnerabilidad = 2Tt.

S (nº de tramas generadas por tiempo de trama [0 <= S <= 1]) = G (nº de tramas por tiempo de transmisión más retransmisiones) * Po (probabilidad de transmisión exitosa).

* ALOHA RANURADO (rendimiento = 36,8%): Se limita el comienzo de la trama. Se particiona el eje temporal en divisiones iguales al tiempo de carga. Tiempo de carga fijo; tiempo de vulnerabilidad = 1Tt; S = G * e^(-G).

* CSMA (tamaño de trama variable; si hay transmisión, se retrasa el intento; si hay colisión, tiempo aleatorio):

  • 1-persistente:
...
Continuar leyendo "Protocolos de Acceso al Medio, Cableado Estructurado y Capa Física: Fundamentos de Redes de Comunicaciones" »

Transacciones en Bases de Datos: Propiedades ACID, Concurrencia y Recuperabilidad

Informática y Telecomunicaciones8,1 KB

Transacciones en Bases de Datos

Una transacción es una unidad de la ejecución de un programa que accede y posiblemente actualiza varios elementos de datos.

Estas operaciones se rigen por las denominadas propiedades ACID:

  • Atomicidad: O todas las operaciones de la transacción se realizan adecuadamente en la base de datos o ninguna de ellas.
  • Consistencia: La ejecución aislada de la transacción (es decir, sin otra transacción que se ejecute concurrentemente) conserva la consistencia de la base de datos.
  • Aislamiento: Aunque se ejecuten varias transacciones concurrentemente, el sistema garantiza que para cada par de transacciones Ti y Tj, se cumple que, para los efectos de Ti, o bien Tj ha terminado su ejecución antes de que comience Ti, o bien
...
Continuar leyendo "Transacciones en Bases de Datos: Propiedades ACID, Concurrencia y Recuperabilidad" »

Comandos GnuPG, Nmap, Iptables y Squid en Linux: Referencia Práctica

Informática y Telecomunicaciones10,29 KB

Gestión del Anillo de Claves GnuPG

Conjunto de comandos esenciales para la administración de claves criptográficas en sistemas Linux.

  • Crear claves: gpg --gen-key
  • Listar públicas: gpg -k o gpg --list-keys
  • Listar privadas: gpg -K o gpg --list-secret-keys
  • Formato largo: gpg --list-keys --keyid-format=long
  • Borrar pública: gpg --delete-key [identificador]
  • Borrar privada: gpg --delete-secret-key [identificador]
  • Revocar: gpg --gen-revoke -o revocacion.asc [nombre]

Exportación e Importación de Archivos Locales

  • Exportar pública (ASCII): gpg --export -a "Nombre" > public.key
  • Exportar privada (ASCII): gpg --export-secret-key -a "Nombre" > private.key
  • Importar pública: gpg --import [fichero_de_clave]
  • Importar privada: gpg --allow-secret-key-import --
...
Continuar leyendo "Comandos GnuPG, Nmap, Iptables y Squid en Linux: Referencia Práctica" »