INF 533 - Programação para a Web   -  1º Semestre 2004

Prof. Célio Guimarães     IC - Unicamp

Atualizado em 06-Jul-04

Projeto Final da disciplina

O Projeto Final poderá ser entregue até o dia 2/08. Poderá ser feito em grupos de um até três alunos. Além do projeto uma página de documentação deverá ser colocada na Web com os nomes dos participantes. O grupo deverá informar-me por e-mail a URL onde se encontra o projeto.
Uma demonstração preliminar deverá ser feita no último dia de aula.

Ementa:

1ª Parte: programação no Cliente

Introdução à linguagem HTML via exemplos.
Introdução a XML: histórico, conceitos básicos, DTDs. Introdução a XHTML. Validação de documentos HTML 4.0 e XHTML.
A influência de XML sobre HTML: Cascading Style Sheets (CSS) - conceitos e exemplos.
Introdução aos protocolos http 1.0 e 1.1. O problema de "estado".
Introdução a Javascript: programação, eventos, formulários; discrepâncias no tratamento de eventos básicos entre Netscape e Internet Explorer. Experiências no laboratório com testes selecionados. Introdução a expressões regulares; validação de formulários em Javascript via expressões regulares.

Projeto da 1ª parte: desenvolvimento de uma aplicação simples envolvendo formulários, tabelas, CSS, Javascript e expressões regulares, em conformidade com os padrões HTML 4.01 ou XHTML (esta aplicação servirá de front-end para o projeto da 2ª Parte)

2ª Parte: programação no Servidor

Conceitos básicos de um Servidor Web; exemplo de configuração do Servidor Apache; segurança num Servidor Web. Introdução a uma linguagem script de programação para a Web, Php: semelhanças e diferenças da linguagem C; estruturas de dados, comandos, integração com o protocolo CGI.
O conceito de "sessão"; problemas com a característica de "falta de estado" (stateless) do protocolo http; soluções com cookies e outras técnicas para introduzir estado na aplicação.
Interface de Php com um gerenciador de base de dados relacional (SGBD); exemplos; introdução a interfaces genéricas independentes de SGBD. O uso de "templates" como interface de programação com "Web designers".

Projeto da 2ª Parte: desenvolvimento de uma aplicação no Servidor envolvendo estado, com dados persistentes armazenados num SGBD relacional (opcionalmente em arquivos ou Btrees) utilizando a interface da 1ª Parte.
Hints:


Como utilizar o MySQL na bidu.lab

O script mysql.php, aqui disponibilizado, tem duas finalidades:

Uma boa introdução à linguagem SQL e aos recursos do MySQL está no capítulo 3 do manual do MySQL (pg 128-158).
As funções da API de Php com MySQL estão descritas no "livro azul", p 230-231. (V. vai precisar usar apenas cerca de 8 delas, que serão detalhadas em aula).
Veja aqui o projeto das tabelas de uma BD muito simples, envolvendo torneios de tenis da ATP.
O capítulo 10 do "livro azul" tem vários exemplos simples do uso de MySQL via Php.
O Capítulo 6 do livro Fundamentos de Bancos de Dados possui uma introdução mais aprofundada da linguagem SQL.


Enviando via formulário scripts/documentos do ambiente Windows para seu homedir

Você poderá editar e testar scripts ou documentos html na bidu.lab a partir do ambiente Windows da seguinte forma:
  • No ambiente Linux crie num subdiretório do seu public_html um arquivo vazio com o nome do script/documento e com permissões wr (pois o usuário nobody do Apache vai reescrevê-lo durante o upload). Por exemplo:
    touch teste.php; chmod a+rw teste.php
  • Modifique a linha do script upload.php onde é definida a variável $dirname, colocando o caminho completo do diretório onde vai estar o seu script/documento.
  • A partir do browser no ambiente Windows invoque na bidu.lab o script upload.php entrando com o nome do script/documento que Você editou localmente (teste.php, por exemplo) e envie-o para o seu homedir clicando em submit.
  • Teste o seu script a partir do browser no ambiente Windows.
  • Quando seu script estiver depurado proteja-o novamente contra escritas de outros usuários! Obs: obviamente, V. também pode usar ftp para transmitir arquivos do ambiente Windows para seu homedir.

    Algumas referências para leitura e estudo:

    Introdução a linguagens de marcação.
    Trabalho pioneiro do criador da Web, Tim Berners-Lee,  An Information Infrastructure for High-Energy Physics
    Exemplos em  HTML e XML do livro "XML How to Program", Deitel et al, Pr. Hall 2001 (Capítulos 1 - 6).
    Esses exemplos serão abordados no curso e deverão ser trabalhados/modificados pelos alunos.
    Dois ótimos, simples e livres editores HTML para Windows: 1st Page 2000 e HTML - Kit. Ambos incluem o sistema Tidy de Dave Raggett para conversão de um documento HTML obedecendo à especificação HTML 4.0 ou XHTML além de recursos de reformatação (pretty print), etc.
    Tutorial sobre HTML de  Dave Raggett . Tutorial sobre  Cascading Style Sheets (CSS) do mesmo autor.
    Ótimo tutorial sobre CSS (encontrado pelo Mario Bernardinelli)
    Técnica tableless para projeto de páginas formatadas com colunas sem usar frames ou tabelas, preconizada pela w3.org e baseada em folhas de estilo. O mesmo exemplo acima, ligeiramente simplificado.
    Outro exemplo de página formatada em 3 colunas, sem tabelas
    Nomes de cores reconhecidos por Netscape e I. Explorer (mas não pela w3.org).
    Símbolos especiais do HTML (matemáticos, letras gregas, etc).
    Guia Mikodocs da Linguagem HTML
    Tutoriais (muito bons) do James Marshall.Em particular veja o tutorial sobre HTTP
    Um programa simples em C (usando sockets) que se conecta a um Servidor Web qualquer e permite "simular" um browser via comandos HTTP digitados pelo usuário.
    Outro tutorial sobre HTTP
    Introdução aos tipos de conteúdo MIME.
    Tutorial sobre   Javascript. Manual detalhado de Javascript 1.3 (Netscape)
    Eventos suportados por Javascript 1.3.
    Uma bela página pessoal de um guru do grupo Apache, Engelschall, com efeitos visuais simples em Javascript. Examine o código fonte: contém tabelas mas não frames conforme aparenta à primeira vista.
    Referência para XML: A Technical Introduction to XML
    Um pacote unificado, PHPTriad, para o ambiente Windows do Servidor Apache, PHP e Gerenciador de Base de Dados Mysql. De fácil instalação, recomendado para trabalhar em casa.

    Capítulo do livro "Web Database Applications", Hugh Williams, sobre controle de sessões em PHP.
    Veja um exemplo de sessão em Php envolvendo uma mini-aplicação com 3 páginas: pform.html, thanks.php e regform.php.

    Adodb é uma biblioteca que provê uma API genérica para acesso a BDs independente do SGBD (suporta um grande número de SGBDs).

    Uma introdução a templates através do pacote FastTemplates (open source).