* Linux na web
- Existem sites interativo na web (pergunta/resposta)
-- site de busca: yahoo, altavista, etc.
--- pedido: quero páginas na internet com certas palavras chaves
--- resposta: relação de páginas (URLs) com as palavras chaves
-- compra de livro
--- pedido: quero o preço de certo livro
--- resposta: preço do livro
--- pedido: quero comprar o livro
--- resposta: então me passe o seu cartão de crédito
--- pedido: aqui está o número do cartão
--- resposta: estamos embarcando o livro para o senhor
-- cadastro no ViaLinuxis: +http://www.pcs.usp.br/~jkinoshi
--- pedido: quero receber dicas de Linux neste email
--- resposta: você está inscrito na lista e passará a receber dicas do uso do Linux e webdesign
** cliente/servidor
- cliente: pede o serviço
-- o computador do usuário
-- preenche um formulário
- servidor: serve o pedido
-- o computador na internet
-- retorna uma resposta (pode ser um novo formulário)
- tema: Como desenvolver um servidor usando o Linux como plataforma de desenvolvimento de um site interativo?
** Como por um servidor no ar?
- hardware: um computador ligado na internet
-- ligação física - (diversas possibilidades): PPP, ethernet, speedy-ADSL, etc.
-- roteadores - cria rota para o computador,
-- firewall - evitar invasões
-- sistema de backup - armazena dados de forma duplicada
-- nonbreak - evita pane em winchester no caso de perda de energia - shutdown suave
-- Por que não alugar um site?
- software:
-- servidor web - envia páginas HTML estáticas ou respostas de formulários
-- programa de resposta a formulários:
--- roda no servidor: Perl, PHP, SQL,
--- roda no cliente: JavaScript, Java - especificado pelo servidor
** Objetivo: focar no software de resposta a formulários
- Como criar o software para tratar de formulários?
-- visão geral: internet e web
-- formulários:
--- cliente - JavaScript;
--- servidor - Perl, PHP
-- SQL (MySQL) - interface com Perl,PHP
- Outra possibilidade:
-- chat - applet Java
- estudo dos logs no Linux/Unix
:rem
11:06 11:09
- Objetivo: dar uma visão geral de como as coisas se encaixam dentro de um servidor web.
Hoje em dia é muito fácil e barato fazer um servidor web. Basta instalar o Linux (se estiver no RedHat, como servidor web, por exemplo) e conectá-lo em rede. Se você possui uma empresa com diversos micros e quiser colocar o Linux em sua rede local, basta inserí-lo em sua intranet. Já para se colocá-lo na internet existem diversas opções. Se você faz questão de ver seu próprio computador como um servidor web na internet, talvez a forma mais fácil (com várias desvantagens) é aproveitar a própria linha discada e seu computador pode entrar como servidor web toda vez que a conexão ppp for estabelecida. A nossa palestra não tem como objetivo ensinar a instalar a rede. O objetivo é o seguinte: uma vez que toda a instalação (cabeamento, placas de rede, configuração do DNS, firewall, roteamento, etc.) foi feita você vai querer disponibilizar informação ao usuário quer seja através de páginas HTML estáticas ou através de respostas a formulários.
Observação: você não precisa saber nada sobre firewall, roteadores, etc. Você pode alugar uma máquina Unix/Linux que proverá as informações que você quer. A palestra é adequada para você que está interessado em construir um site na internet interativo, onde algumas pessoas preenchem alguma informação que fica disponibilizada para outras pessoas.
Veja alguns casos onde isso ocorre:
- no Yahoo, você cadastra o seu próprio site preenchendo certos formulários. Esta informação pode ser visível por outras pessoas quando estiverm fazendo uma busca no Yahoo. O esquema é diferente do altavista onde se usa robos de internet.
- imagine um site para escolas. O professor preenhce em um formulário a nota dos alunos de sua classe. O pai pode consultar as notas pela internet. Isto é válido para frequencias de alunos etc. Indo mais além podemos pensar em educação à distância. Um possível caso de educação à distância é fazer com que o material que será apresentado para o aprendizado do aluno depende de suas respostas a testes. Os testes podem identificar quais são os pontos fortes e fracos dos alunos fazendo com que o tema de estudo varie conforme o desempenho do aluno.
- um site de laboratório médico. O laboratório coloca o resultado dos exames médicos na internet.
- o próprio ViaLinuxis onde o usuário se cadastra em um boletim (utilizando um formulário) e passa a receber informações.
- o fórum do ViaLinuxis.
- um sistema de compra e venda de mercadorias. Em um sistema de compra e venda, além de todo tratamento do formulário ainda existe o problema da conexão segura para a passagem do número de cartão crédito e isso não será discutido aqui.
- um sistema de chat.
Todos estes sistemas podem envolver o tratamento de formulários e a armazenagem de informação do lado do servidor. Pergunta: como se faz isso?
Existem diversas siglas que talvez você já tenha ouvido: java, javascript, perl, cgi, cookie, php, sql, etc. Todas estas tecnologias podem estar trabalhando em conjunto dentro do seu site. Tão importante quanto conhecer o que é javascript por exemplo, é saber como se deve aplicar na construção do site. Vamos apresentar como você pode trabalhar com tudo isso, construindo o seu servidor web. Eu pessoalmente costumo desenvolver um site dentro de minha máquina Linux e depois baixar o site em um outro servidor Unix (que pode ser um Linux ou uma Sun). É isso que pretendemos apresentar nesta palestra.
:/rem
** internet e web
- internet possibilita:
-- troca de arquivos: ftp
-- uso de um computador remotamente: telnet
-- web
--- o serviço mais popular da internet
--- visto via browser: netscape, explorer
:rem
11:37- 11:38
:/rem
*** Como começou a internet?
- Histórico: ligar computadores em rede sempre foi uma boa idéia.
-- compartilhar recursos: impressora, disco; trocar dados entre computadores, etc.
- Problema: quem estabelece o protocolo (forma de comunição)?
:[conexão física (cabo, pinagem do conector, velocidade de comunicação); definir o formato da mensagem ( controle - endereço origem/destino; os dados), etc. ?]
-- disputa: quem vence? A IBM? A Digital?
- Solução: vamos criar um protocolo independente do fabricante acima deste protocolo!
- internet: ligação entre as redes já existentes
-- os dados trafegam de um computador a outro passando em várias redes de computadores até chegar no computador final.
:rem
11:43-11:46
Os computadores surgiram no final da década de 40 e logo perceberam que era conveniente se ter computadores interligados entre si de forma a compartilharem recursos. O problema era que cada fabricante definia o seu próprio protocolo de transferência de dados e era muito difícil que os dados pudessem ser trocados entre diferentes computadores. As dificuldades envolvem problemas como:
- o número de fios que devem ser ligados entre um computador e outro.
- se a transferência de dados será síncrona (junto com um sinal de clock) ou assíncrona.
etc.
Mas independentemente do protoco no final das contas um computador acabará trocando dados com outro computador.
Imagine agora que estes dados, contenham informações num nível mais lógico como por exemplo, o endereço do computador com o qual o dado será trocado independentemente da rede física (telefone, satélite, cabo ethernet, etc.). Esta é a idéia da internet que significa "entre redes". A idéia é possibilitar conexões entre diversas redes de computadores não importando o tipo de rede (ethernet, token ring, via satélite, etc.) desde que todas as mensagens obedeçam uma certa estrutura lógica.
Imagine agora que você queira transferir um arquivo de 1 Mbyte de um computador a outro usando o modem. No meio da transferência ocorre um problema e o byte chega errado ao computador destino. Existem vários problemas: como será identificado o erro? Será que o erro só seria descoberto no final da transmissão, ou pior ainda, quando o arquivo estivesse em uso? Caso o erro foi detectado, será que seria necessário retransmitir todo o arquivo por causa de um byte errado?
Se a mensagem (o arquivo) for quebrada em pacotes então pode-se indentificar o erro verificando-se se o pacote foi transmitido de forma correta. Caso haja erro na transmissão do pacote então pede-se uma retransmissão.
:/rem
*** internet
- Surgiu no meio da guerra fria.
- problema: como garantir uma comunicação segura usando um meio de comunicação falho?
- 1: ao transferir um arquivo de 1 Mbyte ocorre um erro em um bit no meio da comunicação.
-- O que fazer?
--- retransmite tudo de novo?
---- E se ocorrer um outro erro em outro byte?
-- solução quebrar em pacotes
- 2: O que ocorre se o computador que está na rota dos dados for atingido por um míssil russo?
-- buscar rota alternativa para os novos pacotes que vem chegando.
:rem
11:47- 11:48
:/rem
**** Protocolo IP
- solução: quebrar a mensagem (ex: bytes do arquivo) em pacotes
- definiram o protocolo IP (base da internet) - transfere pacotes de dados de um computador a outro.
-- Cada computador recebe um número único no mundo: número IP
- O protocolo IP serve de base para:
-- o TCP que permite uma comunicação segura
-- o UDP que apenas troca pacotes (ex: envio de hora)
:rem
11:53-11:54
:/rem
**** Protocolo TCP
- Transmission Control Protocol
- quebra uma mensagem em pacotes ao enviar
- reagrupa os pacotes ao receber
- corrige erros
-- pede para retransmitir pacotes errados.
***** TCP/Conexão lógica.
- É como se tivesse um fio que liga dois computadores.
- cada ponta do fio está em um socket (dado por um número).
- Ex: o computador cliente quer se conectar com o porta 80 de 143.107.164.1
-- dados são enviados do cliente para o servidor e vice-versa.
*** serviços na internet (em TCP/IP)
- telnet: abre uma seção no computador destino:
- ftp (file transfer protocol): transfere arquivos entre os dois computadores (get,put,mget,mput).
- web (http): é como a maioria vê a internet. Através do http recebemos as páginas HTML que são mostradas nos browsers (netscape, explorer).
*** A web.
- O protocolo http (hypertext transfer protocol) surgiu em 1991 no laboratório CERN na Europa.
- Antes:
-- serviços como telnet, ftp, etc. usadae difundida no meio acadêmico.
-- perfil do usuário: acostumado com máquinas Unix que podia manipular os comandos com uma certa facilidade.
- Depois:
-- facilidade de uso
-- popularização
--- comércio eletrônico
--- aulas virtuais
**** O HTML
- HTML - linguagem de markup de hiper texto
- hipertexto = texto + tags (etiquetas).
-- Exemplo 1: Se eu quero escrever algo em negrito:
:pre
isto aparece em negrito.
:/pre
e se vê:
isto aparece em negrito.
-- Exemplo 2: links - leitura não sequencial
:pre
O HTML
:/pre
e se vê:
O HTML
**** Experiência: simulação do browser via telnet
- acesso ao servidor web via telnet.
Experimente:
:pre
telnet www.pcs.usp.br 80
GET /~jkinoshi/ HTTP/1.0 (ao digitar no windows nao ecoa)
dois enters
:/pre
- O que acontece?
-- a conexão foi feita
-- cliente: o pedido do arquivo /~jkinoshi/ foi feito via GET
-- servidor: envia a página retornada
-- servidor: encerra a conexão
- O servidor web tem de enviar as strings HTML
-- de arquivos .html
-- de saídas de programas (CGI-scripts)
**** Formulários
- o cliente: preenche dados do formulário - POST (ou envia dados via URL - GET)
- o servidor: lê, atende o pedido e monta resposta.
***** formulário HTML
*** Como surgiu o Linux?
- Linux Torvalds melhora o Minix (Andrew Tanembaum)
- roda GCC (GNU) - 1991
- desenvolvimento com base na internet.
- produtos para internet
- controle das versões do kernel por Linus Torvalds.
:rem
O finlandês Linux Torvalds resolver fazer alterações no sistema operacional Minix do holandês Andrew Tanembaum. Ele consegui rodar o compilador GCC do GNU. Ele queria construir um sistema operacional do tipo Unix e viu que sozinho não iria conseguir tal proeza, disponibilizou o código em uma lista de discussão, na internet, em 1991, passou a receber ajuda de diversas pessoas e hoje temos o Linux como é. Ou seja, o Linux nasceu na internet. Além disso, o Linux é disponibilizado na internet. Todas as distribuidores de Linux utilizam a internet para realizarem as suas distribuições. Você pode encontrar ainda documentação, listas de discussão, etc. na internet. O protocolo TCP/IP surgiu em ambiente Unix e o Linux está muito bem equipado para trocar informações na web.
:/rem
*** Linux (cliente/servidor)
- telnet
- ftp
- SQL
- web
- majordomo: controle de mailing-lists.
- entre outros serviços (ssh)
*** Linux como servidor web.
- provê páginas HTML
- dispara CGI-scripts
-- interface com banco de dados
-- interface com outros recursos (ex: email)
**** Exemplo: O ViaLinuxis - hospedado em uma máquina Linux.
- cadastro no boletim
- pedido de confirmação via email.
** Formulários
- lado Cliente
-- JavaScript
- lado Servidor
-- Perl
-- PHP
*** Cliente
- JavaScript
- applets Java
- flash
**** JavaScript
- linguagem script que roda no cliente.
- dispara funções dependendo dos eventos associados à página.
- útil em pré-verificação de formulários.
- "efeitos especiais"
-- mostrar URLs com efeitos especiais.
***** Exemplo simples.
- O HTML
:pre
:/pre
***** JavaScript x cookies.
- O que são cookies?
-- memória do computador do cliente que pode ser acessada pelo servidor
- Por que usar JavaScript com cookies?
****** Exemplo: JavaScript x cookies.
- preenchimento do email no subscribe do ViaLinuxis.
:pre