Projeto Integrador - 2010.1 - Equipe Coffee Break
Diario do Projeto
Equipe CoffeBreak
Subdominio coffeebreak.sj.ifsc.edu.br
IP Válido 200.135.37.103
Alunos: Caroline, Jesse, Mario Andre, Rodolfo
8/6/10 - Terça-feira
Física
- Separado os Rak's por equipe
- Colocado dois Path Panel e um organizador no armário da equipe
- Não tínhamos cabo grande o suficiente para alcançar o nosso RAK
Enlace
- Não foi feito nada nesse dia
Rede
- Escolhido nosso servidor
- Instalado o Ubuntu Server 10.04 LTS
- Instalado os aplicativos
- SSH ( com o sistema operacional )
- apache2
- bind9
- dhcp3-server
Aplicação
- Não foi feito nada nesse dia
9/6/10 - Quarta-feira
Física
- Passamos 3 Cabos do RACK principal até o RACK da nossa equipe
- Os cabos foram crimpados no Path Panel do RACK da equipe
- Instalado 3 áreas de trabalho (na parede)
Enlace
- Não foi feito nada nesse dia
Rede
- Configurado DHCP
- Configurado NTP
- Testado NTP OK
Aplicação
- Não foi feito nada nesse dia
10/6/10 - Quinta-feira
Física
- Crimpado os cabos no Path Panel do armário principal
- Testado todos os cabos, conexão com Path Panel e Área de trabalho
Enlace
- Não foi feito nada nesse dia
Rede
- Testado DHCP
- Configurado NAT e Roteamento
Aplicação
- Foi iniciado o processo de criação
- A estrutura do bando de dados MySQL foi projetada e implantada
Segue a estrutura do banco de dados:
--
-- Banco de Dados: `coffeebreak`
--
-- --------------------------------------------------------
--
-- Estrutura da tabela `anuncio`
--
CREATE TABLE IF NOT EXISTS `anuncio` (
`aid` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT,
`titulo` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`texto` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`link` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`visualizacoes` int(11) NOT NULL,
`visitas` int(11) NOT NULL,
`expira_em` datetime NOT NULL,
`expirado` char(1) NOT NULL,
PRIMARY KEY (`aid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=49 ;
-- --------------------------------------------------------
--
-- Estrutura da tabela `banner`
--
CREATE TABLE IF NOT EXISTS `banner` (
`bid` int(11) unsigned zerofill NOT NULL,
PRIMARY KEY (`bid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Estrutura da tabela `login`
--
CREATE TABLE IF NOT EXISTS `login` (
`id` int(6) unsigned zerofill NOT NULL AUTO_INCREMENT,
`usuario` varchar(100) NOT NULL,
`senha` varchar(255) NOT NULL,
`ultimo_ip` varchar(100) NOT NULL,
`ultima_data` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
11/6/10 - Sexta-feira
Física
- Não foi feito nada nesse dia
Enlace
- Manobrado os cabos do servidor direito até o switch do RAK Central para conexão com a COINF
Rede
- Configurado o Ip Válido
- Testado o DNS
- Colocado o servidor no armário da direita no laboratório de Redes 1
Aplicação
- Foi feito a conexão ao banco de dados orientado a objetos.
Segue o código (mysql.php):
<?
class conMysql {
var $servidor = "localhost";
var $usuario = "root";
var $senha = "4coffee4";
var $database = "coffeebreak";
var $validacao = "TGHDFEU1H5N5cUo2fHfUeHe1bUrheeaukghdyuGHEgh443256gyfegR";
var $query;
var $link;
var $resultado;
function conectar() {
$this->link = mysql_connect($this->servidor,$this->usuario,$this->senha);
if (!$this->link) {
echo "Falha na conexao com o Banco de Dados!<br />";
echo "Erro: " . mysql_error();
die();
} elseif (!mysql_select_db($this->database, $this->link)) {
echo "O Banco de Dados solicitado não pode ser aberto!<br />";
echo "Erro: " . mysql_error();
die();
}
} // fecha conectar
function desconectar() {
return mysql_close($this->link);
}
function executeQuery($query) {
$this->conectar();
$this->query=$query;
if($this->resultado=mysql_query($this->query)) {
$this->desconectar();
return $this->resultado;
} else {
echo "Ocorreu um erro na execução da SQL";
echo "Erro :" . mysql_error();
echo "SQL: " . $query;
die();
desconectar();
}
}
} // fecha class
?>
Estanciando e executando a Query:
require 'admin/mysql.php'; // Faz o requerimento da classe conMysql
$conexao = new conMysql(); // Faz o estanciamento
$conexao->executeQuery("select * from anuncio where expirado = 'n'"); // Executa a Query
14/6/10 - Segunda-feira
Física
- Iniciado a confecção dos pacth cord
Enlace
- Fomos informados pelo professor Casagrande que os patch cord prontos(que são do laboratório de Redes 1), usados na conexão cruzada nos RACKs das equipes tem que ser trocados, por path cord confeccionados pelas mesmas
Rede
Aplicação
- Foi implementado a página inicial do sistema. Página:
<table id="box-table-a" summary="Coffee Break">
<thead>
<tr>
<th scope="col">Título</th>
<th scope="col">Cliques</th>
<th scope="col">Tempo Restante</th>
<th scope="col">Expirado</th>
<th scope="col">Editar</th>
<th scope="col">Excluir</th>
</tr>
</thead>
<tbody>
<?
$conexao = new conMysql();
function transData($dataMySQL) {
$agora = date("Y-n-j H:i:s");
$data_atual = explode(' ', $agora);
$data_de_cadastro = explode(' ', $dataMySQL);
// Tranforma a difença entre as datas que estão no formato aaaa/mm/dd em dias faltantes.
$time_inicial = strtotime($data_atual[0]);
$time_final = strtotime($data_de_cadastro[0]);
$diferenca = $time_final - $time_inicial;
$dias = (int)floor( $diferenca / (60 * 60 * 24));
if ($dias <= 0) {
$dias = "";
} elseif ($dias == 1) {
$dias .= " dia";
} else {
$dias .= " dias";
}
return $dias;
}
// Se o banner estiver expirado, o mesmo é atualizado e a página do sistema é atualizada.
function atualizaBD($dataBD,$aid,$expirado) {
$agora = date("Y-n-j H:i:s");
$tempo_transcorrido = (strtotime($agora)-strtotime($dataBD));
if (($tempo_transcorrido > 0) && ($expirado != "s")) {
$conexao = new conMysql();
$conexao->executeQuery("update anuncio set expirado='s' where aid='$aid'");
echo("<script>window.location = 'sistema.php';</script>");
}
}
$resultado = $conexao->executeQuery("select * from anuncio order by expira_em desc");
// Gera as linhas da tabela
while ($busca = mysql_fetch_object($resultado)) {
atualizaBD($busca->expira_em,$busca->aid,$busca->expirado);
// Troca "n" ou "s" por "Sim" ou "Não".
if ($busca->expirado == n) {
$expirado = "Não";
} else {
$expirado = "Sim";
}
echo '<tr>
<td><a href="' . $busca->link . '">' . $busca->titulo . '</a></td>
<td>' . $busca->visitas . '</td>
<td>' . transData($busca->expira_em) . ' </td>
<td>' . $expirado . '</td>
<td><a href="sistema.php?action=editar&editar=' . $busca->aid . '">
<img src="imagens/edit.png" width="16" height="16" /></a></td>
<td><a href="excluir.php?action=excluir&excluir=' . $busca->aid . '" onClick="return confirmar();">
<img src="imagens/delete.png" width="16" height="16" /></a></td>
</tr>';
}
?>
</tbody>
</table>
15/6/10 - Terça-feira
Física
- confeccionado 4 path cord para conexão cruzada, para o RACK da equipe
- Testado os quatro path cord
- Colocados os quatro path cord no RACK da equipe
Enlace
Rede
Aplicação
Formulário de cadastro:
<form name="cadastrar" onSubmit="return formularios();" method="post" action="enviar.php?action=novo">
<table id="box-table-b" summary="Coffee Break">
<thead>
<tr>
<th scope="col" align="left">Cadastro de Anúcio</th>
<th scope="col" align="right"><? $data = date("j/n/Y"); $hora = date("H:i:s"); echo "Data: $data - Horário: $hora"; ?></th>
</tr>
</thead>
<tbody>
<tr>
<td><div class="encapsulador-300"><b>Título: </b><br /><input class="input-1" type="text" name="titulo"></div></td>
<td><div class="encapsulador-300"><b>Link: </b><br /><input class="input-1" type="text" name="link"></div></td>
</tr>
<tr>
<td colspan="2"><div class="encapsulador-680"><b>Texto: </b><br />
<textarea class="textarea-1" rows="10" name="texto"></textarea></div></td>
</tr>
<tr>
<td><div class="encapsulador-200"><b>Expira em: </b>
<input class="input-2" id="date" type="text" name="expira_em"></div></td>
<td><div class="encapsulador-200"><b>Expirado? </b>
<input type="radio" name="expirado" value="n" checked> Não -
<input type="radio" name="expirado" value="s"> Sim</div></td>
</tr>
<tr>
<td colspan="2"><div class="encapsulador-150-center">
<input name="enviar" type="submit" value=" Enviar "></div></td>
</tr>
</tbody>
</table>
</form>
Formulário de edição:
$conexao = new conMysql();
$busca = mysql_fetch_object($conexao->executeQuery("select * from anuncio where aid='$editar'"));
if ($busca->expirado == n) {
$marcacao_ex = "<input type=\"radio\" name=\"expirado\" value=\"n\" checked> Não -
<input type=\"radio\" name=\"expirado\" value=\"s\"> Sim";
} else {
$marcacao_ex = "<input type=\"radio\" name=\"expirado\" value=\"n\"> Não -
<input type=\"radio\" name=\"expirado\" value=\"s\" checked> Sim";
}
?>
<form name="atualizar" onSubmit="return formularios();" method="post" action="atualizar.php?action=atualizar">
<table id="box-table-b" summary="Coffee Break">
<thead>
<tr>
<th scope="col" align="left">Cadastro de Anúcio</th>
<th scope="col" align="right"><? $data = date("j/n/Y"); $hora = date("H:i:s"); echo "Data: $data - Horário: $hora"; ?></th>
</tr>
</thead>
<tbody>
<tr>
<td><div class="encapsulador-300"><b>Título: </b><br />
<input class="input-1" type="text" name="titulo" value="<? echo $busca->titulo ?>"></div></td>
<td><div class="encapsulador-300"><b>Link: </b><br />
<input class="input-1" type="text" name="link" value="<? echo $busca->link ?>"></div></td>
</tr>
<tr>
<td colspan="2"><div class="encapsulador-680"><b>Texto: </b><br />
<textarea class="textarea-1" rows="10" name="texto"><? echo $busca->texto ?></textarea></div></td>
</tr>
<tr>
<td><div class="encapsulador-200"><b>Expira em: </b>
<input class="input-2" id="date" type="text" name="expira_em" value="<? echo $busca->expira_em ?>"></div></td>
<td><div class="encapsulador-200"><b>Expirado? </b><? echo $marcacao_ex ?></div></td>
</tr>
<tr>
<td colspan="2"><div class="encapsulador-150-center">
<input type="hidden" name="atualizar" value="<? echo $editar ?>">
<input name="enviar" type="submit" value=" Atualizar "></div></td>
</tr>
</tbody>
</table>
</form>
Foi implementado nos formulários do sistema funções JavaScript para verificação dos campos. Exemplo:
<form name="enviar" onSubmit="return formularios();" method="post" action="atualizar.php?action=atualizar">
<input type="text" name="titulo">
<input name="enviar" type="submit" value="Enviar">
</form>
<script language="JavaScript">
function formularios(){
if (document.enviar.titulo.value=="") {
alert( "Entre com um título!" );
document.enviar.titulo.focus();
return false;
}
return true;
}
</script>
16/6/10 - Quarta-feira
Física
- Confeccionado 4 pacth cord para conexão cruzada, para o RACK principal
- Testado os quatro path cord
- Colocado os path cord no RACK principal(para fazer a conexão cruzada entre o path panel e o switch)
Enlace
Rede
- Instalados e configurados: Dansguardian, Squid, Firewall.
Aplicação
- Foi feito a página de atualizacao.php para receber dados do formulário de edição:
<?
$action = $_GET['action'];
$atualizar = $_POST['atualizar'];
$titulo = $_POST['titulo'];
$texto = $_POST['texto'];
$link = $_POST['link'];
$expira_em = $_POST['expira_em'];
$expirado = $_POST['expirado'];
if ($action == "atualizar") {
$conexao = new conMysql();
$conexao->executeQuery("update anuncio set titulo='$titulo',texto='$texto',link='$link',
expira_em='$expira_em',expirado='$expirado' where aid='$atualizar'");
echo "<center><b>Anúncio atualizado com sucesso!</b></center>";
echo "<center><a href=sistema.php>Voltar</a></center>";
} else {
echo "<center><b>Não há variáveis a serem processadas!</b></center>";
echo "<center><a href=sistema.php>Voltar</a></center>";
}
?>
Foi feito a página de enviar.php para receber dados do formulário de cadastro:
<?
$action = $_GET['action'];
$titulo = $_POST['titulo'];
$texto = $_POST['texto'];
$link = $_POST['link'];
$data = $_POST['expira_em'];
$expirado = $_POST['expirado'];
$hora = date("H:i:s");
$expira_em = "$data ". $hora;
if ($action == "novo") {
$conexao = new conMysql();
$conexao->executeQuery("insert into anuncio values(null,'$titulo','$texto','$link','0','0','$expira_em','$expirado')");
echo "<center><b>Anúncio cadastrado com sucesso!</b></center>";
echo "<center><a href=sistema.php>Voltar</a></center>";
} else {
echo "<center><b>Não há variáveis a serem processadas!</b></center>";
echo "<center><a href=sistema.php>Voltar</a></center>";
}
?>
17/6/10 - quinta-feira
Física
- CONCLUIDO
Enlace
Rede
Aplicação
- Função do item excluir que verifica se usuário tem certeza:
<script language='javascript'>
function confirmar() {
if( confirm( 'Tem certeza que deseja deletar?' ) ) {
return true;
} else {
return false;
}
}
</script>
Item deletar:
<td><a href="excluir.php?action=excluir&excluir=' . $busca->aid . '" onClick="return confirmar();">
<img src="imagens/delete.png" width="16" height="16" /></a></td>
Exemplo da ação:
18/6/10 - Sexta-feira
Física
- CONCLUIDO
Enlace
Rede
Aplicação
- Foi implantado um ítem de calendário nos formulários de Edição e Cadastro
Instalação e ativação:
<head>
<link rel="stylesheet" type="text/css" href="calendario/calendar.css">
<script type="text/javascript" src="calendario/mootools.js"></script>
<script type="text/javascript" src="calendario/calendar.js"></script>
<script type="text/javascript">
window.addEvent('domready', function() { myCal = new Calendar({ date: 'Y-m-d' }); });
</script>
</head>
Uso (id="data" no input ativa a função JavaScript):
<input class="input-2" id="date" type="text" name="expira_em">
Exemplo da ação:
21/6/10 - Segunda-feira
Física
- CONCLUIDO
Enlace
Rede
Aplicação
- Foi criado o design do sistema
Logo Coffee Break:
Página de login do sistema:
Página inicial do sistema:
22/6/10 - terça-feira
Física
- CONCLUIDO
Enlace
Rede
Aplicação
- Foi feita a página para autenticação do usuário no sistema
<? session_start(); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Coffee Break</title>
</head>
<body>
<?
require 'mysql.php';
$action = $_GET['action'];
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
if ($action == "login") {
$conexao = new conMysql();
$busca = mysql_fetch_object($conexao->executeQuery("select * from login"));
if (($busca->usuario == $usuario) && ($busca->senha == $senha)) {
$_SESSION['usercod'] = "$conexao->validacao$busca->usuario";
$_SESSION["ultimoAcesso"] = date("Y-n-j H:i:s");
echo("<script>window.location = 'index.php';</script>");
} else {
echo("<script>
alert(\"Usuário ou senha não conferem!\");
window.location = 'index.php';
</script>");
}
} else {
echo("<script>
alert(\"Nada a ser processado!\");
window.location = 'index.php';
</script>");
}
?>
</body>
</html>
- Em cada página importante do sistema foi incluso um código que verifica se o usuário é válido e se a sessão está expirada
$conexao = new conMysql();
$busca = mysql_fetch_object($conexao->executeQuery("select * from login"));
if ($_SESSION['usercod'] != "$conexao->validacao$busca->usuario") {
echo("<script>
alert(\"Você não está logado no sistema.\");
window.location = 'index.php';
</script>");
} else {
$dataSalva = $_SESSION["ultimoAcesso"];
$agora = date("Y-n-j H:i:s");
$tempo_transcorrido = (strtotime($agora)-strtotime($dataSalva));
if($tempo_transcorrido >= 600) {
// Se passaram 10 minutos ou mais
session_destroy();
echo("<script>
alert(\"Sessão expirada!\");
window.location = 'index.php';
</script>");
}else {
// Renova o tempo da sessão
$_SESSION["ultimoAcesso"] = $agora;
}
}
23/6/10 - Quarta-feira
Física
- CONCLUIDO
Enlace
Rede
Aplicação
- Nada foi feito
24/6/10 - Quinta-feira
Física
- CONCLUIDO
Enlace
Rede
Aplicação
- Nada foi feito
25/6/10 - Sexta-feira
Física
- CONCLUIDO
Enlace
Rede
Aplicação
- Foi colocado uma página com a logo da Equipe Coffee Break na pasta /var/www
- Endereço: http://www.coffeebreak.sj.ifsc.edu.br
- Observação: A página do sistema econtra-se no endereço: http://www.coffeebreak.sj.ifsc.edu.br/admin
Código da página:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Coffee Break</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="Grupo CoffeeBreak - IFSC - Projeto Integrador do Tec.
Telecomunicações com ênfase em redes. IFSC">
<meta name="keywords" content="coffeebreak, coffee, break, ifsc, cefet, cefetsc, projeto, integrador, grupo">
<meta name="author" content="coffeebreak">
<meta http-equiv="Language" content="Pt-Br">
<meta name="Robots" content="all">
<style type="text/css">
html, body {
width: 100%;
height: 100%;
margin: 0px;
padding: 0px;
}
#table {
width: 100%;
height: 100%;
display: table;
background: #f1f1f1;
}
#cell {
vertical-align: middle;
display: table-cell;
_position: absolute;
_top: 50%;
}
#conteudo {
width: 500px;
margin: auto;
padding: 20px;
_position: relative;
_top: -50%;
text-align: center;
}
</style>
</head>
<body>
<div id="table">
<div id="cell">
<div id="conteudo">
<img src="logo_coffeebreak.gif" width="293" height="293" />
</div>
</div>
</div>
</body>
</html>
28/6/10 - Segunda-feira
Física
- CONCLUIDO
Enlace
Rede
Aplicação
- Desenvolvimento do página que gera a imagem banner.png
// Página: banner_imagem.php
<?
require 'admin/mysql.php';
$agora = date("Y-n-j H:i:s");
$conexao = new conMysql();
$resultado = $conexao->executeQuery("select * from anuncio where expirado = 'n'");
$linhas = mysql_num_rows($resultado);
$linhas--;
$linha_aleatoria = rand(0, $linhas);
mysql_data_seek($resultado, $linha_aleatoria);
$busca = mysql_fetch_array($resultado, MYSQL_ASSOC);
$tempo_transcorrido = (strtotime($agora)-strtotime($busca[expira_em]));
// Verifica se o banner está expirado
if ($tempo_transcorrido < 0) {
// definindo as dimensoes da imagem: largura , altura
$imagem = imagecreate( 800, 70 );
// definindo a cor de fundo e do texto
$fundo = imagecolorallocate( $imagem, 102, 51, 0 );
$corTexto = imagecolorallocate( $imagem, 255, 255, 255 );
// cor de uma linha
$corLinha = imagecolorallocate( $imagem, 153, 102, 51 );
// Configuração da função imagettftext(imagem,tamanho,ângulo,X,Y,cor,arquivo da fonte,texto)
imagettftext($imagem, 12, 0, 10, 18, $corTexto, "/usr/share/fonts/truetype/freefont/FreeSans.ttf", $busca[titulo]);
// Conta 140 caracteres e inclui o restante na segunda linha
$texto = wordwrap($busca[texto], 140, "<br>");
$linha = explode("<br>", $texto);
// Configuração da função imagettftext(imagem,tamanho,ângulo,X,Y,cor,arquivo da fonte,texto)
imagettftext($imagem, 9, 0, 10, 43, $corTexto, "/usr/share/fonts/truetype/freefont/FreeSans.ttf", "$linha[0]");
imagettftext($imagem, 9, 0, 10, 59, $corTexto, "/usr/share/fonts/truetype/freefont/FreeSans.ttf", "$linha[1]");
// desenhando uma linha de largura 2px abaixo do texto
imagesetthickness ( $imagem, 2 );
imageline( $imagem, 5, 25, 790, 25, $corLinha );
// gravando o arquivo no subdiretorio imagens
// o usuario www-data deve ter permissao de escrita neste diretorio
imagepng( $imagem, "/var/www/imagens/banner.png" );
// retirando a figura da memoria
imagedestroy( $imagem );
// Salvando id do contador
$conexao->executeQuery("update banner set bid = '$busca[aid]'");
} else {
// Atualiza o banner se o mesmo estiver expirado
$conexao->executeQuery("update anuncio set expirado='s' where aid='$busca[aid]'");
}
?>
29/6/10 - Terça-feira
Física
Enlace
- Escolhido access point
- Configurado access point
- Acces point colocado no RACK da equipe e pronto para ser usado quando a parte de enlace estiver terminada
Rede
Aplicação
- Desenvolvimento da página que realiza a contagem dos cliques nos banners e faz o redirecionamento
// Página: contador.php
<?
require 'admin/mysql.php';
$action = $_GET['action'];
if ($action = "go") {
// Paga BID da tabela banner (banner que está sendo visualizado)
$conexao = new conMysql();
$resultado = $conexao->executeQuery("select bid from banner");
$bid = mysql_fetch_array($resultado, MYSQL_ASSOC);
// Executa um Query do banner gerado
$resultado = $conexao->executeQuery("select * from anuncio where aid='$bid[bid]'");
$busca = mysql_fetch_array($resultado, MYSQL_ASSOC);
// Adiciona +1 em vizualização
$visitas = $busca['visitas'];
$visitas++;
$conexao->executeQuery("update anuncio set visitas='$visitas' where aid='$bid[bid]'");
// Faz o redirecionamento para link do banner
header("Location: $busca[link]");
}
?>
30/6/10 - Quarta-feira
Física
Enlace
Rede
Aplicação
- Foi realizado alguns ajustes no sistema.
01/7/10 - Quinta-feira
Física
Enlace
Rede
Aplicação
- Configuração do servidor para gerar o banner
- Incluido um agendamento no /etc/crontab para gerar um novo banner.png a cada 3 minutos:
0-59/3 * * * * root wget -q http://localhost/banner_imagem.php > /dev/null
- Incluido o código HTML no DansGuardian para incluir o banner em todas as páginas que o cliente acessar.
Arquivo de configuração: /etc/dansguardian/lists/contentregexplist
"(<body[^>]*[^>]*>)"->"\1<center><div style="background-color: rgb(102,51,0)">
<a href="http://www.coffeebreak.sj.ifsc.edu.br/contador.php?action=go">
<img src="http://www.coffeebreak.sj.ifsc.edu.br/imagens/banner.png" border="0"></a></div></center>"
02/7/10 - Sexta-feira
Física
Enlace
Rede
Aplicação
- Foram realizados testes para verificação de possíveis erros no sistema
- Foi desenvolvida a documentação do sistema
05/7/10 - Segunda-feira
Física
Enlace
Rede
Aplicação
- Sistema concluído