Software Livre em Ambiente Escolar
Software Livre em
Ambiente Escolar
Introdução à utilização de software livre em ambiente escolar como plataforma servidora,
tomando como exemplo o case­study da Escola Secundária Artística de Soares dos Reis
Departamento de Engenharia Informática
Instituto Superior de Engenharia do Porto
Porto, 20 de Dezembro de 2005
Fernando J. Leal
[email protected]
Software Livre
Software Livre em Ambiente Escolar
●
●
Software que pode ser usado, copiado, estudado, modificado e redistribuído sem qualquer restrição.
4 liberdades fundamentais:
–
a liberdade de executar o programa para qualquer propósito;
–
a liberdade de estudar e modificar o programa;
–
a liberdade de copiar o programa e ajudar o vizinho;
–
a liberdade de melhorar o programa e distribuir a modificação, por forma a que toda a comunidade beneficie
http://www.wikipedia.org/wiki/Free_software
http://www.gnu.org, http://www.fsf.org
Sistemas Operativos Livres
Software Livre em Ambiente Escolar
●
GNU/Linux
–
“Gnu's Not Unix”
–
Anunciado em 27­Set­1986
–
Objectivos:
●
●
●
●
compatibilidade com o Unix
permitir aos utilizadores a liberdade
de estudar, copiar, modificar e distribuir o sistema sem restrições
FreeBSD
–
descende do AT&T Unix via Berkeley Software Distribution (BSD)
–
é desenvolvido como um todo, ao contrário do GNU/Linux
–
desenvolvimento começou em 1993 a partir do 386BSD
Outros...
http://www.gnu.org, http://www.freebsd.org
Arquitectura Cliente­Servidor
Software Livre em Ambiente Escolar
●
●
●
●
Cada computador na Rede é ou um Cliente ou um Servidor
Servidores são normalmente máquinas potentes dedicadas ao atendimento dos Clientes
Eventos em sequência:
–
Cliente faz pedido
–
Servidor responde
ido
d
Pe
.
1
Servidor atende n clientes
em “simultâneo”
Servidor
sta
o
sp
e
R
2. Cliente
http://www.wikipedia.org/wiki/Client­server
Serviços na Web/LAN: DNS
Software Livre em Ambiente Escolar
●
●
●
●
Domain Name System (portos 53 TCP e UDP)
Guarda informação relativa a nomes de domínios numa base de dados distribuída
Torna possível fazer corresponder números IP (como 193.136.62.3) a nomes de domínios (como dei.isep.ipp.pt)
RFC 1034, 1035
http://en.wikipedia.org/wiki/Domain_Name_System
http://www.isc.org
Serviços na Web/LAN: DHCP
Software Livre em Ambiente Escolar
●
●
●
●
Dynamic Host Configuration Protocol (portos 67 e 68 UDP)
Distribui endereços IP numa rede (e informação adicional, como endereços de gateways, de servidores de DNS, de servidores de tempo, etc.)
Métodos de distribuição:
–
manual (de acordo com uma tabela construída a priori que associa números IP a endereços MAC)
–
automática (os endereços são distribuídos e associados aos MAC a partir de um conjunto de endereços disponível à medida que os postos os pedem)
–
dinâmica (idêntica à anterior, mas com reutilização de endereços – uma vez vencido o lease time sem que o endereçamento seja renovado pelo cliente, o IP passa a estar livre e pode ser reutilizado)
RFC 3315
http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol
Software Livre em Ambiente Escolar
Serviços na Web/LAN: SMTP
●
Simple Mail Transfer Protocol (porto 25 TCP)
●
Permite o envio de mensagens de correio electrónico
●
Comandos:
–
HELO <domínio><CRLF>
–
MAIL FROM: <endereço remetente><CRLF>
–
RCPT TO: <endereço destinatário><CRLF>
–
DATA<CRLF><mensagem><CRLF>.<CRLF>
●
RFC 2821
●
Exemplo de software : Sendmail (http://www.sendmail.org), Postfix (http://www.postfix.org)
http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol
Serviços na Web/LAN: POP3
Software Livre em Ambiente Escolar
●
●
●
Post­Office Protocol versão 3 (porto 110 TCP)
Permite a consulta a um servidor de correio electrónico e o download das mensagens armazenadas para um cliente local
Estados:
–
Authorization (comandos USER, PASS e QUIT)
–
Transaction (comandos STAT, LIST, RETR, DELE, RSET e TOP)
–
Update (comando QUIT)
●
Respostas: +OK (sucesso) e ­ERR (erro).
●
RFC 1939
●
Exemplo de software: Dovecot (http://www.dovecot.org)
http://en.wikipedia.org/wiki/Post_Office_Protocol
Serviços na Web/LAN: LDAP
Software Livre em Ambiente Escolar
●
●
●
●
Lightweight Directory Access Protocol
Simplificação do DAP – Directory Access Protocol – para lidar com directórios X.500
protocolo standard para a pesquisa e actualização de Serviços de Directório (um Directório é a base de dados que guarda informação sobre os objectos geridos pelo Serviço de Directório)
É usado numa LAN para guardar centralmente informação sobre utilizadores, grupos, recursos (postos de trabalho, impressoras), etc.
●
Sucede nos servidores do tipo Unix ao NIS – Network Information Service
●
RFC 1778, 1778, 1823, 2251...2256, 2307
http://www.wikipedia.org/wiki/Ldap
http://www.openldap.org
Serviços na Web/LAN: HTTP
Software Livre em Ambiente Escolar
●
●
HyperText Transfer Protocol (porto 80 TCP)
Possibilita o pedido e a recepção, pelos clientes, de informação normalmente guardada em ficheiros de servidores
●
Utilizado primariamente para a transferência de páginas HTML na Internet
●
Prevê uso de proxys
●
Evoluções:
–
HTTP 0.9
–
HTTP 1.0
–
HTTP 1.1 (versão actual)
http://www.w3.org/MarkUp/
http://en.wikipedia.org/wiki/HyperText_Transfer_Protocol
HTTP 0.9
Software Livre em Ambiente Escolar
●
●
●
Nunca chegou a ser muito usado, suporta apenas método GET
Não suporta POST, pelo que a quantidade de informação que o Cliente pode passar ao Servidor é limitada
Formato das mensagens:
–
Pedidos:
●
–
GET <URI><CRLF>
Respostas:
●
sequências de octetos, normalmente correspondentes a ficheiros no servidor
HTTP 0.9
Software Livre em Ambiente Escolar
●
Exemplo:
–
Ligação via telnet:
●
–
Pedido:
●
–
telnet www.dei.isep.ipp.pt 80
GET /teste.tmp
Resposta:
●
<!DOCTYPE HTML PUBLIC "­//IETF//DTD HTML 2.0//EN">
<HTML>
<HEAD><TITLE>Recurso Inexistente ­ Resource Not Available</TITLE>
<META HTTP­EQUIV="refresh" CONTENT="60;url=/index.html"></HEAD>
<BODY background="/bg.gif">
<H1>Recurso Inexistente ­ Resource Not Available</H1>
O acesso ao recurso especificado n&atilde;o foi poss&iacute;vel.
<BR>Access to the specified resource was not possible.<P>
<HR>
Para mais informa&ccedil;&otilde;es contacte (for further information please contact)
<ADDRESS>DEI ([email protected])</ADDRESS>
</BODY></HTML>
HTTP 1.0
Software Livre em Ambiente Escolar
●
●
●
Ainda em uso, especialmente por Proxy Servers
Admite conexões persistentes (mais do que um pedido­resposta por conexão), mas apenas para ligações directas entre Cliente e Servidor, sem Proxy
Exemplo:
–
●
Pedido:
–
●
telnet www.dei.isep.ipp.pt 80
GET /teste.tmp HTTP/1.0
RFC 1945
Resposta:
●
HTTP/1.1 404 Not Found
Date: Mon, 12 Dec 2005 11:55:39 GMT
Server: Apache
Last­Modified: Tue, 18 Jan 2005 10:57:02 GMT
ETag: "20247­221­41eceb7e"
Accept­Ranges: bytes
Content­Length: 545
Connection: close
Content­Type: text/html
<!DOCTYPE HTML PUBLIC "­//IETF//DTD HTML 2.0//EN">
(...)
Software Livre em Ambiente Escolar
HTTP 1.1
●
Versão actualmente mais usada
●
Admite conexões persistentes mesmo quando é usado Proxy
●
Admite o envio de vários pedidos concatenados antes de receber a primeira resposta – Pipelining
●
Comandos: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT
●
Exemplo:
–
●
Pedido:
–
●
telnet www.dei.isep.ipp.pt 80
GET /teste.tmp HTTP/1.1
Host: www.dei.isep.ipp.pt
RFC 2616
Resposta:
●
HTTP/1.1 404 Not Found
Date: Mon, 12 Dec 2005 12:00:10 GMT
Server: Apache
Last­Modified: Tue, 18 Jan 2005 10:57:02 GMT
ETag: "20247­221­41eceb7e"
Accept­Ranges: bytes
Content­Length: 545
Content­Type: text/html
<!DOCTYPE HTML PUBLIC "­//IETF//DTD HTML 2.0//EN">
(...)
Servidor de HTTP Apache
Software Livre em Ambiente Escolar
●
●
●
●
Software livre desenvolvido em regime open­source pela Apache Software Foundation
Disponível para plataformas *nix (Unix, Linux, BSD, ...), MS­Windows, Novell Netware, e outras
Usado por quase 70% dos servidores na Web (fonte: Netcraft Web Server Survey, Nov/2005)
Distribuído em vários pacotes comerciais: Oracle Database, IBM Websphere, MacOS­X, Novell Netware, ...
●
Implementa todas as funcionalidades do HTTP/1.1
●
Versão 2 melhora versão 1:
–
suporte para threads em Unix
–
nova API
–
suporte para IPv6
http://www.apache.org
SGBD PostgreSQL
Software Livre em Ambiente Escolar
●
●
●
●
Sistema de Gestão de Bases de Dados relacionais,
com características OOP ao nível do esquema
relacional (herança, polimorfismo)
Escuta no porto 5432 TCP
Suporta views, triggers (after, before e instead of), integridade referencial, transacções, procedimentos, funções, rules, tipos definidos pelo programador, etc...
Desenvolvido cooperativamente por equipa multidisciplinar distribuída por todo o Globo (universidades, empresas, Sun Microsystems, IBM, Red Hat, e outros...)
●
Suporta C, C++, Python, Perl, Java, SQL, Pl/pgSQL, Ruby, Tcl, R, ...
●
Software cliente (livre e multiplataforma): pgAdmin3 (http://www.pgadmin.org)
http://www.postgresql.org
PHP: Hypertext Preprocessor
Software Livre em Ambiente Escolar
●
●
●
Linguagem de programação usada primariamente para aplicações servidoras de conteúdos dinâmicos via Web
Corre sobre Linux, Unix, MS­Windows, MacOS, BSD, etc...
Permite ligação nativa a grande leque de SGBD: PostgreSQL, MySQL, Oracle, IBM DB2, MS­Sql Server, SQLite, etc... (pode ainda usar ODBC)
●
Trabalha com diversos servidores Web, nomeadamente Apache e IIS
●
Versão 5 (a actual) suporta OOP (programação orientada a objectos)
●
Acesso fácil à informação submetida pelo Cliente ($_GET, $_POST) e possibilidade de manter sessões no Servidor (session_start(), $_SESSION)
●
Código no ficheiro HTML entre tags “<?php” e “?>”
●
Documentação extensa disponível em www.php.net
http://www.php.net
PHP: Hypertext Preprocessor
Software Livre em Ambiente Escolar
●
Pedido por um ficheiro HTML via HTTP
1. GET ...
Apache
80/tcp
Cliente
●
2. ficheiro HTML
Servidor
Pedido por um ficheiro PHP via HTTP (com consulta a BD)
Apache
1. GET ...
80/tcp
5. HTML resultante
Cliente
6. ficheiro HTML
Servidor
2. invocação do interpretador PHP
PHP
4. retorno de
informação
3. consulta BD
PostgreSQL
PHP: Hypertext Preprocessor
Software Livre em Ambiente Escolar
●
Exemplo de código: “Olá, Mundo!”
–
Ficheiro­fonte (no servidor):
<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Teste</title>
<meta http­equiv="Content­Type" content="text/html;charset=iso­8859­1">
</head>
<body>
<h1>Teste</h1>
<p><?php echo('Olá, Mundo!') ?></p>
<p>
<?php
$arr=array('Isto', 'é', 'um', 'teste.');
foreach($arr as $x) echo($x.' ');
?>
</p>
</body>
</html>
PHP: Hypertext Preprocessor
Software Livre em Ambiente Escolar
●
Exemplo de código: “Olá, Mundo!”
–
Ficheiro recebido pelo Cliente:
<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Teste</title>
<meta http­equiv="Content­Type" content="text/html;charset=iso­8859­1">
</head>
<body>
<h1>Teste</h1>
<p>Olá, Mundo!</p>
<p>Isto é um teste. </p>
</body>
</html>
PHP: Hypertext Preprocessor
Software Livre em Ambiente Escolar
●
Exemplo de código: ligação a BD PostgreSQL
–
Ficheiro­fonte (no servidor):
<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http­equiv="Content­Type" content="text/html; charset=ISO­8859­1">
<title>Lista de Alunos</title>
</head>
<body>
<?php
$conn=@pg_connect('host=localhost port=5432 dbname=bd user=xpto password=pwd');
if ($conn) {
pg_set_client_encoding($conn, 'LATIN1');
$rs=pg_query('select id, nome from alunos order by nome');
while ($x=pg_fetch_array($rs)) {
?>
<p><?=$x['id']?> ­ <?=$x['nome']?></p>
<?php
}
} else echo('<p>Erro ao ligar à BD!</p>');
?>
</body>
</html>
PHP: Hypertext Preprocessor
Software Livre em Ambiente Escolar
●
Exemplo de código: ligação a BD PostgreSQL
–
Ficheiro recebido pelo Cliente:
<!DOCTYPE HTML PUBLIC "­//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http­equiv="Content­Type" content="text/html; charset=ISO­8859­1">
<title>Lista de Alunos</title>
</head>
<body>
<p>1 ­ Ana</p>
<p>2 ­ José</p>
<p>4 ­ Luísa</p>
<p>3 ­ Mário</p>
</body>
</html>
PHP: Hypertext Preprocessor
Software Livre em Ambiente Escolar
●
Exemplo de código: OOP
<?php
class Car {
public $miles; //variável pública, acessível fora da classe
private $mpg; //variável privada, só pode ser acedida dentro da classe
protected $mph;//variável protegida, só acessível dentro da classe e em classes derivadas desta
function __construct($param) { //construtor da classe, chamado aquando de cada instanciação
dosomething($param);
}
public function startcar() { //métodos podem ser públicos, privados ou protegidos
startthecar();
}
public function stopcar() {
stopthecar();
}
public function miles {
return $this­>miles;
}
}
$car = new Car($param);
echo $car­>miles;
//imprime o valor da propriedade "miles" da classe "Car"
?>
PHP: Hypertext Preprocessor
Software Livre em Ambiente Escolar
●
Exemplo: envio de e­mail
–
Mensagem em formato texto:
<?php
$rcpt='[email protected]';
$subject='Teste';
$message='Isto é um teste – 1, 2, 3...';
if (@mail($rcpt, $subject, $message)) echo('<p>Ok ­ e­mail enviado.</p>'); else echo('<p>Erro!</p>');
?>
­ Mensagem em formato HTML:
<?php
$rcpt='[email protected]';
$subject='Teste em HTML';
$headers='MIME­Version: 1.0\r\nContent­type: text/html; charset=iso­8859­1\r\n';
$message='<html><head><title>Teste</title></head>'
.'<body><h1>E­mail de teste</h1>'
.'<p>Data: '.htmlentities(date('d.M.Y H:i:s (l)')).'.</p>'
.'<p>E­mail: '.$rcpt.'</p>'
.'<p>Isto é um teste<br>1, 2, 3...</p>'
.'</body></html>';
if (@mail($rcpt, $subject, $message, $headers)) echo('<p>Ok ­ e­mail enviado.</p>'); else echo('<p>Erro!</p>');
?>
PHP: Hypertext Preprocessor
Software Livre em Ambiente Escolar
●
Extensões ao PHP:
–
PEAR, PHP Extension and Application Repository (http://pear.php.net)
–
PHPGTK, conjunto de classes que fazem a interface com as bibliotecas gráficas GTK+ (GIMP Toolkit, http://www.gtk.org), permitindo a escrita de aplicações gráficas, do lado do Cliente, em PHP (http://gtk.php.net)
–
Gnope, software multiplataforma de interface gráfica (para Windows, Linux, MacOS­X, e outros...) ­ usa PHP, GTK+ e PEAR (http://www.gnope.org)
–
SMARTY Template/Presentation Framework, permite separar o código PHP do desenho da interface. É útil em projectos em que o design de interfaces está atribuído a uma equipa de web­designers, e o desenvolvimento do código a uma equipa de programadores (http://smarty.php.net)
–
entre outros...
Escola Secundária Artística de Soares dos Reis (Porto) ­ essr.net
Software Livre em Ambiente Escolar
●
●
●
Tempo de desenvolvimento do sistema informático: 5 anos (2000­2005)
2 servidores dedicados e cerca de 90 postos de trabalho (entre PCs – ix86, x86_64 – e Macs, a correr GNU/Linux, MS­Windows e MacOS­X)
Ligação à Internet por ADSL a 1Mbit/s, com IP fixo, via Rede Ciência, Tecnologia e Sociedade (RCTS) – recurso disponível para todas as secundárias
Distribuição dos O.S. na LAN essr.net
●
Recursos na Net:
–
site da Escola
–
portal Web (livro de ponto informático,
lançamento de classificações, etc.)
–
fóruns
–
Moodle (plataforma de gestão de conteúdos pedagógicos)
–
e­mail, página pessoal e acesso remoto via SSH para toda a comunidade
GNU/Linux
MS­Windows
MacOS­X
Sistema de Informação Escolar (SIE)
Software Livre em Ambiente Escolar
●
●
Sistema desenvolvido de raiz na Soares dos Reis
Base de dados relacional implementada em SGBD PostgreSQL (pode ser usado outro) sobre GNU/Linux
●
Interfaces gráficas executáveis de gestão da informação em Java
●
Site institucional, portal, fóruns, Moodle e webmail desenvolvidos em PHP
Interfaces em browser
Site
Portal
Fóruns
Moodle
Webmail
Mailman
Apache
PHP
http://www.essr.net
http://torga.essr.net:8080
PostgreSQL
Interfaces Java
JDBC
Swing
Fim
Software Livre em Ambiente Escolar
●
Outras referências interessantes a software livre e open­source:
–
Catalog of Free and Open Source Software for Education, OSV http://www.osv.org.au/index.cgi?tid=155
–
Software Livre na Administração Pública (apresentação)
http://gul.dei.isep.ipp.pt/apresentacoes/ap/web/
–
Software Livre @ Administração Pública (site)
http://www.softwarelivre.citiap.gov.pt/
–
GULDEI ISEP, Grupo de Utilizadores de Linux do DEI­ISEP
http://gul.dei.isep.ipp.pt
–
Free Software Foundation
http://www.fsf.org
Apresentação desenvolvida em OpenOffice.org v2.0 (http://www.openoffice.org),
sobre o sistema operativo GNU/Linux, distribuição Ubuntu 5.10 “Breezy Badger” (http://www.ubuntulinux.org).
(c) 2005 Fernando J. Leal
É permitida a cópia e a livre distribuição.
Download

Sessão "Software Livre em Ambiente Escolar"