Informática para Ciências e Engenharias (B)...
Transcript of Informática para Ciências e Engenharias (B)...
Na aula de hoje
l Introdução às redes de computadores e à Internet: • Redes de computadores e seus protocolos • Obtenção de dados da Internet usando o MATLAB/Octave.
l Métodos de Monte Carlo • Revisão:
• for, if, matrizes, gráficos
Redes de Computadores
l Um conjunto de computadores pode ser interligado com o objectivo de trocar informação e partilhar recursos, transferindo dados entre si. • Exemplo: pesquisa no Google
• Enviam-se os termos a pesquisar, • Usam-se os recursos do motor de pesquisa, e • Obtem-se de volta o resultado.
Redes de Computadores
l Numa transferência intervêm dois computadores e a rede. • Nó emissor:
• produz uma sequência de bytes (mensagem) • Nó receptor:
• recebe essa sequência de bytes • A rede, a infraestrutura que inclui
• Meios de interligação: • cabos, atmosfera, … • Computadores dedicados a encaminhar a mensagem
do nó emissor ao nó receptor.
Redes de Computadores
l Em muitos casos, a relação é assimétrica
Programa Cliente
Programa Servidor
Pedido (request)
Resposta (response)
Nota: Um servidor pode servir vários clientes em simultâneo. Por exemplo,
Browser
Por exemplo, Servidor Web
Redes de Computadores
l O servidor gere um recurso e fornece um serviço aos clientes manipulando esse recurso.
l Um servidor Web pode gerir recursos com dados ou programas que executa por conta dos clientes.
l Um Servidor FTP ou de email funciona de forma análoga.
3. Servidor Envia a resposta
Recurso
2. Servidor processa o pedido
4. Cliente processa a resposta
1. Cliente: envia pedido
Programa Cliente
Programa Servidor
Redes de Computadores
l Exemplo 1. O browser pede uma página de um blog 2. O servidor do blog recebe o pedido, obtém o conteúdo da
base de dados • Texto, comentários, imagens, etc
3. O servidor envia essa informação, devidamente estruturada
4. O browser processa a informação e apresenta a página.
Redes de Computadores
l Nos nós terminais • Placa ethernet
• sinais por cabo • Placa Wi-Fi
• sinais por ondas rádio
l Rede local • LAN, Local Area Network • ~1km;
• os computadores estão ligados directamente.
Redes de Computadores
l LAN • Cobre um edifício, ou
edifícios próximos
l WAN • Wide Area Network • Liga redes locais
l Encaminhador • Router, gateway • máquina dedicada que liga redes diferentes
• e.g. LAN a WAN
Redes de Computadores
l Exemplo: • Duas LAN ligadas por 3 encaminhadores (routers).
• Router
• Router
• Nó • Nó
• Nó
• Ethernet ou WiFI
• Nó • Nó
• Nó
• Ethernet ou WiFi
• Ligação via satélite
• Router • Ligação fibra óptica
Protocolos Internet
l Poder enviar sinais não basta. • É preciso saber
• Remetente e destinatário • Controlar o tráfego • Como interpretar o conteúdo, etc.
l Ou seja, são necessários protocolos
Protocolos Internet
l Nível físico • Sinais entre os nós da rede • Modulação e conversão
• Fibra óptica, telefone, cabo, ethernet, ...
Protocolos Internet
l Nível físico
l Nível da ligação • Transmissão de conjuntos de bits entre nós da rede
• Correcção de erros, gestão de filas de espera, ...
Protocolos Internet
l Nível físico
l Nível da ligação
l Nível IP (Internet Protocol) • Gere os pacotes de bytes, endereçamento e
reencaminhamento • A informação é dividida em pacotes (sequências de
bytes), encaminhados individualmente ao destino. • Cada máquina tem um endereço e cada pacote tem o
endereço do destinatário
Protocolos Internet
l Internet Protocol (IP) • o protocolo IP (versão 4) especifica um endereço único com
32 bits para cada máquina • (128 bits no IPv6)
• mas permite redes privadas • e.g. em cada casa o router doméstico cria uma rede
com os endereços 192.168.0.(0 – 255), e o ISP fornece um outro endereço para toda essa rede.
Protocolos Internet
l Nível físico
l Nível da ligação
l Nível IP (Internet Protocol)
l Nível de transporte (TCP). • Gere o transporte de dados, encarregando-se
• da gestão de pacotes, • detecção e recuperação de erros, etc.
Protocolos Internet
l Nível físico
l Nível da ligação
l Nível IP (Internet Protocol)
l Nível de transporte (TCP).
l Nível da aplicação • Protocolos destinados a gerir a comunicação entre
aplicações ou com o utilizador • e.g. HTTP, DNS, ...
Protocolos Internet
l Normalmente não vemos endereços IP
l Usamos endereços simbólicos • Strings associadas aos endereços IP
• e.g. www.google.com • O DNS (Domain Name System) é um sistema hierárquico
de servidores que mapeia os endereços simbólicos em endereços IP.
Protocolos Internet
l Top Level Domains
Top Level Domain Utilização
biz Negócios
com Comercial (EUA) edu Educação (EUA) info Informação
gov Governo (EUA) mil Militar (EUA) net Rede
org Sem fins lucrativos
Protocolos Internet
l Fora dos Estados o TLD é o código (com 2 letras) do país.
País TLD
pt Portugal
uk Reino Unido
es Espanha
fr França
nz Nova Zelândia
cn China
… …
Protocolos Internet
Top Level Domains
• Domínio raiz
• … • … • edu • gov • com • uk • pt
• cmu
• cs
• google • ibm • utl • unl
• fe • fct
• di
Protocolos Internet
l Endereços simbólicos, exemplo • nslookup (no command prompt ou consola)
~$ nslookup fct.unl.pt ... Name: fct.unl.pt Address: 193.136.126.43
Protocolos Internet
asc.di.fct.unl.pt
Top level domain (TLD)
Organização Nome da máquina
~$ nslookup asc.di.fct.unl.pt ... asc.di.fct.unl.pt canonical name = di78.di.fct.unl.pt. Name: di78.di.fct.unl.pt Address: 193.136.122.78
Protocolos Internet
l Exemplo: • Em Março 2015 vários ISP bloquearam o acesso ao site
thepiratebay.se por ordem judicial. • Fizeram-no configurando os seus servidores DNS para não
resolver este nome em endereço IP • Mas o “bloqueio” pode ser facilmente contornado usando
outro servidor DNS, e.g. • Google: 8.8.8.8, • Open DNS: 208.67.222.222
Internet
l Reenvio de pacotes • O remetente envia cada pacote ao router na sua rede. • Cada router reenvia os pacotes ao router que (estima) está
mais próximo do destinatário • Pelo endereço IP e tempos de transmissão • Este processo é dinâmico, permitindo gerir o tráfego e
contornar falhas pontuais na rede. • Eventualmente, o pacote chega a um router que o envia ao
destinatário
Programas Servidores
l Nos servidores há programas que esperam por pedidos (programas servidores) • São executados em background, sem interacção directa
com utilizadores (deamons) • Aguardam pedidos dirigidos a portas específicas
• Uma porta é um endereço dentro da própria máquina • Exemplos
• Servidor Web (porta 80) • Servidor File Transfer Protocol (FTP, portas 20 e 21)
Programas Servidores
l Exemplos: • Servidor Web (porta 80)
• Recursos: ficheiros, programas, páginas dinâmicas • Serviços: obter ficheiros e executar programas CGI a
pedido do cliente. • Servidor FTP (portas 20 e 21)
• Recursos: ficheiros • Serviços: leitura e escrita de ficheiros
• Servidor de Mail (porta 25, SMTP) • Recursos: ficheiro spool de email. • Serviços: armazena as mensagens no ficheiro spool
Programas Clientes
l Exemplos: • Browser, ftp, ssh,... • Encontra o programa servidor
• Pelo endereço da máquina onde o programa servidor está a ser executado
• Pela porta associada ao protocolo e serviço • Por exemplo,
• o browser contacta a máquina com aquele endereço IP na porta 80 para o protocolo HTTP.
World Wide Web
l 1989 • Tim Berners-Lee (no CERN) escreve uma proposta para
desenvolver um sistema distribuído de hiper-texto. • Ligar uma “web of notes with links” para ajudar os
físicos do CERN a partilhar informação em grandes projectos.
l 1990 • Tim B-L escreve um browser com interface gráfica.
World Wide Web
l A Web (teia) • Documentos interligados e sofware para consultar e
manipular essa informação.
l Protocolos da Web • Protocolos de aplicação que gerem a partilha da
informação.
l Página Web • Documento com dados e, normalmente, ligações (link) a
outros documentos.
l Link (elo) • Ligação entre duas páginas Web.
World Wide Web
l Site Web • Conjunto de páginas Web relacionadas e, geralmente,
armazenadas na mesma máquina.
l Servidor Web - servidor • Programa, na máquina que aloja a informação, que
responde a pedidos de acesso às páginas Web.
l Browser Web - cliente • Ferramenta que pede páginas Web e as mostra. • Indica a localização desse recurso ao servidor: URL
World Wide Web
l A Web não é a Internet • a Internet inclui muito mais do que a Web • a Web existe sobre a Internet
l Três elementos centrais da Web são • URL - Uniform Resource Locator
• ou endereço Web • HTML - Hypertext MarkupLanguage
• linguagem das páginas Web • HTTP - Hypertext Transfer Protocol
• Protocolo de ligação
URL - Uniform Resource Locator
l Forma normalizada de especificar a localização de um recurso na Web. • Protocolo (pode ser omitido); • Nome da máquina; • Recurso (e.g. um ficheiro no servidor).
http://asc.di.fct.unl.pt/~pm/index.html • Protocolo • Máquina
• Endereço IP:x.x.x.x • Nome DNS
• Ficheiro • /home/pm/public-html/index.html
HTML
l Hypertext Markup Language (HTML) • Linguagem usada para criar páginas Web. • é uma markup language porque usa marcas (tags) para
anotar a informação.
l Tags (marcas) • Especificam a interpretação do conteúdo • A forma concreta como a informação é mostrada no ecrã é
decidida pelo browser.
HTML
l Marcas (tags) • Colocadas entre os símbolos < e > • A marca final distingue-se da inicial pela </..>
l Elementos • Os elementos da página são definidos por uma marca
inicial e final envolvendo o conteúdo. • e.g. <TITLE>Título</TITLE>
• Ou podem ser vazios: <BR>
HTML
l Exemplos • <P> ... </P> especifica um parágrafo separado. • <BR> indica uma mudança de linha. • <CENTER> ... </CENTER> centra o conteúdo. • <I> … </I> conteúdo em itálico. • <B> … </B> conteúdo em negrito (bold). • <HR> insere um separador horizontal a toda a largura da
página (mudança de contexto).
HTML
l Exemplos • <P> ... </P> especifica um parágrafo separado. • <UL> … </UL> define uma lista de itens. • <LI>…</LI> define um item. • <H1> … </H1> Formatação do texto no estilo H1 –relevo
máximo (dimensão das letras …). • … • <H8> … </H8> Formatação do texto no estilo H8 – relevo
mínimo.
HTML
l Nota: • No standard HTML5 a ênfase é na semântica e não no
aspecto visual. • Várias tags foram delegadas para folhas de estilo (e.g.
CENTER) ou têm significado diferente (e.g. HR)
HTML
l A tag pode ter também atributos • informação adicional acerca do elemento.
• nome-do-atributo="valor"
l Exemplo • Imagem:
• <IMG SRC="imagem.gif">
HTML
l Links (hiper-ligação) • Tag A (âncora) • Usa o atributo HREF
l Exemplo • <A HREF = "http://ssdi.di.fct.unl.pt/ice/b/praticas.html">
página das práticas de ICE-B</A>
Protocolo HTTP
• Browser • Servidor
• GET /index.html HTTP/1.1 • Linhas com informação sobre o pedido e o browser • Linha em branco • Mais linhas opcionais
• 200 OK HTTP/1.1 • Linhas com informação sobre a resposta e o servidor • Linha em branco • Mais linhas opcionais • <html> • … • </html>
Pedidos e respostas são codificados em blocos de texto
Pedido
Resposta
WWW
l Exemplo • Utilizador especifica URL, • o browser pede o recurso ao servidor, • este envia os dados com o texto, imagens, etc.
Conteúdo Estático
l O conteúdo pode ser dinâmico • Quando é pedido um recurso dinâmico, o servidor executa
um programa que o gera no momento. • Por exemplo,
• páginas de um blog, Facebook, etc
Conteúdo Dinâmico
l O conteúdo pode ser estático • é enviado um ficheiro que existe no servidor • Exemplos: ficheiros HTML, imagens, audio clips.
• URLs para conteúdos estáticos: • http://www.cs.cmu.edu:80/index.html • http://www.cs.cmu.edu/index.html • http://www.cs.cmu.edu
• Identificam o ficheiro index.html gerido pelo servidor em www.cs.cmu.edu à escuta na porta 80.
MATLAB e WWW
l O MATLAB (e Octave) inclui funções para aceder a recursos pelo URL
[conteudo, sucesso] = urlread( url )
l A função urlread acede ao URL url e retorna: • na string conteudo o conteúdo obtido; • no booleano sucesso
• o valor true (1), se a operação teve sucesso, e • o valor false (0), se a operação não teve sucesso.
MATLAB e WWW
l O MATLAB (e Octave) inclui funções para aceder a recursos pelo URL
[nComp,sucesso]=urlwrite(url,nomeFich)
l A função urlwrite acede ao URL url, grava o conteúdo no ficheiro nomeFich e retorna: • na string nComp o nome completo do ficheiro local,
incluíndo o caminho; • no booleano sucesso
• o valor true (1), se a operação teve sucesso, e • o valor false (0), se a operação não teve sucesso.
Exemplo : Pauta
l Exemplo: • Calcular notas dos alunos de ICE • Criar uma pauta • As notas dos trabalhos e testes estão num servidor:
http://ctp.di.fct.unl.pt/~mm/ice/teoricas/notasAC.txt
50123 12.5 14.1 16.4 9.9; 50224 8.1 10.3 5.5 8.2; 51001 7.7 4.4 15.1 12.0
Exemplo : Pauta
l Compreender o problema • Caracterizar:
• Entrada: URL • Saída: pauta com as avaliações
• Tarefas • Obter os dados remotos (urlread) e converter numa
matriz (já vamos ver como...) • Calcular a pauta
• Nota: Já resolvemos este problema na aula 4
Exemplo : Pauta
l Assinaturas das funções • Ler as notas
• function notas = lenotas(url)
• Da aula 4 • function pauta = calculapauta(notas)
• function nota = calculanota(notas)
• function res = arredonda(valor,casasDec)
• Juntar tudo • function pauta = calculapautaurl(url)
Exemplo : Pauta
l Converter string em números: • str2num
octave:11> a=str2num(s) a = 123 octave:12> a+1 ans = 124 octave:13> mStr='1,2,3;4,5,6;7,8,9' mStr = 1,2,3;4,5,6;7,8,9 octave:14> m=str2num(mStr) m = 1 2 3 4 5 6 7 8 9
octave:9> s='123' s = 123 octave:10> s+1 ans = 50 51 52
Exemplo : Pauta
l Os dados do servidor são fáceis de converter • Basta usar a função str2num
50123 12.5 14.1 16.4 9.9; 50224 8.1 10.3 5.5 8.2; 51001 7.7 4.4 15.1 12.0; ...
Exemplo : Pauta
l Testar a função lenotas:
> url='http://ctp.di.fct.unl.pt/~mm/ice/teoricas/notasA.txt'
> ns = lenotas(url)
ns = [](0x0 • Falhou a leitura do URL dado:
• o ficheiro tem o nome errado
Exemplo : Pauta
l Testar a função lenotas:
> url='http://ctp.di.fct.unl.pt/~mm/ice/teoricas/notasAC.txt'
> ns = lenotas(url)
ns = 50123 12.5 14.1 16.4 9.9 50224 8.1 10.3 5.5 8.2 51001 7.7 4.4 15.1 12.0
50123 12.5 14.1 16.4 9.9; 50224 8.1 10.3 5.5 8.2; 51001 7.7 4.4 15.1 12.0; ...
Exemplo : Pauta
l Testar a função calculapautaurl:
> url='http://ctp.di.fct.unl.pt/~mm/ice/teoricas/notasAC.txt'
> pauta=calculapautaurl(url) pauta = 50123 13 50224 7 51001 -1
Acesso Local
l O URL pode ser usado para designar um ficheiro local • Nesse caso o protocolo não será http mas sim file.
l Por exemplo, guardando notasAC.txt na pasta de trabalho:
octave:11> url='file://notasAC.txt’;
octave:12> pauta = calculapautaurl(url)
pauta = 50123 13 50224 7 51001 -1
Métodos de Monte Carlo
l Nome cunhado pelo matemático Nicholas Constantine Metropolis (1915-1999)
l Conjunto de métodos baseados em números (pseudo) aleatórios.
Cálculo de Áreas
l Objectivo • Estimar a área de uma função
(área debaixo da curva) • Ideia:
• Gerar pontos aleatoriamente num rectângulo que circunscreva a função
• Estimar a área pela fracção dos pontos abaixo da curva
1
1
A
B
21)( xxf −=
Nota: Neste caso, pode-se estimar o valor de π (a área é π/4)
Cálculo de Áreas
l Gerar pontos aleatoriamente • Usar a função rand()
• que gera uma dist r ibuição uniforme entre 0 e 1
• Contar quantos pontos ficam abaixo da curva correspondente à função f
x = rand()
y = rand()
n = n + (y < f(x))
1
1
A
B
21)( xxf −=
Cálculo de Áreas
l Em geral • Gerar N pontos ao acaso numa região conhecida que inclua
a região de interesse • Geração de números (pseudo) aleatórios • contar quantos incidem na área de interesse • a área de interesse será, aproximadamente, essa
fracção da área conhecida • Funciona tanto melhor quanto maior for N e quanto maior
for a fracção na área de interesse.
Cálculo de π
l Função estimapi • recebe o número de pontos a gerar para a estimativa • devolve
• o valor estimado de π• duas matrizes com os pontos (x,y) que cairam dentro e
fora da área de interesse, para o gráfico.
l Assinatura da função: function [res, ptsDentro, ptsFora] = estimapi(N)
Cálculo de π
Função rand simula números aleatórios (pseudo-aleatórios)
0 <= rand < 1 octave:46> rand ans = 0.30517 octave:47> rand ans = 0.73012 octave:48> rand ans = 0.76470 octave:49> rand ans = 0.083024
Cálculo de π
Um ponto gerado a cada iteração conta: • dentro se a distância à
origem não ultrapassar a unidade,
• fora se ultrapassar.
Incrementando as variáveis ixDentro e ixFora mantemos a contagem e o índice do ponto na matriz respectiva.
Cálculo de π
O resultado, a estimativa de π, é o quádruplo da área estimada pela proporção de pontos dentro. É preciso também redimensionar as matrizes dos pontos de acordo com o número efectivo de pontos (N linhas era o máximo possível, para evitar redimensionar as matrizes muitas vezes durante o ciclo).
Monte Carlo: Risco de Incêndio
l Incêndio • Simulação aleatória
• Cada simulação dá um resultado diferente
l Método de Monte Carlo: • Fazer muitas
simulações • Tirar estatísticas.
Risco de Incêndio
l Simulação de incêndio (aula 6) • Assinaturas das funções já implementadas
function novoEstado=propaga(estado, ... mapa,probPropagar,efeitoDeclive)
function estado=extingue(estado,probApagar)
function incendio(mapa,focoInicial, probPropagar, ... probApagar,efeitoDeclive,iteracoes)
Risco de Incêndio
l Objectivo • Obter um mapa com as probabilidades do incêndio chegar
a cada ponto em certo tempo • O tempo é o número de iterações • As probabilidades são estimadas pelo número de vezes
que o incêndio chega lá.
Risco de Incêndio
l Algoritmo • Para um certo número N de iterações:
• Correr várias vezes a simulação • Em cada vez, marcar onde o incêndio chegou • Contar quantas vezes chegou a cada sítio
Risco de Incêndio
l Como implementar • Correr várias vezes a simulação
• Criar uma função, com um ciclo for • A cada vez, marcar onde o incêndio chegou
• Precisamos do resultado da simulação do incêndio • Contar quantas vezes chegou a cada sítio
• Na função que corre várias vezes a simulação, criar uma matriz e ir contando a cada simulação.
Risco de Incêndio
l Assinaturas: • As funções propaga e extingue são as da aula 6, sem
modificação: function novoEstado=propaga(estado,mapa, ... probPropagar, efeitoDeclive)
function estado=extingue(estado,probApagar)
Risco de Incêndio
l Assinaturas: • Mas temos de alterar a função incendio ...
function incendio(mapa,focoInicial,probPropagar, ... probApagar,efeitoDeclive,iteracoes)
• Apenas ligeiramente: precisamos que devolva o estado final da simulação, para saber onde chegou o fogo
function estado=incendio(mapa,focoInicial, ... probPropagar,probApagar,efeitoDeclive,iteracoes)
• ... e não queremos que desenhe o gráfico, porque demora mais e é desnecessário
Risco de Incêndio
l Assinaturas: • Depois precisamos de uma função que calcule o perigo de
incêndio pela contagem, simulando vários incêndios • Recebe os argumentos de que a simulação precisa, mais
o número de repetições
function contagens = perigo(mapa,focoInicial, ... probPropagar,probApagar,efeitoDeclive, ... iteracoes,repeticoes)
Risco de Incêndio: Implementação
l Implementação: • Modificar a função incêndio
• Devolver o estado final • Não desenhar os gráficos, porque vamos ter de a
executar muitas vezes
Risco de Incêndio: Implementação
l Nova função: perigo • para obter a contagem por cada ponto do mapa.
function contagens = perigo(mapa,focoInicial, ... probPropagar,probApagar,efeitoDeclive, ... iteracoes,repeticoes)
Risco de Incêndio: Implementação
Para cada repetição, corre-se a simulação de um incêndio, guardando-se o estado final.
Risco de Incêndio: Implementação
Depois, conta-se (soma-se 1) em cada localização que esteja a arder ou tenha ardido, numa matriz que começou a 0.
Risco de Incêndio: Implementação
Estas instruções servem apenas para seguirmos o progresso do cálculo, porque demora algum tempo.
O disp(f) escreve o valor de f na consola, e o comando fflush(stdout) obriga o interpretador a actualizar a consola imediatamente.
Risco de Incêndio: Testes
l Testes • Para correr a função perigo e ver o resultado precisamos
• do mapa, • da matriz de propagação, e de • criar o gráfico.
• Para a testar podemos • criar um script de testes, ou • fazer outra função.
• Para testes um script é normalmente mais prático.
Risco de Incêndio: Extras
l Truques úteis mas opcionais: • fflush(stdout) para mostrar informação na consola durante a
execução • more off para não interromper quando há mais do que um
ecrã de informação • print('nome.jpg') para gravar imagens • Scripts de testes
• Mas exigimos que testem as funções!
Risco de Incêndio: Demo
l Aplicação: • Cada hora de incêndio são 10 iterações • Queremos incêndios de 1 a 15 horas, com 100 repetições
para cada simulação. • Corremos o programa com vários valores para o número de
iterações da simulação. • podia ser mais eficiente se fossemos guardando os
resultados intermédios durante a simulação, mas isso exigiria alterações mais profundas.
Risco de Incêndio: Demo
l Aplicação: • Incêndios de 1 a 15 horas de duração • 100 repetições de cada simulação. • Com e sem vento
l Isto demora várias horas a calcular • Mas vamos gravando as imagens e vemos o resultado no final
• sem_vento01.jpg, …, com_vento15.jpg
Métodos de Monte Carlo
l Resumindo: • Usa-se um algoritmo não determinista (aleatório) para simular
o objecto de estudo • Amostram-se o espaço de possibilidades • Calculam-se estatísticas dessa amostra