Sig:
A Juana
Sup:
Programación Distribuida y Mejora
Ant:
Índice de Figuras
Índice de Tablas
Tabla de Señales POSIX.1
Ejecución coordinada
Grabación de una sesión con
script
Tabla de Modos Locales
Subsecciones
A Juana
Agradecimientos/Acknowledgments
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
Sig:
A Juana
Sup:
Programación Distribuida y Mejora
Ant:
Índice de Figuras
Casiano Rodríguez León
2010-03-22