Informática para Ciências
e Engenharias
2012/13
2
Na aula de hoje...
Revisão: for, if, matrizes, gráficos
•
Cálculo de áreas por Monte Carlo
Introdução às redes de computadores e
à Internet:
•
Redes de computadores e seus protocolos•
Web•
Obtenção de dados da Internet usando MATLAB/Octave.3
4
Estimar π
Círculo de raio 1, área = π
•
quadrado área = 1•
quarto, área = π/45
Estimar π
Algoritmo (Monte Carlo)
•
N pontos ao acaso•
contar d dentro•
π ~ (d/N)*46
Calculo de áreas por MC
Em geral
•
N pontos ao acaso numa região conhecida que inclua a região de interesse•
pseudo aleatórios•
contar quantos incidem na área de interesse•
a área de interesse será essa fracção, aproximadamente, da área conhecida•
funciona melhor quanto maior for N e quanto maior for a fracção na área de interesse.7
Calculo de áreas por MC
Função estimapi
•
recebe o número de pontos a gerar para a estimativa•
devolve•
o valor estimado de pi•
duas matrizes com os pontos (x,y) que calharam dentro e fora da área de interesse, para o gráfico.
Assinatura da função:
8
Cria os vectores de saída (no máximo N linhas) e os
contadores que indicam
quantos pontos e em que linha vamos, em cada caso.
9
Ciclo principal para disparar N pontos
10
Função rand simula números aleatórios (pseudo-aleatória) 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
11
O 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.
12
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).
13
Estimar π
Script de
14
Estimar π
15
Estimar π
16
Estimar π
17
Estimar π
18
Estimar π
Mais pontos,
19
20
Redes de computadores
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•
enviamos os termos a pesquisar, usamos osrecursos do motor de pesquisa, obtemos de volta o resultado.
21
Redes de computadores
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 a22
Relação Cliente Servidor
Programa Cliente Programa Servidor
Pedido (request)
Resposta (response)
Um servidor pode servir vários clientes em simultâneo. Por exemplo, Browser Por exemplo, Servidor Web23
Relação Cliente Servidor
23
O servidor gere um recurso e fornece um serviço aos clientes
manipulando esse recurso.
Um servidor Web pode gerir recursos com dados ou programas
que executa por conta dos clientes.
•
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 resposta1. Cliente envia pedido
Programa Cliente
Programa Servidor
24
Relação Cliente Servidor
24
Exemplo
•
O browser pede uma página de um blog•
O servidor do blog recebe o pedido, obtém o conteúdo da base de dados•
Texto, comentários, imagens, etc•
O servidor envia essa informação, devidamente estruturada•
O browser processa a informação e apresenta a página.25
Relação entre pares
25
Ligação peer-to-peer
•
(par-a-par, ponto-a-ponto, P2P)•
Neste tipo de relação, todos os participantes funcionam como clientes e como servidores•
O esforço é partilhado, não exigindo servidores com capacidades especiais•
Napster foi o primeiro exemplo notório (mas era centralizado)•
BitTorrent é um dos mais conhecidos, e pode ser descentralizado.26
Redes de computadores
Nos nós terminais
•
Placa ethernet•
sinais por cabo•
Placa Wi-Fi•
sinais por ondas rádio
Rede local
•
LAN, Local Area Network•
~1km; os computadores estão ligados directamente.27
Redes de computadores
LAN•
Cobre um edifício, ou edifícios próximos WAN•
Wide Area Network•
Liga redes locais Encaminhador
•
Router, gateway•
máquina dedicada que liga redes diferentes (e.g. LAN a WAN)28
Redes de computadores
28 28 Nó Nó Nó Router Nó Nó Router Nó Router Ethernet ou WiFI Ethernet ou WiFiLigação via satélite
Ligação fibra óptica
Duas LAN ligadas por 3 encaminhadores
29
Redes de computadores
Poder enviar sinais não basta.
É preciso saber
•
Remetente e destinatário•
Controlar o tráfego•
Como interpretar o conteúdo, etc.30
Protocolos Internet
Nível físico
•
Sinais entre os nós da rede•
Modulação e conversão31
Protocolos Internet
Nível físico
Nível da ligação
•
Transmissão de conjuntos de bits entre nós da rede32
Protocolos Internet
Nível físico
Nível da ligação
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 aodestino.
•
Cada máquina tem um endereço e cada pacote33
Protocolos Internet
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.34
Protocolos Internet
Nível físico
Nível da ligação
Nível IP (Internet Protocol)
Nível de transporte (TCP).
•
Gere o transporte de dados, encarregando-se da gestão de pacotes, detecção e35
Protocolos Internet
Nível físico
Nível da ligação
Nível IP (Internet Protocol)
Nível de transporte (TCP).
Nível da aplicação
•
Protocolos destinados a gerir a comunicação entre aplicações ou com o utilizador.36
37
Protocolos Internet
Normalmente não vemos endereços IP
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 os38
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
39
Top level domains
39
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 … …
40
Domain Name System
Domínio raiz Top-level
domains edu gov com … uk pt …
utl unl cmu cs fe fct di google ibm
41
Protocolos Internet
Endereços simbólicos, exemplo
•
nslookup (no command prompt ou consola)~$ nslookup fct.unl.pt ...
Name: fct.unl.pt
42
Nome do nó
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.ptcanonical name = di78.di.fct.unl.pt. Name: di78.di.fct.unl.pt
43
Internet
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ário44
Internet
45
Programas servidores
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)46
Programas servidores
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.47
Programas clientes
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•
e.g. O browser contacta a máquina com aquele endereço IP na porta 80 para o protocolo HTTP.48
49
World Wide Web
1989
•
Tim Berners-Lee (no CERN) escreve uma proposta para desenvolver um sistemadistribuí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.
1990
•
Tim B-L escreve um browser com interface gráfica.50
World Wide Web
A Web (teia)
•
Documentos interligados e sofware para consultar e manipular essa informação. Protocolos da Web
•
Protocolos de aplicação que gerem a partilha da informação. Página Web
•
Documento com dados e, normalmente, ligações (link) a outros documentos. Link (elo)
51
World Wide Web
Site Web
•
Conjunto de páginas Web relacionadas e, geralmente, armazenadas na mesma máquina. Servidor Web - servidor
•
Programa, na máquina que aloja a informação, que responde a pedidos de acesso às páginas Web. Browser Web - cliente
•
Ferramenta que pede páginas Web e as mostra.52
World Wide Web
A Web não é a Internet
•
a Internet inclui muito mais do que a Web•
a Web existe sobre a Internet
Três elementos centrais da Web são
•
Uniform Resource Locator•
(ou endereço Web)•
HTML•
linguagem das páginas Web•
HTTP53
URL: Uniform Resource Locator
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 53
Forma normalizada de especificar a
localização de um recurso na Web.
•
Protocolo (pode ser omitido);•
Nome da máquina;54
HTML
Hypertext Markup Language (HTML)
•
Linguagem usada para criar páginas Web.•
é uma markup language porque usa marcas (tags) para anotar a informação.
Tags (marcas)
•
Especificam a interpretação do conteúdo•
A forma concreta como a informação é55
HTML
Código fonte da página, HTML
56
HTML
Representação da página pelo browser
57
HTML
Marcas (tags)
•
Colocadas entre os símbolos < e >•
A marca final distingue-se da inicial pela </..>
Elementos
•
Os elementos da página são definidos por uma marca inicial e final ladeando o conteúdo.•
e.g. <TITLE>Título</TITLE>58
HTML
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).59
HTML
Exemplos
•
<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.60
HTML
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 significado61
HTML
A tag pode ter também atributos
•
informação adicional acerca do elemento.•
nome-do-atributo="valor"
Exemplo
•
Imagem:62
HTML
Links (hiper-ligação)
•
Tag A (âncora) Exemplo
<A HREF = "http://ssdi.di.fct.unl.pt/ice/b/praticas.html"> página das práticas de ICE-B</A>63
Protocolo HTTP
Browser Servidor Pedido Resposta GET /index.html HTTP/1.1Linhas 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
64
World Wide Web
Utilizador especifica URL, o browser pede o recurso ao servidor, este envia os dados com o texto, imagens, etc.
65
Conteúdo estático
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.66
Conteúdo dinâmico
O conteúdo pode ser dinâmico
•
Quando é pedido um recurso dinâmico, o servidor executa um programa que o gera no momento.67
68
Acesso a recursos remotos
O MATLAB (e Octave) inclui funções para
aceder a recursos pelo URL
[conteudo, sucesso] = urlread( url )
•
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.69
Acesso a recursos remotos
[nComp,sucesso]=urlwrite(url,nomeFich)
•
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 teve70
71
Exemplo
Wunderground
•
Em http://www.wunderground.com podem consultar-se dados meteorológicos de vários pontos da Terra.•
Para Lisboa:•
http://www.wunderground.com/weatherstation/WX DailyHistory.asp?ID=ILISBON2&format=172
Exemplo
•
E.g. 23:44 de 24-11-2012: ↵ Time,TemperatureC,DewpointC,PressurehPa,WindDirection,WindDirectionDegrees,WindSpeedKMH, WindSpeedGustKMH,Humidity,HourlyPrecipMM,Conditions,Clouds,dailyrainMM,SoftwareType,DateU TC<br>↵ 2012-11-24 00:03:00,15.9,12.7,1014.1,SSE,166,16.1,16.1,81,0.0,,,0.0,Wunderground v.1.13,2012-11-24 00:03:00, ↵ <br>↵ 2012-11-24 00:08:00,15.9,12.7,1014.1,SSE,157,16.1,25.7,81,0.0,,,0.0,Wunderground v.1.13,2012-11-24 00:08:00, ↵ <br>↵ (…) 2012-11-24 23:43:00,13.7,13.1,1015.5,NE,40,11.3,11.3,96,1.3,,,56.4,Wunderground v.1.13,2012-11-24 23:43:00, ↵ <br>↵73
Exemplo
Gráfico
•
Processando esta informação pode-se obter o gráfico da temperatura por hora na Portela•
Mas, por agora,vamos fazer uma versão simplificada
74
Exemplo
Simplificando:
•
http://asc.di.fct.unl.pt/~pm/meteorologia.txt
•
temperatura ( ºC), Ponto de condensação (º C), pressão (hPa), direcção do vento (código numérico), velocidade do vento (Kph), humidade (%), precipitação (mm/m2)•
Cada linha corresponde a uma hora (0:00 a 0:59, 1:00 a 1:59, etc...) 8.6,1.9,1029.3,4,1.6,63,0.0; 8.5,1.8,1029.0,4,1.6,63,0.0; 8.0,2.1,1029.0,4,0.0,66,0.0; 7.7,1.9,1029.3,4,0.0,67,0.0; ...75
Exemplo
Queremos o gráfico da temperatura média a cada
76
Exemplo
Compreender o problema Caracterizar:
•
Entrada: URL•
Saída: nenhum valor, mas gerar o gráfico Tarefas
•
Obter os dados remotos (urlread) e converter numa matriz (como? Já vamos ver...)•
Desenhar o gráfico77
Exemplo
Assinaturas das funções
•
(não se esqueçam)function dados=ledados(url)
function graficotemp(horas,temp)
function temperaturas(url)
78
Exemplo
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
79
Exemplo
Os dados no servidor são fáceis de
converter:
8.6,1.9,1029.3,4,1.6,63,0.0; 8.5,1.8,1029.0,4,1.6,63,0.0; 8.0,2.1,1029.0,4,0.0,66,0.0; 7.7,1.9,1029.3,4,0.0,67,0.0; ...80
81
Exemplo
octave:8> mat=ledados('http://asc.di.fct.unl.pt/~pm/meteorologia.txt') mat =
8.6000e+00 1.9000e+00 1.0293e+03 4.0000e+00 1.6000e+00 6.3000e+01 0.0000e+00 8.5000e+00 1.8000e+00 1.0290e+03 4.0000e+00 1.6000e+00 6.3000e+01 0.0000e+00 8.0000e+00 2.1000e+00 1.0290e+03 4.0000e+00 0.0000e+00 6.6000e+01 0.0000e+00 7.7000e+00 1.9000e+00 1.0293e+03 4.0000e+00 0.0000e+00 6.7000e+01 0.0000e+00 6.8000e+00 1.5000e+00 1.0297e+03 4.0000e+00 0.0000e+00 6.9000e+01 0.0000e+00 7.0000e+00 9.0000e-01 1.0300e+03 4.0000e+00 1.6000e+00 6.5000e+01 0.0000e+00 6.0000e+00 1.1000e+00 1.0304e+03 4.0000e+00 0.0000e+00 7.1000e+01 0.0000e+00 5.7000e+00 1.3000e+00 1.0310e+03 4.0000e+00 0.0000e+00 7.3000e+01 0.0000e+00 7.3000e+00 3.6000e+00 1.0317e+03 4.0000e+00 0.0000e+00 7.7000e+01 0.0000e+00 8.8000e+00 4.4000e+00 1.0321e+03 4.0000e+00 1.6000e+00 7.4000e+01 0.0000e+00 9.5000e+00 4.9000e+00 1.0321e+03 6.0000e+00 4.8000e+00 7.3000e+01 0.0000e+00 1.1200e+01 5.7000e+00 1.0317e+03 6.0000e+00 0.0000e+00 6.9000e+01 0.0000e+00 1.3500e+01 5.9000e+00 1.0310e+03 1.0000e+00 4.8000e+00 6.0000e+01 0.0000e+00 1.3000e+01 5.4000e+00 1.0304e+03 1.0000e+00 3.2000e+00 6.0000e+01 0.0000e+00 1.3900e+01 6.5000e+00 1.0300e+03 6.0000e+00 9.7000e+00 6.1000e+01 0.0000e+00 1.3500e+01 7.1000e+00 1.0304e+03 4.0000e+00 1.1300e+01 6.5000e+01 0.0000e+00 ...
82
Exemplo
octave:9> ledados('xpto')
Ooops... alguma coisa falhou em ledados. ans = [](0x0)
83
84
Exemplo
Testar graficotemp:
85
86
Exemplo
Testar:
87
88
Trabalho Prático 1
Obter dados de um servidor (URL)
Processar os dados
•
matrizes, cálculos, …
Gerar um gráfico
89
Trabalho Prático 1
Aulas
•
Apoio nas semanas 8-12 e 15-19
Entregas
•
Versão intermédia, 14 de Abril•
não conta para nota•
para “ensaiar” e para seguirmos o progresso•
Versão final•
Limite: 21 de Abril, recomendado: ~19 de Abril90