Sig:
Índice de Figuras
Sup:
Programación Distribuida y Mejora
Ant:
Programación Distribuida y Mejora
Índice General
Índice de Figuras
Índice de Tablas
Ejecucion de Programas
La función system
La función exec
Variables de entorno
Uso de comillas de ejecución (Backticks)
Salvando Manejadores de Fichero
Pipes
Entrada/Salida sin Buffers
Repaso
Práctica: Ejecución Controlada de Un Programa
Repaso
El Módulo IPC::Run3
Práctica: Uso de IPC::Run3
Pipes con nombre
Práctica: Pipes con Nombre. Apertura Bidireccional
Práctica: Calculo Usando Pipes con Nombre
SSH: Secure Shell
Conexiones con ssh
Introducción
Conexión SSH a Una máquina por Primera Vez
Claves Pública y Privada: Estableciendo Autentificación No Interactiva
Copia Segura de un Fichero
Práctica: Copia Segura Paralela: Parallel Secure Copy
Copia Segura en Cascada
Transferencia por sftp
El fichero authorized_keys
Acceso Sólo Via scp
Práctica: Repositorio svn y ssh
Deshabilitar la Asignación de una TTY
Agentes SSH
Mejor un Sólo Agente
Redireccionado al Agente SSH
Consideraciones sobre la Seguridad del Uso de Agentes
Depuración/Debugging
Los Ficheros de Configuración
Copias de Seguridad con rsync
Multiplexado de Conexiones con SSH
Conexiones X y Tunneling
Tunneling Directo
Creación de un Tunel Inverso
SSH como Proxy SOCKS
Montando un Disco Remoto via SSH
Protegiéndose contra Ataques con Diccionarios
Distributed Shell: dsh
Conexión Automática ssh con Net::SSH::Perl
Perl SSH
Cifrados
Conmutando Entre Modo Batch e Interactivo
El Módulo Net::SSH::Expect
El Módulo IPC::PerlSSH
Práctica: Producto de Matrices
Visualización de un Cluster con cssh
Práctica: usando cssh
Arrancando Múltiples Sesiones SSH Usando DCOP
Virtual Network Computing
Fork y Señales
La Función fork
La Función wait
La Depuración de Procesos
Señales
Lista de Señales
Envío de señales
Captura de señales
Señales a Grupos
Controlando Errores en Tiempo de Ejecución con eval
Controlando warnings en tiempo de ejecución
A Donde se Retorna Después de la Ejecución del Manejador de una Señal
Cronometrando el Tiempo de Entrada con alarm
Limitando el Tiempo de Lectura
Limitando el Tiempo de un Proceso
El Manejo de Excepciones PIPE
El Manejador IGNORE
Consideraciones sobre el uso de las Señales
Cosechado con un Manejador para CHLD
Ejercicio: Barreras
Cerrojos sobre Ficheros
Práctica: Cálculo Multiproceso usando cerrojos
Práctica: El PID de un Subproceso
El Módulo Parallel::Simple
El Módulo Parallel::ForkManager
Práctica: Callbacks en ForkManager
El Análisis de URLs
Práctica: Analisis de URLs en el Programa de Descarga
Granjas Simples
Granja usando pipes y wait
Ejercicio: Uso de waitpid
Ejercicio: Hashes de Manejadores
Granja con Extensiones
Práctica: Granja con Pipes
Práctica: Extendiendo los Objetos Farm::Machine
Pipes
La Función pipe
Múltiples escritores
Múltiples Lectores
Comunicación Bidireccional con Pipe
Atascos
El Módulo IO::Pipe
Comunicación de Estructuras de Datos Complejas
Práctica: Marshalling
Comunicaciones Entre Todos los Procesos
Práctica: Cálculo usando la función pipe
Práctica: Suma de Prefijos
Práctica: Prefijos de Productos de Matrices
Práctica: Extensión de Parallel::Simple con Pipes
Open con -| y |-
Filtrar la Propia Salida con -| y |-
Un pipe con
etapas
Práctica: Cálculo usando canales
Práctica: Ejecución de una Aplicación en Múltiples Máquinas
Eventos
Select
Ejemplo de Uso: Cálculo de
Práctica: Cálculo de un Área Usando GRID::Machine
Un Ejemplo: Una Aplicación Tipo talk
Práctica: Generalizaciones del Talk
El Módulo Event
La Vida de un Vigilante
Prioridades
Gestión de los Objetos Watchers
Los Objetos Event::Event
Vigilando Relojes y la Entrada
Vigilando Sockets: Un Servidor Simple
Vigilando Ficheros
Vigilando Manejadores de Fichero: Linux::Inotify2
Vigilando Los Tiempos Ociosos
Vigilando Variables
Vigilantes de Grupo
Vigilando a los Vigilantes
Práctica: Cálculo Paralelo con Event
Práctica: Talk con Event
El Módulo AnyEvent
El Módulo IO::Event
El Módulo IO::Multiplex
Corutinas: El Módulo Coro
Introducción a Coro
El Módulo Coro::State
Señales: Productor Consumidor
Semáforos
Generadores
Un Ejemplo con Coro::Event y Coro::Util
Usando Corutinas con LWP
Open2
Comunicación Bidireccional con Open2
Ejemplo: El Módulo IPC::PerlSSH
Práctica: Modificaciones a PerlSSH
Ejemplo: Comunicación Bidireccional con bc
Un Ejemplo con Lecturas sin Bloqueo
Práctica: Calculo con Open2
Práctica: Paralelismo de Granja
Comunicación Bidireccional con el Módulo IPC::Run
Pseudoterminales
Pseudoterminales
Introducción a la Programación de Terminales
Lectura de un Carácter sin Esperas Mediante POSIX
La función ioctl
El Módulo IO::Pty
Control de un Programa Externo con IO::Pty
Uso Avanzado de Seudoterminales
Automatización de Guiones Pty
Práctica: Calculo usando Seudoterminales
Práctica: Granja con Seudoterminales
Práctica: Instalación de Pares Clave Pública y Privada con Seudoterminales
Expect
Comunicación Interactiva con Expect
Una Introducción a Expect
q-agent: Seguridad y Ficheros de Configuración
Práctica: Conexión ssh
Práctica: Conexión sftp
Práctica: Preamble y Postamble
Práctica: Preamble y Postamble con Autentificación Automática
Práctica: Pipes con Máquinas Remotas
Práctica: Túneles Inversos
Automatización de una Conexión sftp
Depuración en Expect
Práctica: Conexión sftp
Práctica: Clave Pública y Privada
Usando Callbacks
Práctica: Construyendo una Aplicación en Múltiples Plataformas con Expect
Cambiando de Automático a Interactivo
Controlando los Ecos
Control de la Terminal Local
Práctica: Gestor de Colas
Sugerencias
Servicios de Correos
El Módulo WWW::GMail
Uso de MailTools
MIME
LWP
Descargando Páginas
Cargando un Módulo Remoto
Búsqueda en formularios con get
Búsqueda en formularios con post y autentificación
WWW::Mechanize
WWW::Dictionary
Buscando en Amazon
CGI
Introducción a CGI (Common Gateway Inteface)
Permisos y Configuración del Servidor Apache
.htaccess
Hola Mundo
Depuración
Depuración con netcat
Depuración con ptkdb y nx
Procesos de Larga Duración desde un CGI
Práctica: Control de Procesos desde un CGI
Hilos
Un Ejemplo con Threads
Señales y Esperas Condicionales
Colas de Estructuras Anidadas
Un Ejemplo Sencillo: Cálculo de los Primos
Un Pipeline para Resolver el Problema de la Mochila 0-1
Mapping de un Pipeline Sobre un Anillo
Práctica: Pipe con Threads
Sockets y Servidores
Direcciones IP, Números de Puertos y Sockets
Práctica: SSH ping paralelo
Muestreo de Máquinas con nmap
Traduccion entre Direcciones IP y Nombres
El Módulo Net::DNS
El Módulo IO::Socket
Un Cliente HTTP
Multiplexado Usando Procesos
Práctica: Escritura de un Servidor y un Cliente
Convirtiendo un Programa en un Servicio
Demonios y Daemons
Como Convertirse en un Demonio
Poniendo El Proceso en Background
Salvando el Identificador de Proceso
El Programa Completo
Servicios de Log
El Programa Servidor con Logs
Logs con warn y die
Cambiando el ID del Usuario y del Grupo
Datos Manchados (Tainted data)
Manejo de Señales
El Módulo de Soporte: Versión con Log, Privilegios, chroot, Taint y Rearranque
Preforking
Rutinas de Soporte para un Servidor HTTP Simple
Un Servidor HTTP Simple:Códigos
Servidor con Preforking Adaptativo: Programa Principal
El Módulo Net::Server
Introducción
Un Servidor HTTP
Parametrización del Servidor
Código Completo del Servidor HTTP
Varios Protocolos
Como Escribir un Servidor HTTP en Perl con HTTP::Deamon
Como Escribir un Servidor HTTP en Perl con HTTP::Server::Simple
Como Escribir un Servidor HTTP en Perl con HTTP::Server::Brick
El Módulo HTTP::Server::Simple::Dispatched
Construcción de un Proxy con HTTP::Proxy
El Módulo Continuity: CGIs con Estado
Clientes con IO::Socket::SSL
El Módulo Event::RPC
Las Interioridades de Perl
Los Paquetes O y B
El Módulo O
Como Escribir un Módulo B::
El Módulo B::Concise
Un Ejemplo: B::LintSubs
El Módulo P5NCI
Introducción a XS
Breve Introducción a Inline
Argumentos de Salida en XS
Representaciones C de los Tipos de Perl
El Sistema de FLAGS de Perl
Tipos de Escalares Perl
Uso de la Pila de Argumentos
Manejando Array Values
Representación Interna de un AV
Práctica: Cálculo de la Mediana
Práctica: Reescribir Math::Factor
La Directiva ALIAS:
Typemaps
Las directivas INPUT:, PREINIT: y CLEANUP:
El typemap T_ARRAY
Generación de XS con h2xs
La Librería coord
Usando h2xs
El Código Generado por h2xs
Erlang
Introducción
Registrando un nombre de forma atómica
Índice de Materias
Bibliografía
Sig:
Índice de Figuras
Sup:
Programación Distribuida y Mejora
Ant:
Programación Distribuida y Mejora
Casiano Rodríguez León
2010-03-22