você está aqui: Home  → Arquivo de Mensagens

Ebook Gratuito: Dá para fazer em Shell?, com o Prof. Julio Neves

Troca de Imagens Automática em Páginas Web

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 10 de Agosto de 1999

A página principal do novo site da Unicamp exibe a cada chamada uma figura diferente de uma parte do Campus.

Esta facilidade foi implementada por meio de um script CGI que seleciona aleatoriamente uma imagem. A lista das imagens fica em um arquivo, onde cada linha contem o nome de uma imagem.

A chamada ao script CGI na página se dá através da seguinte diretiva:

<img src="http://www.unicamp.br/cgi-bin/unicamp/wrap.cgi"
alt="Conheça a Unicamp" width="200" height="167">


O script que realiza a carga da imagem chama-se wrap.cgi
e é bastante simples, como se pode ver abaixo:

#!/bin/ksh # WRAP.CGI # Queiroz/Gian 11/02/1999 # leitura do primeiro arquivo imagem de GIFLIST # imagem aleatoria LOWER=1 LENGTH=14 JPGn=perl -e "print int(rand($LENGTH+1))+$LOWER;" JPG=sed -n -e ${JPGn}p giflist

echo "Expires: Friday, 30-Sep-94 12:00:00 GMT" echo "Content-type: image/jpeg" echo cat $JPG

As variáveis LOWER e LENGTH indicam os valores 
possíveis que podem ser atribuídos aleatoriamente
à variável JPGn, calculada utilizando-se a linguagem
perl. 

A variável que contem o nome da imagem é JPG e seu valor
é atribuído com o comando sed. A flag -n indica que
o comando sed deve suprimir a saída padrão, e a flag
-e indica que o sed deve imprimir a linha correspondente
ao valor da variável JPGn. O comportamento padrão do
sed seria imprimir a linha selecionada duas vezes e 
todas as demais linhas uma vez. Com a flag -n apenas
a linha selecionada é impressa. Este valor, por sua
vez, é atribuído à variável JPG.

O restante do script insere as linhas padrão para
comunicação com o servidor Web.
foi abordada anteriormente na Dicas-L nas mensagens

A dica do uso do perl para a geração do número aleatório
foi-nos fornecida por Eduardo Maçan [macan@thecore.com.br]



Veja a relação completa dos artigos de Rubens Queiroz de Almeida