Escolar Documentos
Profissional Documentos
Cultura Documentos
Revista PROGRAMAR 18
Revista PROGRAMAR 18
editorial
ndice
3
4
10
14
22
28
34
notcias
tema de capa
- Cloud Computing
a programar
- Interaco Python-MS
Office
- Subversion: Controlo
Total sobre o Software -
2. Parte
- Package Capture em
Java com JPCAP
- Algoritmo de Verhoeff
segurana
- Fundament os de
Segurana em Redes
equipa PROGRAMAR
coordenador
Miguel Pais
coordenador adjunto
Joel Ramos
editor
Pedro Abreu
redaco
Vtor Tomaz
Fernando Martins
Miguel Rentes
Fbio Correia
Ciro Cardoso
colaboradores
Antnio Silva
David Ferreira
Daniel Correira
Joo Matos
Jos Fontainhas
contacto
revistaprogramar
@portugal-a-programar.org
website
www.revista-programar.info
issn
1647-0710
O comeo de uma nova
etapa
Em Julho de 2007, j l to longe no
tempo regular, mas to perto na
escala temporal da revista Programar,
h portanto 9 edies, quase 2 anos,
algo aconteceu na revista Programar.
A sua primeira grande mudana havia
ocorrido e a sua estabilidade seria
posta prova nas futuras edies. Isto
porque uma das principais figuras
deste projecto, o seu primeiro
coordenador Srgio Santos, acabava,
no de abandonar, que projectos destes no se abandonam, mas sim passar o seu cargo
juntamente com todos os seus conhecimentos acumulados ao longo de mais de ano e meio
frente deste projecto... a mim.
Quem era eu? Melhor, quem ramos todos ns quando este projecto comeou? Nada mais que
simples jovens no seu mais puro estado de amadorismo (em que ainda nos encontramos) mas
com uma vontade que os fazia vingar na realizao dos seus projectos. Este foi um deles. Quem
diria que rapazes ainda no na sua maioridade conseguiriam a perseverana, a vontade, ou
simplesmente a carolice que faltou a muita gente grande. Por essa altura referia tambm que a
revista Programar era um projecto composto de mudana. Neste, coordenadores no saem ou
entram por falhas que tenham ocorrido, problemas, ou discusses, a mudana simplesmente
ocorre porque assim que deve ser, e a perpetuao de algum frente de um projecto como
este no apenas ao fim de algum tempo comea a trazer a no inovao que no se quer, como
rapidamente o sndrome do fundador se estabelece e entorpece inevitavelmente em seu
redor a vista s mentes que doutro modo mais longe poderiam ver. Isto tudo tem uma razo,
no que as capacidades de algum que antes traria mudana ao projecto tenham de sbito
desvanecido, apenas o confirmar das exigncias de uma vida que cada vez deixa menos
tempo para todos os hobbies, de modo a prosseguir essa carreira que em hobby comeou.
portanto, no com pena, mas como satisfao que anuncio que chegou altura do Joel
Ramos e do Pedro Caldeira, h praticamente tanto tempo neste projecto como eu, tomarem as
tarefas que lhes sempre estiveram destinadas, e as conduzirem da maneira que estes longos
meses de aprendizagem lhes ensinaram. Tenho a certeza que conduziro este projecto com
saber e dedicao, e que traro todas as inovaes que sabemos serem possveis mas que, tal
como este projecto na sua gestao, precisam de um pequeno salto de f para que se possam
realizar.
H de facto ainda muito a ser possvel. Quem sabe um dia a distribuio de umas quantas
edies em papel seja possvel. Quem sabe se um dia cada estudante no gostaria de ter
escrito pelo menos um artigo para este projecto. Quem sabe se este projecto at no poder
evoluir ou mudar de rumo de modo a se adaptar a outros meios que faam mais sentido nessa
altura que o actualmente adoptado. Mas para tudo isto ser possvel, tero de continuar a haver
pessoas cujos rostos se podem ver nas pginas seguintes, que participam e ajudam estes que
agora coordenam a realizar a rdua tarefa que tm em mos.
Espero que, da minha parte, tenha cumprido as vossas expectativas. J os novos
coordenadores tenho a certeza que cumpriro.
Miguel Pais
Coordenador Adjunto
desde a 4 edio,
a c t u a l me n t e o
Coor denador da
Revista Programar.
Frequenta o 2 ano do
curso de Engenharia
I nf or mt i ca e de
Computadores no IST.
<3>
notcias
Amazon apresenta Kindle 2
A Amazon apresentou esta segunda-feira a nova verso
do seu leitor de livros electrnicos. Oo Kindle 2 mais
fino e leve, apresentando nove milmetros de espessura e
300 gramas de peso. O preo mantm-se igual ao da
verso anterior, 359 dlares.
Nas melhorias ao nvel do design incluem-se o
acabamento de metal na parte de trs, assim como
pequenos botes de navegao, tanto do lado esquerdo
quanto direito. Um joystick substitui o volante scroll da
primeira verso do dispositivo.
Segundo a Amazon, o seu novo leitor de ebooks
apresenta uma autonomia melhorada em 25 por cento,
assim como maior capacidade de armazenamento, que
cresceu para os dois gigas. O Kindle 2 tem igualmente
uma opo para converter texto em voz, lendo livros aos
seus utilizadores.
O ecr mantm-se nas seis polegadas, com uma
resoluo de 600 por 800 pixis.
in Sapo Tek
Sapo Kids pe midos a programar sozinhos - Sistema Scratch apresenta, neste ms,
ferramentas criativas s crianas
Imagine-se que a professora pede um trabalho sobre vulces. Recorrendo ao sistema Scratch, integrado no Sapo Kids, que
ser lanado este ms, a criana pode criar um vdeo animado de forma a ilustrar a deslocao da lava.
Apresentado com mais uma janela do portal Sapo, a rea dos midos oferecer um painel de utenslios inovadores
pensados especialmente para pequenos internautas entre os quatro e os 11 anos. Trata-se de um espao inteiramente
dedicado a contedos pedaggicos e educativos, sublinha fonte da PT. O Sapo Kids permite acesso a mltiplos manuais
escolares com respectivas tarefas, note-se, mas a incluso do sistema Scratch em portugus a sua grande mais-valia.
Para exemplificar a sua utilidade a mesma fonte deu o exemplo do vulco.
Criado pelo Instituto Tecnolgico de Massachusetts (MIT)e inaugurado em Maio, o Scratch fornece gratuitamente o b- a-
b da programao informtica. Apresenta comandos de fcil utilizao, com que se consegue montar imagens, explica
a mesma fonte. A adeso das crianas norte-americanas tem sido de tal ordem que a cada dois minutos tem nascido um
novo projecto.
Pela primeira vez noutra lngua, a sua importao para Portugal prev ainda instalao no computador Magalhes. A
equipa da PT que preparou o modelo nacional preparou, inclusive, alguns ajustes para esse efeito. Por ser o primeiro pas a
adapt-lo, Portugal serve tambm de laboratrio para futuras aplicaes do sistema noutros pases. O contrato com a MIT
contempla ainda os direitos de distribuio para os todos pases de lngua portuguesa.
Outra das suas vantagens a garantia que d aos pais. Tem controlo parental nos acessos aos messenger e e-mail,
definindo estes a lista de nomes para quem os filhos podem contactar.
in Jornal de Notcias
Windows 7 a 3 de Outubro
Os ltimos dias tm sido ricos no que se refere a
novidades acerca do Windows 7. A estratgia de mercado
a utilizar tem sido uma constante no discurso da
Microsoft e, actualmente, j se sabe que o prximo
sistema operativo dever sair a 3 de Outubro deste ano e
em seis verses diferente.
A notcia surge com base na informao colocada no blog
de Lotta Bath, da equipa de parceiros da Microsoft
Sucia, onde o mesmo apresenta o roadmap at ao
lanamento do software. Segundo o texto, que de acordo
com o autor confirmado pelo product manager
Windows Michael Bohlin, o prximo sistema operativo
ter uma Release Candidate a 7 de Abril deste ano,
enquanto que a RTM do Windows 7 tem deadline
marcado para 3 de Outubro. O lanamento de uma RC2
no faz parte dos planos da empresa.
Esta notcia surgiu um dia aps a Microsoft anunciar que
o prximo sistema operativo estar disponvel em seis
verses diferentes: Starter - para netbooks -, Home
Basic, Home Premium, Professional, Enterprise e
Ultimate Edition.
in Sapo Tek
<4>
tema de capa
Cloud Computing
Introduo
O Cloud Computing uma das mais importantes tendncias
tecnolgicas dos prximos tempos. Mas o que afinal cloud
computing? No existe ainda uma definio clara, se quiser
um exemplo disso faa esta pergunta a cinco pessoas
ligadas tecnologia e provavelmente ir obter cinco ou at
mais respostas diferentes.
Existem opinies que dizem que tudo o que est fora da
firewall cloud computing, ou seja, um simples webservice
pode ser considerado cloud computing. Esta resposta at
faz sentido porque na realidade o processamento desse
webservice ocorre fora do nosso computador. No entanto,
cloud computing muito mais do que isso.
Essencialmente trata-se de afastar completamente a
computao e os dados dos computadores de secretria e
portteis, e simplesmente mostrar ao utilizador os
resultados da computao que ocorre numa localizao
centralizada (grandes datacenters) e transmitida via
Internet para o ecr do utilizador. Mais ainda, potenciar a
interaco entre o software, que neste paradigma reside na
nuvem, atravs de servios.
Estaremos ento a voltar poca dos terminais estpidos?
Iremos tentar perceber a resposta a esta pergunta mais
frente neste artigo, mas neste momento torna-se necessrio
perceber as mudanas que ocorreram no passado para
perceber o porqu dessas mudanas no futuro.
Olhando um pouco para a histria dos computadores, no
propriamente a partir do primeiro computador no sentido
do termo (computador humano, pessoa que realizava
clculos numricos), mas sim a partir do primeiro
computador electrnico, vamos tentar perceber as
mudanas nas arquitecturas dos sistemas e as razes que
levaram a essas mudanas.
Histria
Os primeiros computadores eram mquinas enormes, muito
pesadas e de elevado custo. Sempre que algum pretendia
realizar alguma computao tinha que se deslocar a esse
computador, do tamanho de uma sala, para a poder realizar.
O que importante reter que a computao comeou, por
razes econmicas, com uma arquitectura de centralizao
da informao.
Mais tarde surgiram os terminais. O uso de terminais j no
obrigava a que o operador se deslocasse ao computador
para poder realizar operaes e permitia ainda que
estivessem vrias pessoas a usar o computador em regime
de partilha de tempo de computao. A arquitectura
continua centralizada, todas as operaes so realizadas no
computador, sendo o terminal apenas um interface para
aceder ao computador.
medida que a Lei de Moore se vai manifestando, o
tamanho e custo dos computadores desce e torna-se prtica
comum a utilizao de computadores pessoais visto que j
era economicamente vivel ter um computador no
escritrio ou at em casa. Com o uso de computadores
pessoai s passa-se a uti l i zar uma arqui tectura
completamente descentralizada. Neste momento poderia
optar-se pelas duas arquitecturas, a centralizada que ainda
oferecia um custo mais baixo em termos de custo por
utilizador, ou um sistema completamente descentralizado
que oferecia uma maior autonomia e melhor interface aos
utilizadores.
Posteriormente surge a arquitectura cliente-servidor em
que existem computadores em ambos os lados. Algumas
partes do programa correm no computador-servidor e
outras correm no computador-cliente. Isto causa um
aumento da complexidade do software dada a necessidade
de comunicao e sincronizao entre as partes. Estamos
agora numa arquitectura mista.
Entretanto surge o primeiro Web browser que apenas
mostrava texto e praticamente todo o processamento era
realizado no lado do servidor. Voltamos novamente a uma
arquitectura completamente centralizada. As capacidades
deste tipo de aplicaes eram muito limitadas. Os Web
browsers evoluram, sendo j possvel correr cdigo de
aplicaes dentro destes, o que levou e leva a que apaream
cada vez mais aplicaes Web em detrimento de aplicaes
desktop.
Esta arquitectura cliente-servidor oferece algumas
<5>
tema de capa
vantagens tecnolgicas que naturalmente se tornam em
vantagens econmicas. A centralizao de todos os dados
no servidor um exemplo disso, que leva a um aumento da
segurana e reduo nos custos de manuteno.
Como pudemos observar, certa parte destas mudanas
aparecem por razes econmicas. Se uma arquitectura
diferente apresenta as mesmas funcionalidades a um preo
mais reduzido tende a ser cada vez mais adoptada.
Motivao
Chegamos agora parte mais importante. Com o
aparecimento de Web browsers com cada vez mais
capacidades e cada vez mais cumpridores dos standards, e
com as capacidades para acesso Internet que existem,
torna-se cada vez mais possvel a ideia de afastar
compl etamente a computao e os dados dos
computadores pessoais e mov-los para a nuvem.
Na base desta mudana esto, como mencionado
anteriormente, a evoluo tecnolgica que agora existe e
novamente as razes econmicas, nomeadamente com a
reduo de custos que essa mudana pode proporcionar.
Vamos agora dar uma vista de olhos nas prximas
tendncias na rea das tecnologias de informao para
tentar perceber se esta mudana ter ou no condies para
acontecer.
Prev-se que nos prximos anos, trs das principais
tendncias na rea das tecnologias de informao sejam a
mobilidade, o software como servio (SaaS) e o hardware
como servio (HaaS).
A mobilidade significa simplesmente que os notebooks vo
ficar em casa. Ou seja, vamos passar a levar connosco
dispositivos mais leves, mais pequenos e com a mesma
eficincia. Esses dispositivos compactos tero preos
relativamente baixos e sero munidos de aplicaes Web.
Software as a Service
Software como servio significa que muitas das aplicaes
de negcios sero contratadas no modelo servio em vez de
licena de software. No modelo SaaS a empresa paga na
proporo em que usa o software. Essa uma diferena
fundamental em relao ao preo fixo de uma licena. Com
o suporte de empresas como Oracle, SAP e Microsoft e de
lderes da internet, como Google e Amazon, o modelo de
desenvolvimento e distribuio SaaS tende a crescer muito
nos prximos anos.
Em vez de instalar software nos seus prprios servidores, as
empresas contratam o fornecimento desse software como
um servio. E em vez de pagarem uma licena de software,
pagam mensalmente um custo por utilizador ou pelas horas
em que os seus colaboradores estiveram a usar a aplicao.
A interaco com este software realizada da mesma forma
que se realizam as interaces com as aplicaes
empresariais modernas, ou seja, atravs de um Web
browser. As contas de webmail so um bom exemplo de um
software muito utilizado e fornecido como servio. Hoje em
dia, praticamente todas as aplicaes podem ser fornecidas
como servio.
Esta ideia no nova, pois no passado j existiram
Aplication Service Providers. No entanto, esta arquitectura
no teve grande sucesso porque esses fornecedores
dedi caram servi dores e programas a empresas
individualmente. O custo de operao e manuteno
individual de cada um desses servidores impossibilitou o
sucesso desta arquitectura. Os fornecedores de software
como servio trabalham com uma arquitectura diferente:
existe apenas uma instncia do software que serve os vrios
clientes. Apesar de cada cliente ter apenas acesso aos seus
dados e a uma verso personalizada da aplicao, existe
apenas uma instncia desse software a correr no servidor.
Esta arquitectura tem algumas vantagens tais como a
reduo de recursos ocupados no servidor e a reduo dos
custos de manuteno. Cada instncia de um software por
menor que seja requer logo cabea alguma memria e
algum processamento. Essa necessidade multiplicada por
muitos clientes pode tornar considervel esse custo inicial. A
arqui tectura de que vos estou a fal ar reduz
substancialmente essa necessidade dado que apenas existe
uma instncia, embora mais pesada, do software. Como j
foi referido, a manuteno est, neste caso, muito mais
facilitada dado que todas as correces de erros e novas
funcionalidades ficam imediatamente disponveis para
todos os utilizadores.
Os fornecedores disponibilizam ainda formas de os
utilizadores poderem personalizar a sua verso da
aplicao e at a partilha dessas personalizaes com outros
clientes. A maioria dos clientes deste tipo de fornecedores
so pequenas e mdias empresas, mas a constante
complexidade e custo de manuteno de aplicaes
internamente faz com que o nmero de clientes destes
fornecedores tenda a aumentar e a expandir-se a empresas
de maior dimenso.
Hardware as a Service
Hardware como servio significa que a adopo de novas
tecnologias de informao vai deixar de passar por investir
grandes quantias de dinheiro com equipamentos, passando
a adquirir a sua infra-estrutura como servio. A banda larga
de alta velocidade vai permitir colocar a infra-estrutura em
<6>
tema de capa
grandes datacenters com a mesma rapidez de resposta que
teria com uma soluo local.
A possibilidade de adquirir hardware como servio j existe
h muito tempo atravs dos fornecedores de alojamento.
No entanto esta opo enfrenta alguns problemas
complexos tais como a escalabilidade. Normalmente nestes
casos alugado um servidor dedicado o que leva a estarmos
limitados capacidade desse servidor.
Vamos agora pensar do ponto de vista empresarial. Imagine
que tem uma empresa e compra um servidor para dar
resposta s necessidades da sua empresa. Passado algum
tempo a sua empresa est a ter cada vez mais sucesso no
mercado, o seu servidor j no d resposta s necessidades
e tem que adquirir outro e depois mais outro Por alguma
razo o pas entra em recesso e o seu volume de negcios
desce bastante. Ora, para alm dos problemas que a
recesso lhe est a trazer tem ainda que se preocupar em
acabar de pagar os servidores que teve que adquirir e que
agora j no lhe fazem a mnima falta.
Outro exemplo da mais-valia que o hardware como servio
trs s empresas a capacidade de resposta a picos
temporrios. Imagine que a sua empresa tem que processar
um grande volume de dados no final do ms e tal no pode
ser feito de outra forma. Provavelmente ter que adquirir
tecnologia de servidor que estar a dar rendimento apenas
no final de cada ms.
Como j pudemos perceber trata-se de uma arquitectura
altamente escalvel porque permite aumentar ou diminuir a
capacidade do hardware numa questo de minutos. Alm
disso muito flexvel porque d a possibilidade aos
utilizadores de escolher quais as capacidades que cada
instncia ter. A fiabilidade outra grande arma dado que
tira partido de infra-estruturas gigantes, como por exemplo
a infra-estrutura da Amazon ou da Google. Um dos
exemplos mais conhecidos deste tipo de servio o Amazon
EC2 (Amazon Elastic Compute Cloud).
Desvantagens e/ou Preocupaes
At este momento s vimos vantagens neste paradigma,
mas naturalmente tambm existem desvantagens. Algumas
podem parecer desvantagens mas tratam-se apenas, at
prova em contrrio, de preocupaes. O primeiro
inconveniente tem logo a ver com a necessidade de
conectividade, pois sem conectividade no possvel
trabalhar. As ligaes com baixa largura de banda tambm
podero limitar bastante o funcionamento deste tipo de
servio caso a informao a transportar entre as partes seja
de elevada dimenso.
Outra das limitaes a apontar trata-se da privacidade e de
toda a segurana que tem que existir. Existe alguma
desconfiana quanto a deixar a cargo de outra empresa a
tarefa de guardar dados importantes, quer sejam pessoais
ou empresariais. Talvez este tema no se trate de uma
desvantagem mas, apenas e s, de uma preocupao.
Empresas que forneam estes servios vo ter o seu sucesso
ou insucesso muito intimamente ligados sua reputao, e
portanto os mecanismos de segurana sero uma das suas
principais preocupaes.
Outras existiro logo partida mas que tendero a
desaparecer com a evoluo, tais como a menor velocidade,
menor capacidade e menos funcionalidades que este tipo de
software ainda tem em relao ao software desktop.
Existem ainda algumas questes muito importantes por
resolver. Quem o detentor legal da informao e da
propriedade intelectual? quem contrata o servio ou quem
o disponibiliza? possvel que o fornecedor negue ao
utilizador acesso sua prpria informao? Estes e outros
assuntos ainda esto a ser debatido por empresas,
advogados e universidades.
Cloud Platforms
Uma das componentes mais importantes desta tendncia
a chegada das plataformas na nuvem. Este tipo de
plataformas permite aos programadores desenvolver
aplicaes que correm na nuvem, usar servios fornecidos
pela nuvem, ou ambos. Para compreender esta importncia
pense como as aplicaes so desenvolvidas actualmente.
Quando uma equipa de programadores cria uma aplicao, a
maioria das coisas que essa aplicao necessita j existem,
desde um sistema operativo que fornece o suporte bsico
para executar essa aplicao a outros computadores que
oferecem servios como, por exemplo, o armazenamento
em base de dados. Se para desenvolver um software
tivssemos que criar toda esta plataforma base existiriam
muito menos aplicaes nos dias de hoje.
Da mesma forma, se todas as equipas de desenvolvimento
que pretendessem criar uma aplicao para correr na nuvem
tivessem primeiro que criar a sua prpria plataforma
tambm no veramos muitas aplicaes a correr na nuvem.
Felizmente, os fornecedores esto cada vez mais a
responder a este desafio e j existem algumas plataformas
de desenvolvimento na nuvem. Para conseguirmos entender
melhor as plataformas na nuvem vamos tentar perceber
como que funcionam as plataformas locais.
As plataformas locais
Independentemente de uma plataforma ser local ou na
nuvem, pode ser vista como englobando trs componentes:
um software base para interagir com o hardware existente,
<7>
tema de capa
um grupo de servios fornecido pela infra-estrutura e um
conjunto de servios fornecidos por outras aplicaes.
Nos primeiros tempos da computao, a plataforma no era
mais do que um conjunto de software base. Quase todas as
aplicaes utilizam algum software base na mquina onde
correm, o que tipicamente inclui algumas funes de
suporte, tai s como um si stema operati vo base,
armazenamento standard e bibliotecas de tipos.
Nos anos 80 e 90, com a disseminao da computao
distribuda, foram adicionados servios disponibilizados pela
infra-estrutura, com o armazenamento remoto em ficheiros
e bases de dados, a integrao e a identidade a tornarem-se
muito utilizados.
Hoje em dia apesar de as aplicaes existirem acima de tudo
para fornecer servios a utilizadores finais, com a chegada
das aplicaes orientadas para servios, os servios
fornecidos por outras aplicaes locais tornaram-se tambm
parte da plataforma.
No fazendo directamente parte da plataforma, as
ferramentas de desenvolvimento so outra importante
parte desta histria porque ajudam os programadores a
construir aplicaes usando as trs componentes da
plataforma.
tero que lidar com aplicaes de uma escala bem maior,
onde o nmero de utilizadores ser tambm maior.
Vamos agora olhar para a camada base e identificar algumas
diferenas estruturais. Comeando pelo sistema operativo,
sero fornecidas instncias de sistemas operativos a correr
sobre mquinas virtuais. A utilizao de mquinas virtuais
permite que o utilizador possa escolher as capacidades que
quer ter na nuvem e, mais importante ainda, permite
expandir muito rapidamente essas capacidades em caso de
necessidade. No se esperam grandes limitaes quanto ao
sistema operativo a utilizar nas mquinas virtuais, e numa
primeira fase ser Linux o sistema operativo mais utilizado.
No entanto a Microsoft j est a desenvolver a sua
plataforma para a nuvem, a plataforma Azure, sendo difcil
neste momento prever se conseguir recuperar as
desvantagens que parece ter neste momento em relao a
Linux.
As plataformas na nuvem actuais no fornecem as mesmas
opes que uma plataforma local. Os programadores esto
limitados a poucas, ou at apenas a uma, formas de poder
obter suporte local. Relembro que ao estarmos a falar de
suporte local estamos a falar de, por exemplo, acesso a um
servidor de bases de dados a correr na prpria mquina ou
de frameworks sobre as quais as aplicaes correm. Estas
limitaes tambm so, de alguma forma, consequncias da
As plataformas na nuvem
O modelo de plataforma usado na nuvem muito
semelhante ao modelo que acabmos de ver. No entanto, e
dada as suas diferentes caractersticas, ir funcionar de
forma diferente em cada camada. Percebemos facilmente
isso se pensarmos na enorme necessidade de escalabilidade.
Enquanto as plataformas locais lidam, no mximo, com
aplicaes de nvel empresarial, as plataformas na nuvem
necessidade de escalabilidade mas tambm permitem aos
fornecedores focarem-se no desenvolvimento e optimizao
desse tipo de suporte.
Antes de falarmos sobre as caractersticas dos servios
fornecidos pela infra-estrutura na nuvem e por outras
aplicaes na nuvem importante perceber a interaco que
poder existir entre as duas plataformas
<8>
tema de capa
As plataformas locais podero tirar partido dos servios
fornecidos pelas plataformas na nuvem, tal como as
plataformas na nuvem podero tirar partido dos servios
fornecidos pelas plataformas locais. A mudana para
plataformas na nuvem ser em muitos casos uma mudana
progressiva. As aplicaes locais vo cada vez mais inter-
operar com servios e aplicaes que passaro a existir na
nuvem at que um dia todas, ou pelo menos a maioria,
estaro j a funcionar completamente na nuvem.
Quanto a servios fornecidos pela infra-estrutura, muitas
aplicaes locais no tiram partido deste tipo de servios.
Quando falamos de aplicaes na nuvem o mesmo poder
acontecer. Dada a normal existncia de apenas uma
instncia na nuvem poderemos ser levados a pensar que
funcionalidades como o armazenamento em bases de dados
e gesto de identidade passem a ser fornecidos cada vez
menos como servio e passem a fazer parte do prprio
software. Isto porque no existe a necessidade de partilhar
essa informao com outras instncias.
Este pode ser um caminho, mas o caminho contrrio ainda
mais vivel, ou seja, focar o desenvolvimento do software na
lgica de negcio e deixar a resoluo desse tipo de tarefas a
cargo de servios que ligamos ao nosso software e dos quais
tiramos partido. Vamos pensar, por exemplo, no servio de
gesto de identidade. O programador no tem que se
preocupar na forma de guardar e verificar a identidade dos
seus utilizadores, bastando-lhe apenas saber utilizar um
servio que lhe fornece soluo para essa e outras
preocupaes. uma mais-valia importante. As plataformas
que existem hoje em dia na nuvem tm normalmente um
servio de gesto de identidade associado. Trata-se de uma
limitao mas no deixa de ser um servio muito importante
para as aplicaes, at porque a interaco com outros
fornecedores de identidade cada vez mais possvel.
O servio de armazenamento de informao na nuvem um
dos mais atractivos, mas mesmo este tem necessariamente
que ter uma arquitectura diferente devido s caractersticas
da nuvem. Isto poder significar que os programadores
podero tirar partido deste tipo de servio mas poder
implicar mais algum trabalho no desenvolvimento se o
quiserem usar devidamente. Em relao a servios
fornecidos por outras aplicaes no parecem existir
grandes novidades. No entanto, a cada vez maior adopo
de arquitecturas orientadas ao servio vo potenciar ainda
mais a interaco entre as aplicaes, sejam elas locais ou
residentes na nuvem.
<9>
Concluso
Como se pode constatou anteriormente, as plataformas no
mudam muito ao longo do tempo. No entanto, sempre que
aparece uma nova plataforma que apresenta reais
vantagens em relao s existentes ela tende a ter um
impacto muito grande. As plataformas na nuvem ainda no
trazem todas as vantagens que as plataformas locais j
disponibilizam mas apresentam srias vantagens
competitivas. A adopo destas plataformas far parte do
nosso futuro enquanto programadores ou simples
utilizadores de informtica. Fica prometido para uma futura
edio uma anlise mais aprofundada s plataformas
existentes.
Referncias e Bibliografia
Wikipedia - Cloud Computing
HowStuffWorks.com Cloud Computing
GigaOM How cloud and utility computing are different
Cloud Computing Journal -What is Cloud Computing?
Linux Magazine - Computing In The Clouds: Setting
Expectations
Chapell & Associates - A Short Introduction to Cloud
Platforms
InfoWorld - What cloud computing really means
tema de capa
Vitor Tomaz estudante de Engenharia Informtica e
Computadores no ISEL bem como Trabalhador Independente na
rea de Tecnologias de Informao. Tem especial interesse por
Programao Concorrente, Segurana Informtica e Aplicaes
Web.
vitor.tomaz@portugal-a-programar.org
Vtor Tomaz
<10>
Interaco Python-MS
Office
Introduo
Interagir de forma automtica com as aplicaes Excel e
Word da Microsoft algo que permite eliminar tarefas
repetitivas e aborrecidas ao mesmo tempo que aumenta a
produtividade e reduz a possibilidade de erro humano.
Interagir com estas aplicaes atravs de Python bastante
simples, basta algumas linhas de cdigo para ler ou escrever
informao nesses documentos.
Antes de mais, necessrio termos o Office da Microsoft
correctamente instalados no Windows. De seguida, basta
ter o Python 2.6 e a extenso Python Python Win32
Extensions para a verso 2.6. data deste artigo a extenso
est disponvel para vrias verses de Python, at verso
2.6, pelo que se estiver a usar verses mais antigas de
Python provvel que a extenso a suporte. Espera-se uma
verso para Python 3.0 para breve.
Interaco
Uma vez tudo instalado necessrio compreender o modelo
de funcionamento da interaco envolvida. A interaco a
partir de um script de Python efectua-se atravs da
tecnologia COM e do Office Object Model, que permite
simular a utilizao da aplicao por parte de um utilizador
humano. Tal facto implica algumas restries. Dado que a
interaco simula um utilizador, necessrio que haja um
utilizador com sesso aberta no sistema e que o utilizador
no interaja com as aplicaes enquanto o script Python faz
a sua tarefa, dado que as aplicaes sero abertas durante a
operao.
Uma vez compreendido o modelo de interaco, a
codificao da interaco bastante simples. Os exemplos
seguintes seguem uma ordem lgica apenas por motivos de
melhor compreenso do artigo.
Para iniciar a interaco, necessrio recorrer extenso
que foi previamente instalada. Tal obtm-se carregando a
biblioteca win32com.client:
Para invocar a aplicao recorre-se ao objecto Dispatch,
importado no exemplo anterior, tendo como argumento a
aplicao que se pretende manipular e recebe-se um handler
que contm a ligao aplicao.
Para podermos observar a janela, necessrio torn-la
visvel, para tal atribui-se o valor 1 propriedade Visible.
Afectar o valor 0 propriedade torna a janela invisvel.
Para terminar a aplicao recorre-se ao mtodo Quit(),
sendo assim fechada a aplicao.
Por fim, liberta-se o handler que mantinha a ligao
Exemplo
O exemplo seguinte abre o Excel, torna-o visvel e por fim
termina a aplicao. Para executar o exemplo, garante que
no tem o Excel aberto. Provavelmente a execuo do
exemplo ser to rpida que o Excel quase no ser visvel
no ecr.
from win32com.client import Dispatch
xlApp = Dispatch("Excel.Application")
xlApp.Visible = 1
xlApp.Quit()
del xlApp
from win32com.client import Dispatch
xlApp = Dispatch("Excel.Application")
xlApp.Visible = 1
xlApp.Quit()
del xlApp
Manipular um Excel
O Excel Object Model indica quais os objectos, propriedades
e mtodos que se encontram disponveis para efectuar a
manipulao de um documento Excel. De forma simles,
Application refere a aplicao, Workbook refere um
documento, Worksheet refere uma pgina, Cell refere uma
a programar
<11>
clula e Range refere um conjunto de clulas.
Assim, para criar um novo documento, basta dizer
aplicao que esta deve adicionar um novo Workbook:
Criar uma nova folha ao documento bastante simples,
recorrendo ao documento activo, referenciado por
ActiveWorkbook, adiciona-se uma nova folha ao mesmo:
Atribuir ou ler valores s clulas de um folha igualmente
simples, basta referir a clula pela sua coordenada e atribuir-
lhe o valor pretendido, ou requisitar o valor actual:
Escrever um Excel
Eis um exemplo completo da criao de um documento
Excel de nome excel-python-pap.xls na raiz do disco C:. O
exemplo encontra-se comentado por forma a ser mais fcil
acompanhar o cdigo.
Antes de mais, necessrio efectuar uma ligao do Python
ao Excel.
Passando s clulas, fcil a atribuio de valores de vrios
tipos, desde texto a datas ou at frmulas do Excel.
As funcionalidades de formatao esto tambm
disponveis, permitindo uma visualizao mais atractiva ao
documento.
Por fim, o documento guardado e a ligao ao Excel
finalizada. Nota: Note-se que a execuo consecutiva deste
script far com que a segunda execuo aparea a janela de
confirmao de sobrescrita do documento, uma vez que
este j existe.
Aps a execuo do script o documento gerado ter o
seguinte aspecto:
xlSheet =
xlApp.ActiveWorkbook.Worksheets.Add()
# Atribuir valor
xlSheet.Cells(1,1).Value = Exemplo
# Ler valor
print xlSheet.Cells(1,1).Value
# Adicionar um novo documento
xlWbook = xlApp.Workbooks.Add()
# Eliminar todas as folhas excepto a
primeira
for i in range(xlWbook.Sheets.Count,
1, -1):
xlWbook.Sheets(i).Delete()
# Seleccionar a primeira folha
xlWbook.Sheets(1).Select()
xlSheet = xlWbook.ActiveSheet
# Alterar o nome da folha para
"Exemplo"
xlSheet.Name = "Exemplo"
# Atribuir strings
xlSheet.Cells(1,1).Value = 'Revista
Portugal-a-Programar'
xlSheet.Cells(2,1).Value = 'Python'
xlSheet.Cells(3,1).Value = 'Criada Em'
xlSheet.Cells(4,1).Value = 'Modificada
Em'
# Atribuir valor numrico
xlSheet.Cells(2,2).Value =
str(sys.version_info[0]) + "." +
str(sys.version_info[1])
# Atribuir uma data
xlSheet.Cells(3,2).Value =
datetime.date.today()
# Atribuir uma frmula
xlSheet.Cells(4,2).Formula = '=Now()'
xlApp.Workbooks.Add()
De seguida trabalhamos com o documento de forma a
ficarmos apenas com uma nica folha, cujo nome
modificado.
# -*- coding: iso-8859-15 -*-
from win32com.client import Dispatch
import datetime
import sys
# Efectuar ligao ao Excel
xlApp = Dispatch("Excel.Application")
xlApp.Visible = 1
a programar
<12>
Ler um Excel
A leitura de um Excel efectua-se com a mesma simplicidade
com que se efectua a escri ta. Para uma mel hor
exemplificao da potencialidade da interaco, este
exemplo contm algumas diferenas em relao ao anterior.
Assim, neste exemplo, o Excel no tornado visvel, ou seja,
a aplicao executa mas a janela nunca visvel para o
utilizador. Mesmo que o utilizador possua um documento
Excel aberto, o documento lido pelo script nunca tornado
visvel. No entanto, o comando de terminar a aplicao
executado e o Excel ser fechado.
Nota: O comando de trmino da aplicao far com que o
Excel termine e feche todos os documentos abertos, mesmo
que sejam documentos abertos pelo utilizador.
O script fica em espera caso a aplicao necessite de
interaco por parte do utilizador, como por exemplo se o
Excel questiona o utilizador se este pretende guardar
alteraes a um documento. Caso se pretenda que a
aplicao no seja terminada, ento o comando de trmino
da aplicao no deve ser executado. Tambm neste
exemplo, as referncias a alguns objectos do documento
Excel sero feitas pelo seu nome, ao contrrio do que
aconteceu no exemplo anterior onde essas referncias eram
efectuadas atravs dos seus indicies. Tal possvel porque o
modelo suporta estas duas formas de referncia para alguns
dos objectos.
Eis o exemplo completo da leitura do documento Excel
criado no exemplo acima. Este exemplo ir ler o documento
e mostrar na shell os valores presentes no documento. De
novo, o exemplo encontra-se comentado por forma a ser
mais fcil acompanhar o cdigo.
De novo, o exemplo comea por efectuar a ligao ao Excel
e de seguida abre o documento.
A folha seleccionada atravs do seu nome, em detrimento
da sua posio.
A leitura dos valores presentes nas clulas faz-se de forma
bastante simples, sendo o seu valor mostrado na consola.
Por fim, o documento fechado sem guardar alteraes e a
ligao ao Excel terminada.
Aps a execuo do script a consola ter o seguinte aspecto:
# Seleccionar a primeira folha de nome
'Exemplo'
xlWbook.Sheets('Exemplo').Select()
xlSheet = xlWbook.ActiveSheet
# Ler o cabealho
print xlSheet.Cells(1,1).Value
# Ler a verso
print xlSheet.Cells(2,1).Value,
xlSheet.Cells(2,2).Value
# Ler as datas
print xlSheet.Cells(3,1).Value,
str(xlSheet.Cells(3,2).Value)[0:8]
print xlSheet.Cells(4,1).Value,
xlSheet.Cells(4,2).Value
# -*- coding: iso-8859-15 -*-
from win32com.client import Dispatch
# Efectuar ligao ao Excel
xlApp = Dispatch("Excel.Application")
# Abre o documento
xlWbook =
xlApp.Workbooks.Open('C:\\excel-
python-pap.xls')
# Fechar sem guardar alteraes
xlApp.ActiveWorkbook.Close(SaveChanges=
0)
# Terminar aplicao
xlApp.Quit()
# Limpar memria
del xlApp
a programar
<13>
Controlo Total
Os exemplos anteriores ilustram a simplicidade com que se
interage com o Excel a partir de Python. Esta simplicidade
est presente mesmo em tarefas menos comuns quando se
automatizam operaes de manipulao de documento
como a leitura e escrita e informao. O exemplo seguinte
ilustra como possvel imprimir informao de forma
automtica e, por brincadeira, interagir com o sintetizador
de fala do sistema.
Nota: Este exemplo requer que o sistema possua o
sintetizador de fala e uma impressora correctamente
instalados. Em certas condies, o Excel questionar se
pretende instalar o sintetizador de fala, pelo que
necessrio responder afirmativamente de forma a ouvir a
frase Python rules!
Como sempre, o exemplo comea por efectuar a ligao ao
Excel e de seguida abre o documento.
A seleco da rea a utilizar na impresso efectuada
atravs das coordenadas da folha, seguindo-se o comando
de impresso do contedo dessa rea.
De seguida dada indicao para usar o motor de fala, uma
funcionalidade um pouco menos comum.
Por fim, a ligao ao Excel finalizada sem que o documento
seja actualizado.
Interaco com Outras Aplicaes
Os exemplos deste artigo centram-se na interaco com o
Excel, mas possvel interagir com outras aplicaes, como
o caso do Word e do Outlook. Essas interaces ficam
como exerccio ldico para o leitor.
A folha seleccionada por nome e no por ndice.
# -*- coding: iso-8859-15 -*-
from win32com.client import Dispatch
# Efectuar ligao ao Excel
xlApp = Dispatch("Excel.Application")
# Abre o documento
xlWbook =
xlApp.Workbooks.Open('C:\\excel-
python-pap.xls')
# Seleccionar a folha de nome
'Exemplo'
xlWbook.Sheets('Exemplo').Select()
xlSheet = xlWbook.ActiveSheet
# Seleccionar a informao a imprimir
xlSheet.PageSetup.PrintArea = "A1:B4"
# Imprimir as clulas seleccionadas
xlSheet.PrintOut()
# Falar
xlApp.Speech.Speak("Python rules!")
# Fechar sem guardar alteraes
xlApp.ActiveWorkbook.Close(SaveChanges=
0)
# Terminar aplicao
xlApp.Quit()
# Limpar memria
del xlApp
Apaixonado pela tecnologia desde cedo, ganhou o gosto pela
programao num ZX Spectrum 48K. Licenciou-se em Engenharia da
Linguagem e do Conhecimento e encontra-se actualmente a trabalhar
na dissertao do Mestrado de Informtica na FCUL. Profissional na rea
das tecnologias e sistemas de informao desde 1999, tem especial
interesse em manipulao de dados (ETL), integrao de sistemas,
limpeza de dados, business intelligence (data mining, data warehouse),
inteligncia artificial e processamento automtico de lngua natural.
fernando.martins@portugal-a-programar.org
Fernando Martins
a programar
<14>
Subversion: Controlo
Total sobre o Software -
2. Parte
Nesta 2. parte do artigo sobre Subversion (a 1. parte
encontra-se na edio n. 17), vamos ver como deveremos
usar o Subversion no dia-a-dia e tambm algumas das
ferramentas que existem actualmente e que se integram
bastante bem com o Subversion. Com estas ferramentas
poderemos tirar mais partido do Subversion, uma vez que
nos vo fornecer um conjunto de funcionalidades acrescidas
(entre as quais: disponibilidade do cdigo online,
autenticao e autorizao no repositrio, gesto das
alteraes feitas a cada reviso, facilidade em aferir as
diferenas entre as modificaes feitas numa cpia local de
trabalho e o repositrio central de cdigo), como veremos
em seguida.
No fim deste artigo apresenta-se bibliografia recomendada
para quem desejar extender os seus conhecimentos sobre
este sistema de controlo de verses de software, cada vez
mais utilizado hoje em dia.
Ciclo Normal de Trabalho com SVN
Checkout Inicial
Na maior parte das vezes, comea-se a usar um repositrio
de Subversion fazendo um checkout ao projecto em
questo. Ao fazer isto, criada na mquina local uma cpia
do projecto. Esta cpia contm a HEAD (ltima reviso) do
repositrio SVN que especificado na linha de comandos:
Apesar do exemplo acima fazer checkout da directoria
/trunk, pode-se igualmente escolher uma subdirectoria do
repositrio ao especificar o subdirectrio no URL:
Uma vez que o Subversion usa o modelo copia-modifica-
unifica em vez do modelo bloqueia-modifica-desbloqueia, o
utilizador pode logo comear a fazer alteraes aos ficheiros
e directorias na sua cpia de trabalho. Esta cpia de trabalho
igual a qualquer outra coleco de ficheiros e directorias no
computador. O utilizador pode editar e alterar os ficheiros,
navegar e mover pastas, ou at mesmo apagar a cpia de
trabalho inteira e trabalhar numa nova. Apesar de realmente
ser uma coleco de ficheiros e directorias como qualquer
outra, preciso sempre avisar o Subversion se se quiser re-
arranjar qualquer ficheiro ou directoria dentro da cpia de
trabalho. Por isso, deve-se sempre usar os comandos svn
copy ou svn move em vez dos comandos normais (Ctrl-C ou
Ctrl-X, por exemplo) para que essas alteraes sejam
reflectidas a todos os utilizadores quando fizerem um svn
update nas suas cpias de trabalho.
Cada directoria na cpia de trabalho local contm uma rea
administrativa, uma sub-directoria chamada .svn.
Normalmente, um comando de listagem de directrios no
mostra esta sub-directoria, mas no entanto uma directoria
muito importante que no se deve nunca apagar ou alterar.
O Subversion depende desta directoria para gerir a cpia de
trabalho de cada utilizador.
Pode-se tambm fazer um checkout especificando uma nova
directoria que vai passar a ser a nova cpia de trabalho
depois do URL do repositrio, nos parmetros do comando
de checkout:
$ svn checkout
http://exemplo.efacec.pt/repositorio/tr
unk/documentacao/pdfs directoriaNova
A directoriaNova/faq.pdf
A directoriaNova/userguide.pdf
A directoriaNova/manual-de-
instalacao.pdf
...
Checked out revision 327.
Isto coloca a cpia de trabalho numa directoria chamada
directoriaNova em vez da directoria trunk como tnhamos
visto previamente.
$ svn checkout
http://svn.exemplo.pt/repositorio/trunk
A trunk/subversion.dsw
A trunk/svn_check.dsp
A trunk/Makefile
A trunk/configure
A trunk/ficheiroA.c
...
Checked out revision 327.
$ svn checkout
http://svn.exemplo.pt/repositorio/trunk
/documentacao/pdfs
A trunk/documentacao/pdfs/faq.pdf
A
trunk/documentacao/pdfs/userguide.pdf
A trunk/documentacao/pdfs/manual-de-
instalacao.pdf
...
Checked out revision 327.
a programar
<15>
Ciclo normal de trabalho
O Subversion tem bastantes funcionalidades, opes,
possibilidades de uso, mas para uma utilizao diria s se
ir usar um sub-conjunto limitado das funcionalidades do
Subversion. O ciclo de trabalho tipicamente o seguinte:
Fazer um update cpia de trabalho
svn update
Fazer as alteraes necessrias aos ficheiros da cpia de
trabalho
svn add
svn delete
svn copy
svn move
Examinar as alteraes feitas
svn status
svn diff
svn revert
Unificar as alteraes feitas por outros utilizadores na
cpia de trabalho local
svn update
svn resolved
E por fim, e s agora, fazer uma submisso das alteraes
feitas na cpia de trabalho local para o repositrio de SVN
svn commit
O diagrama seguinte exemplifica melhor o ciclo normal de
desenvolvimento com o Subversion.
a programar
<16>
Propriedades do Subversion
O Subversion permite criar propriedades com verso nos
ficheiros e directorias (com os nomes que se quiser), bem
como propriedades sem verso nas revises. A nica
restrio encontra-se nas propriedades com o prefixo svn:
que so propriedades reservadas ao Subversion nesse
espao de nomes (namespace). Enquanto que as
propriedades fora deste espao de nomes podem ser usadas
para controlar o comportamento do Subversion, os
utilizadores no podem criar ou alterar propriedades do
espao de nomes svn:. Estas so:
Propriedades com verso
svn:executable - Se est presente num ficheiro, o
cliente de SVN far o ficheiro executvel em cpias de
trabalho em ambiente Unix; Em ambiente Windows, para
ser executvel basta ter a extenso .exe ou .bat.
svn:mime-type - Se est presente num ficheiro, o
valor indica o tipo MIME do ficheiro. Isto permite ao cliente
de SVN decidir se uma fuso (merging) contextual possvel
de ser feita durante um update, e pode tambm afectar
como o ficheiro se comporta quando procurado via web
browser;
svn:ignore - Se est presente numa directoria, o valor
uma lista de padres de ficheiros sem verso a serem
ignorados pelo subcomando svn status ou outros; Por
exemplo, *.log *.dmp core.*;
svn:keywords - Se est presente num ficheiro, o valor
diz ao cliente de SVN como expandir palavras-chave
(keywords) particulares dentro do ficheiro;
svn:eol-style - Se est presente num ficheiro, o valor
diz ao cliente de SVN como manipular o fim de uma linha no
ficheiro na cpia de trabalho; Por exemplo, CRLF (em
Windows) ou CR (em Unix/Linux);
svn:externals - Se est presente numa directoria, o
valor uma lista com vrios caminhos (paths) e URLs a que o
cliente de SVN dever fazer checkout; Esta propriedade
muito til quando se precisa de usar cdigo-fonte de
terceiras fontes mas que no precisamos que estejam
versionadas no repositrio de SVN;
svn:special - Se est presente num ficheiro, indica
que o ficheiro no um ficheiro normal, mas um link
simblico ou outro tipo especial de objecto;
svn:needs-lock - Se est presente num ficheiro, indica
ao cliente de SVN para colocar o ficheiro s para leitura na
cpia de trabalho, como uma nota de que esse ficheiro
dever ser bloqueado (locked) antes da sua edio (para
desta forma ganhar propriedades de escrita e garantir que
s um utilizador pode alterar esse ficheiro).
Propriedades sem verso
svn:author - Se est presente, contm o nome do
utilizador autenticado que criou a reviso (se no estiver
presente, a reviso foi feita anonimamente);
svn:date - contm o tempo UTC em que a reviso foi
criada, no formato ISO. O valor vem do relgio do servidor;
svn:log - contm a mensagem de log que descreve a
reviso; Esta mensagem pode ser alterada aps um commit,
caso hajam enganos na mensagem que se queria ter
colocado no commit;
svn:autoversioned - Se est presente, a reviso foi
criada com a funcionalidade de versionamento automtico.
URLs dos repositrios Subversion
Os repositrios de Subversion podem ser acedidos atravs
de vrios mtodos localmente no disco (directamente) ou
atravs de vrios protocolos de rede (indirectamente). A
localizao de um repositrio, no entanto, sempre um
URL. Em seguida apresenta--se uma tabela que descreve
como os diferentes URLs mapeam os diferentes mtodos de
acesso a um repositrio Subversion.
Mtodo de acesso Esquema
file:// Acesso directo ao repositrio (disco local).
Acesso via protocolo WebDAV para o servidor
Apache do Subversion
http://
https:// O mesmo que para http:, mas com encriptao
SSL (mais seguro)
svn:// Acesso via protocolo svn a um servidor a correr
svnserve
svn+ssh:// O mesmo que svn:, mas atravs de um tnel
SSH
Nota: Se se usar o SVN em DOS, as barras devem ser como
numa directoria em Linux (/) e no da forma nativa
( \ ). Exempl o: fi l e: / / / reposi tori o/ pasta/ e no
file:///repositorio\pasta\
Ajuda do SVN
Um dos mais importantes comandos do SVN o svn help. A
qualquer momento, um
svn help sub-comando
descreve a sintaxe, os switches que podem ser usados e o
comportamento normal desse sub-comando.
a programar
<17>
Instalao do SVN
Instalao em Linux (distribuio Ubuntu)
A instalao do subversion em Ubuntu extremamente
simples e funcional. Basta fazer numa linha de comandos:
Instalao em Windows (TortoiseSVN)
A instalao em Windows pode ser feita de duas maneiras:
instalando os binrios do cliente/servidor de SVN (e passa-se
a usar apenas o subversion numa shell DOS, o que no
muito interessante para os utilizadores do Windows), ou
instala-se um cliente grfico para Windows: um dos
melhores actualmente o TortoiseSVN. Vejamos a seguir
como instalar o TortoiseSVN (apenas para Windows):
1. Descarregar o TortoiseSVN no site oficial de
downloads;
2. Duplo-clique no instalador .msi e resta apenas
seguir as instrues apresentadas;
3. Um reboot ser necessrio para o TortoiseSVN ser
correctamente instalado.
Uma das principais vantagens de uso do TortoiseSVN a
integrao que tem no Windows explorer (clique no boto
direito do rato faz surgir no menu de contexto as opes do
TortoiseSVN) independentemente de outros clientes
grficos que estejamos a usar. Outra grande vantagem a
sobreposio de cones no Windows: nas pastas que sejam
de cpias locais de trabalho SVN, os cones das pastas e dos
ficheiros so alterados para indicar visualmente o estado da
cpia local de trabalho; em suma, o programador v
instantaneamente o estado da sua cpia local de trabalho
sem necessitar de fazer um svn status, o que realmente
muito bom.
Componentes do Subversion
Uma vez instalado o Subversion, temos uma srie de
diferentes componentes deste software ao nosso dispr:
svn: o programa cliente de linha de comandos;
svnversion: o programa para reportar o estado (em
termos das revises do software) de uma cpia de trabalho;
svnlook: a ferramenta para inspeccionar o estado de
um repositrio de Subversion;
svnadmin: a ferramenta para criar, alterar ou reparar
um repositrio de Subversion;
svndumpfilter: o programa para filtrar os dump
streams do Subversion;
mod_dav_svn: um mdulo de plugins para o servidor
HTTP da Apache, usado para colocar o repositrio disponvel
a outros utilizadores atravs de uma rede;
svnserve: um programa servidor, que corre como um
processo (daemon) ou pode ser tambm invocado via SSH;
outra forma de tornar o repositrio disponvel a outros
utilizadores atravs de uma rede, atravs do protocolo svn,
em vez de se usar o servidor HTTP da Apache.
Configurao do servidor de HTTP Apache
Nesta seco vamos ver como configurar o servidor HTTP da
Apache para usar URLs que pertenam a repositrios SVN,
usufruindo deste modo da autenticao e autorizao
fornecidos por este servidor. Os passos que se seguem so
para Linux (distribuio Ubuntu), mas para Windows em
tudo semelhante (os comandos para criar e popular um
repositrio podem ser todos feitos recorrendo ao
TortoiseSVN(http://tortoisesvn.tigris.org/)).
Neste momento temos um repositrio SVN para o ProjX,
mas que est vazio, sem ficheiros. Para popular o repositrio
com ficheiros, teremos que ter outra pasta que tem todos os
ficheiros que queremos adicionar ao projecto SVN:
$ ls -F /tmp/ProjX
trunk/ tags/ branches/
$ ls -F trunk
pasta1/ pasta2/ README.txt CHANGELOG
ficheiro1.c ficheiro1.h
Esta pasta /tmp/ProjX tem todo o cdigo que vamos querer
importar para o repositrio. Depois disso, podemos apagar
esta pasta, pois todo o seu contedo j estar no repositrio
SVN. Resta portanto, importar o contedo desta pasta para
o nosso repositrio SVN:
$ svnadmin create /home/projecto/ProjX
$ ls /home/projecto/ProjX
conf/ dav/ db/ format hooks/
locks/ README.txt
sudo apt-get install subversion
libapache2-svn
a programar
<18>
$ svn import /tmp/ProjX
file:///home/projecto/ProjX -m import
inicial
Notas: No colocar / no fim dos caminhos ( /tmp/ProjX e
no /tmp/ProjX/; o mesmo para o segundo caminho
indicado); O nome para o projecto, neste caso ProjX, dever
ser coincidente nos dois caminhos apresentados.
Em Windows, estes comandos para criar e popular um
repositrio so facilmente reproduzidos com o TortoiseSVN,
carregando com o boto direito do rato para aceder s
opes de criar um repositrio e importar dados.
Depois de importar os dados com sucesso, vamos transferir
o contedo de ProjX para uma cpia local de trabalho:
$ svn checkout
file:///home/projecto/ProjX/trunk
nome-do-projecto
A nome-do-projecto/pasta1
A nome-do-projecto/pasta2
A nome-do-projecto/README.txt