Professional Documents
Culture Documents
índice
3 notícias
4 te m a de capa
11 a program ar
24 s e gurança
28 te cnol ogias
31 tutorial
37 gnu/l inux
40 anál is e s
41 inte rne t
42 bl ue s cre e n
43 com unidade
e q u ipa PR O G R A M A R
coorde nador
Um ano, s e is e diçõe s
S érg io S antos
Es ta s e xta e dição m arca o finaldo prim e iro ano da Re vis ta
coorde nador adjunto PRO G RAM AR. Para nós trata-s e de um fe ito, para al ém de te rm os
M ig ue lPais cons e guido e ditar s e is e diçõe s , o facto de o proje cto te r
cre s cido de e dição para e dição, com m ais e m e l h ore s artigos ,
re dacção m ais participante s e , principal m e nte , m ais l
e itore s . M uitas ve ze s ,
M igue lW ah non ne s te tipo de proje cto, o m ais difícilnão é re unir um conjunto de
Fábio Corre ia artigos e form ar um a re vis ta, é cons e guir m ante r o proje cto
D iogo Al ve s
João M atos activo e , s e pos s íve l
, e m e vol
ução, na dire cção dos l e itore s .
Fábio Pe dros a
Pe dro Ve rrum e Ne s ta e dição contam os com um te m a de capa m ais e xte ns o q ue
Luís Re nte o norm al , vantage ns de s e r um a re vis ta onl ine , s e m
Tiago Sal gado re s pons abil idade s para com e ditoras . Es pe ram os q ue o te m a s e ja
Joe lRam os
do vos s o agrado e , cas o s e ja de s conh e cido, o q ue de ve rá
col
aboradore s aconte ce r ainda para m uitos , q ue abram a m e nte e
Rui G onçal ve s e xpe rim e nte m um a nova m ane ira de ve r a program ação, ne m
D anie lCorre ia q ue s e ja pe l os frutos q ue de l a pode rão e xtrair futuram e nte . Te m os
Jos é O l
ive ria tam bém um a nova s e cção, "Se gurança", q ue s urge na
continuação do trabal h o e fe ctuado na te rce ira e dição da re vis ta.
contacto
re vis taprog ram ar
Ne s te m om e nto cons e guim os atingir um a varie dade
Sérgio Santos
<2 >
notícias
<3 >
te m a de capa
(define a 5)
(define b #t)
(define c ‘(1 2 3))
(define d (+ 1 2 3 a))
<4 >
te m a de capa
<5 >
te m a de capa
M uito s im ple s . No e ntanto, e s e q uis és s e m os A aval iação e inte rpre tação de e xpre s s õe s
com pl icar a cois a, pode ríam os pôr com o e m Sch e m e pode pare ce r confus a por não
e xpre s s ão de # t ou de # f, um outro if e s tarm os h abituados à notação no e ntanto
e ncade ado e portanto te ríam os , por ficam aq ui al guns e xe m pl os q ue pe ns o
e xe m pl o: s e re m bas tante e l
ucidativos :
0! = 1
n! = n(n-1)!
(define (factorial n)
(if (= n 0)
1
(* n (factorial ( - n 1)))))
<6 >
te m a de capa
Para re s ol ve rm os o probl
e m a de de ixarm os Um a ve z, m ais , o acum ul ador é actual izado
ope raçõe s pe nde nte s , pode ríam os m e l
h orar de ite ração e m ite ração com a s om a do
e s te al goritm o ge rando um proce s s o acum ul ador pas s ado da ite ração ante rior
ite rativo. com o n da actualite ração.
D e s ta ve z, o val or do acum ul ador pas s ado
(define (factorial n) à função inte rna na prim e ira ite ração é o 0
(define (fact-aux n acumulador)
(ze ro), vis to s e r o e l
e m e nto ne utro da adição.
(if(= n 0)
acumulador
(fact-aux (- n 1) Entrando noutra áre a, pode ríam os abs trair-
(* acumulador n)))) nos do conce ito de factoriale de s om a-ate -
(fact-aux n 1)) ze ro e faze rm os um proce dim e nto q ue
re ce be um a ope ração q ue ope ra inte iros e
À prim e ira vis ta, is to pode ge rar confus ão q ue cal cul
a e s ta ope ração até ao inte iro 0.
m as ve jam os por parte s . Prim e iro, foi
introduzido o conce ito de função inte rna. (define(opera-ate-zero op elem-neutro n)
A função “fact-aux” s ó é vis íve là função (define (opera-aux n acumulador)
q ue a pre ce de h ie rarq uicam e nte , a (if(= n 0)
acumulador
função “factorial ”, ou s e ja, ao níve lgl obal
(opera-aux (- n 1) (op n acumulador))))
do am bie nte , e l
a não e xis te . (opera n elem-neutro))
<7 >
te m a de capa
(define (factorial n)
(opera-ate-zero * 1 n))
<8 >
te m a de capa
O s se l
e ctore s : (define lista-vazia null?)
<9 >
te m a de capa
O tipo de dados l is ta, é m uito fácilde us ar e o
Sch e m e nativo já incl ui, por de fe ito, todas as
funçõe s aq ui de finidas e m uitas m ais . Em C, a
criação de um a l is ta é m uito m ais com pl e xa,
um a ve z q ue e xige a criação de um a e s trutura
com um e l e m e nto e um ponte iro para a
próxim a e s trutura. Em Sch e m e , is s o já ve m fe ito
para nós . O utro tipo de dados pare cido com
as l is tas é o ve ctor. É m ais re corre nte us ar
ve ctore s em program ação im pe rativa,
(define lista-final ch am ando as pos içõe s com índice s .
(insere 5 lista2))
Virando o as s unto para o paradigm a do
Se m andás s e m os corre r o s e guinte com ando: Sch e m e , a program ação im pe rativa. A
program ação im pe rativa, bas e ia-s e na
> lista-final de s truição de variáve is , ou do s e u conte údo.
(5 3) Noutras l inguage ns com o o C, é m uito us ual
re corre r-s e a e s te tipo de program ação, já o
Es ta e ra a l
is ta re tornada. E pode ríam os , e ntão, Sch e m e te m o s e u ponto forte na program ação
corre r a função q ue nos dá o tam anh o de l a: funcional , com o foi re fe rido no início.
<10>
te m a de capa
Al
guns e xe m pl
os da util
ização do ope rador s e t!: com o nada. O u s e ja, é aval iado o s e t!, o
val or de “val or-final ” é de s truído e re novado
(define a 4) (set! a 2) com outro e o factorialé invocado de novo
(define b 2) (set! b 0) re curs ivam e nte . Sim pl e s m e nte , e m ve z de
> a > a pas s arm os variáve is de e s tado actual izadas ,
4 2 criam os um acum ul ador q ue é actual izado
> b > b
us ando o s e t! inte rnam e nte .
2 0
> (+ a b) > (+ a b)
6 2 Pe ns o q ue a m aior parte dos conte údos
acim a e xpl icados e ngl obam e re fle cte m o
pode r do Sch e m e e a facil idade com q ue s e
Volte m os à função factorialq ue pe ns o q ue pode apre nde r a program ar us ando e s ta
elucida be m a dife re nça e ntre linguage m . Foram ape nas e xpos tos e xe m pl os
program ação funcionale a program ação s im pl
e s m as q ue m e s m o as s im m os tram o
im pe rativa: q ue é pos s íve lfaze r e m Sch e m e .
<11>
a program ar
-> D e s vantage ns :
•É m ais l e nto q ue o m odo orie ntado ao
datagram a.
•O com portam e nto do s e rvidor é
dife re nte do com portam e nto do cl ie nte .
-> Vantag e ns :
•É bas tante m ais rápido q u e o m odo
orie ntado a cone xão.
M odo O rie ntado à Cone xão (TPC/IP) S e após o pe dido de cone xão não
ocorre r ne nh u m probl e m a, o s e rvidor
-> Vantage ns : ace ita a cone xão g e rando u m s ock e t
•Se rviços confiáve is , s e m pe rda de dados nu m a porta do s e rvidor, o q u e vai criar
na re de e orde m dos pacote s ; u m canal de com u nicação e ntre o
•Pos s ibil
idade de us ar D ataStre am s . cl ie nte e o s e rvidor (Fig u ra 2).
Figu ra 1
<12>
a program ar
Figu ra 2
Por norm a o s e rvidor funciona e m cicl o (l
oop) e s pe rando por novas cone xõe s e criando
s ock e ts para s ol
icitaçõe s de cl
ie nte s .
Sock e tCl
ie nt
1 –Abrir Cone xão.
import java.io.*;
import java.net.*;
//Conectar ao servidor localhost na porta 8080.
Socket client = new Socket("127.0.0.1",8080);
3 –Re al
izar a com unicação com o s e rvidor.
//Envia o inteiro 3000.
out.writeInt(3000);
//Envia a String “Olá - Socket Cliente.”.
out.writeUTF("Olá - Socket Cliente.");
//Espera pela recepção de um inteiro.
int valor = in.readInt();
//Espera pela recepção de uma String.
String texto = in.readUTF();
<13>
a program ar
2 – Aguardar Conexões
//O método accept retorna um socket para comunicação com o próximo cliente.
Socket sock = server.accept();
<14>
a program ar
Em s e guida pode m os ve r as cl
as s e s Cl
ie nte e Se rvidor com pl
e tam e nte im pl
e m e ntadas .
Cl
as s Cl
ie nte
import java.io.*;
import java.net.*;
public Cliente(){
try{
this.client = new Socket("127.0.0.1",8080);
this.in = new DataInputStream(client.getInputStream());
this.out = new DataOutputStream(client.getOutputStream());
}
catch(IOException e){
System.out.println(e.getMessage());
}
}
<15>
a program ar
Cl
as s Se rvidor
import java.io.*;
import java.net.*;
public Servidor(){
try{
this.server = new ServerSocket(8080);
this.sock = this.server.accept();
this.in = new DataInputStream(sock.getInputStream());
this.out = new DataOutputStream(sock.getOutputStream());
}
catch(IOException e){
System.out.println(e.getMessage());
}
}
s uge s tão para a apl icação dos novos conh e cim e ntos adq uiridos , s ugiro q ue
e xpe rim e nte m a criação de um s im pl e s s oftw are de conve rs ação ('ch at').
<16>
a program ar
Es truturas de
ne gativo q ue cre s ce à m e dida q ue s e
afas ta da vírgul a. Sim , l á ve m a
dados
M ate m ática! M as não s e pre ocupe m m uito
com is s o, trata-s e de M ate m ática s im pl
e s.
Natural m e nte , com o nós pe ns am os num Para faze r a ope ração inve rs a é um pouco
núm e ro s e m pre no s is te m a de cim al e pior, te m os de dividir s uce s s ivam e nte um
lim itam os a te r um a im age m m e ntal de núm e ro de cim alpor 2 até o re s ul tado s e r
q uantidade , não nos ape rce be m os q ue de m e nor q ue 2. D e pois te m os de col ocar o
facto um núm e ro, por e xe m pl o o 123, pode últim o re s ul
tado e os re s tos ante riore s na
s e r re pre s e ntado da s e guinte form a: orde m com o o e xe m plo a s e guir. O u s e ja:
<17>
te cnol
ogias
O val
or binário é 1100100. E vam os ao nos s o úl
tim o e xe m pl
o de s te
artigo:
As re pre s e ntaçõe s dos núm e ros binários
pode m variar. Por e xe m pl o o núm e ro 5 no Re pre s e ntação do núm e ro 5 num
s is te m a binário re pre s e nta-s e por 101, m as nibbl e , num by te e num w ord.
pode s e r re pre s e ntado por 0000101 ou
00000101 ou 0000000000000000000101, Nibbl e : 0101 (4 bits )
is to porq ue , talcom o no s is te m a de cim al , By te : 00000101 (8 bits )
os ze ros a e s q ue rda não têm s ignificado W ord: 0000000000000101 (16 bits )
ne nh um . Cada digito binário é conh e cido
por bit(binary digit). No próxim o artigo vam os ve r com o s e
organizam e s tas e s truturas q ue acabám os
Agora q ue s abe m os conve rte r de binário de de s cre ve r.
para de cim ale vice ve rs a, vam os ao q ue
inte re s s a.
<18>
a program ar
•Sintaxe s im pl e s;
•Fácile rápida apre ndizage m ;
•G rátis e de código abe rto;
•Linguage m de al to níve le inte rpre tada;
•Portabil idade ;
•O rie ntação a obje ctos ;
•Exte ns íve l
;
•Exte ns as bibl iote cas ;
•Exce l e nte s uporte e docum e ntação.
Áre as de apl
icação:
•D e s e nvol
vim e nto de apl icaçõe s W e b;
•Ace s s o a bas e s de dados ;
•Inte rface s gráficas ;
•Apl icaçõe s cie ntíficas e num éricas ;
•Educação;
•Program ação de re de s ;
•D e s e nvol
vim e nto de s oftw are ;
Introdução à l inguage m q ue te m •Jogos e gráficos 3D .
m ovim e ntado o m undo
ope n-s ource Ante s de tudo, vam os ins tal ar o inte rpre tador
da l inguage m Py th on q ue pode s e r obtido na
página oficial da l
inguage m
(h ttp://w w w .py th on.org). A ve rs ão q ue vam os
O Py th on é, com o o s e u autor diz, util izar ao l ongo de s te artigo é a 2.5 (a úl tim a
um a l inguage m de program ação ve rs ão e s táve lna al tura da e s crita do artigo).
inte rpre tada, inte ractiva, orie ntada Se e s tive r e m am bie nte W indow s bas ta faze r
a obje ctos e dinâm ica. a trans fe rência do e xe cutáve lde ins tal ação
(h ttp://w w w .py th on.org/ftp/py th on/2.5/py th on-
Ao contrário de m uitas outras l inguage ns de 2.5.m s i), q ue m e s tive r e m am bie nte Linux ou
program ação, a de l im itação dos bl ocos de se m e l h ante te m um a grande probabil idade
ins truçõe s é fe ita pe l o al inh am e nto de já pos s uir o inte rpre tador ins tal ado, cas o
(inde ntação), não h á de l im itadore s com o não te nh am aprove ite m agora para o ins tal ar.
be gin e e nd com o aconte ce no Pas cal , ou
{ e } da l inguage m C. Al ém dis s o ofe re ce Vam os agora ve r com o corre r o prim e iro
tipos de dados de al to níve lcom o s trings , program a e m Py th on, o tradicionalH e l
l
o W orl
d.
dicionários , l is tas , tupl as , cl as s e s , e ntre
outros . Exis te m dois m étodos para o faze r, us ando o
inte rpre tador inte ractivo ou um código fonte
A l inguage m pe rm ite outros paradigm as de e xte rno. A vantage m do inte rpre tador é q ue
program ação al ém da program ação não têm de gravar e vol tar a e xe cutar um
orie ntada a obje ctos , com o a program ação fich e iro s e m pre q ue faze m um a m odificação.
funcional . A s intaxe é fácilde com pre e nde r M ais à fre nte vam os util izar fich e iros com o
e dom ina-s e rapidam e nte , s e ndo e s s as duas código fonte , pois as s im q ue e nce rram o
caracte rís ticas cons ide radas grande s inte rpre tador e s te não grava o q ue
vantage ns da l inguage m . Py th on é, e m e s cre ve ram , s e ndo por is s o útilape nas para
vários as pe ctos , s e m e l h ante a outras pe rce be r com o a l inguage m funciona e não
linguage ns inte rpre tadas com o Pe rle Ruby. para e s cre ve r program as com pl e xos .
<19 >
a program ar
Para iniciar o inte rpre tador pe l a l inh a de >>> print “Hello World”
com andos ou cons ol a bas ta e s cre ve r Hello World
py th on s e guido de <Ente r> . As s im q ue o >>> print "Hello", "World"
fize re m vão s e r apre s e ntados com o Hello World
s e guinte (pode s e r lige iram e nte dife re nte >>> print
<Linha em branco>
de pe nde ndo do vos s o s is te m a ope rativo):
Com o de ve m te r re parado o com ando print
Python 2.5 (r25:51908, Oct 6 2006, 15:22:41)
s e rve para e s cre ve r al go na l inh a de
[GCC 4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13 com andos . Ne s te e xe m pl o e s cre ve m os um a
ubuntu4)] on linux2 s tring (cade ia de caracte re s ) m as tam bém
Type "help", "copyright", "credits" or "license" pode m os e s cre ve r l is tas , tupl as e ntre outros
for more information. tipos de dados q ue vam os conh e ce r m ais à
>>> fre nte ...
Se e fe ctuare m o com ando print e não
forne ce re m nada para o inte rpre tador
Para fe ch ar o inte rpre tador bas ta pre s s ionar e s cre ve r, e l
e e fe ctua ape nas um parágrafo,
Ctrl-Z s e guido de Ente r e m W indow s , ou Ctrl - s e ndo e q uival e nte a faze re m print de um a
D e m Linux. s tring vazia (“”). Tam bém é de notar q ue s e
pode faze r print a vários val ore s num a única
Para aq ue l e s q ue não s e s e nte m confiante s ins trução, s e ndo os dados s e parados por
a trabal h ar e m l inh a de com andos , o vírgul as .
Py th on tam bém ve m com um a inte rface
gráfica q ue pode s e r us ada para
program ar tanto no m odo inte ractivo com o Tipos de dados
com fich e iros de código fonte . Es ta
fe rram e nta ch am a-s e ID LE (Inte grate d Em Py th on e xis te um a e norm e varie dade de
D e ve Lopm e nt Environm e nt) e é forne cida tipos de dados q ue dão um a e norm e
com a ins tal ação bas e do Py th on. Se fle xibil
idade ao program ador com o
durante a ins tal ação pe diram ao ins tal ador núm e ros , s trings (s e q uência de caracte re s ),
para criar atal h os no m e nu Iniciar e ntão lis tas (array s /ve ctore s ), tupl
as , dicionários
pode m s e guir por e s s e cam inh o. Cas o não (array s as s ociativos / m atrize s ), obje ctos ,
te nh am ins tal ado atal h os , o ID LE e ncontra- e tc...
se em <pas ta de ins tal
ação do
Py th on> \Lib\idl elib\idle .py w . O s núm e ros s ubdivide m -s e e m q uatro tipos :
os inte iros ou de cim ais (inte ge rs ), os inte iros
Agora q ue te m os o inte rpre tador iniciado grande s (long inte ge rs ), os núm e ros
vam os com e çar a e s cre ve r al guns fraccionários (fl oating point) e os núm e ros
program as . Se m pre q ue o inte pre tador com pl e xos (com pl e x num be rs ). A s e guir
m os trar > > > s ignifica q ue e s tá pronto a apre s e ntam -s e al guns e xe m pl
os de
re ce be r ins truçõe s . ope raçõe s com núm e ros :
<20>
a program ar
<21>
a program ar
É tão s im pl
e s com o is to, bas ta e s cre ve r o
Ne s te úl tim o cas o pode m os ve r com o é
nom e da variáve ls e guido de um igual(=,
q ue o Py th on re pre s e nta a pl ica num a
atribuição) e s e guido do q ue q ue re m os
s tring. Us am os o ch am ado caracte r de
guardar.
e s cape , a barra para a e s q ue rda, para
re pre s e ntar os tais caracte re s não
>>> print numero
pe rm itidos norm al m e nte ou caracte re s 1
e s pe ciais (\n). >>> inteiro = numero + 1
>>> inteiro
>>> print "Triton \" Portugal" 2
Triton " Portugal
>>> print "Uma barra \\" Agora cada ve z q ue nos re fe rirm os à
Uma barra \
variáve lnúm e ro é com o nos e s tivés s e m os a
>>> "abc".upper()
'ABC'
re fe rir ao val or q ue e l
a guarda e m
m e m ória, pois cada ve z q ue o
No prim e iro e xe m pl
o us am os um a as pa no inte rpre tador te m de proce s s ar a variáve l
m e io de um a s tring lim itada pe lo m e sm o ace de à m e m ória e s ubs titui pe lo de vido
tipo de as pa. Para is s o faze m os o e s cape val or guardado.
da as pa, us ando para is s o o \”. Para As variáve is pode m s e r us adas para
faze m os e s cape à barra us am os duas guardar todos os tipos de dados :
barras , com o s e ve rifica no s e gundo
>>> frac = 2.0*2
e xe m pl
o.
>>> print frac
4.0
<22>
s e gurança
Abaixo te m os um e xe m plo de um
program a vul ne ráve l a um ataq ue de
buffe r ove rfl ow . O probl e m a e s tá na
s e gunda l inh a da função Proce s s arParam ,
q ue não l im ita o tam anh o do argum e nto
re ce bido (arg).
Um e xpl oit não é nada m ais q ue
um código capaz de e xpl orar void ProcessarParam(char *arg);
um a fal h a num s e gm e nto de void main(int argc, char *argv[]) {
código ou s oftw are . D o ingl ês , if (argc > 1){
s ignifica lite ral
m e nte e m português printf("Param: %s\n",argv[1]);
“e xpl orar”. ProcessarParam(argv[1]);
}
No m undo da s e gurança inform ática, }
de nom ina-s e “e xpl oit” um m étodo capaz
de tirar prove ito de um bug (fal h a) de um void ProcessarParam(char *arg) {
s oftw are provocando com portam e ntos não char buffer[10];
strcpy(buffer, arg);
pre te ndidos do s oftw are , fre q ue nte m e nte
/* BUG: se a string contida em
para cons e guir e s cal ar privil
égios , obte r
arg tiver mais que 10 carateres
control o do s is te m a ou ne gar s e rviços (D oS). existirá um Buffer Overflow */
G e ral m e nte util izados e m m il h are s de printf(buffer);
s is te m as diariam e nte , os e xpl oits s ão a }
fonte de grande parte dos ataq ue s
ocorridos l ocal m e nte e re m otam e nte nos
s is te m as e xis te nte s . Es te s pode m ainda O buffe r ove rfl ow , q uando ocorre de form a
tom ar form as e pode re s bas tante s variados . al e atória, norm al m e nte caus a um e rro
Pode s e r um program a e xe cutáve l , um a fatal /cras h na apl icação. No W indow s XP
m e ns age m num de te rm inado protocol o de e s ta s ituação ge ra um a jane l a de e rro, e
re de ou até m e s m o um a m e ns age m no Linux ge ra a conh e cida s e gm e ntation
e s condida num e -m ail . faul t com core dum p (dá-s e um core dum p
q uando o s is te m a cons e gue guardar o
Ne s te artigo vam o-nos focar no tipo de e s tado do program a ante s de s urgir a
falh a “Buffe r O ve rfl
ow ” e util
izare m os a fal h a, s e ndo o core o fich e iro guardado).
linguage m C para de m ons trar. Porém , q uando corre ctam e nte induzido
pe l o atacante , o buffe r ove rfl ow pode
Com o funcionam os e xpl
oits ? pe rm itir q ue s e e xe cute código m al icios o
q ue te rá os m e s m os privil égios de
O s e xpl
oits q uas e s e m pre faze m prove ito e xe cução da apl icação a s e r atacada,
de um a fal h a conh e cida com o buffe r q ue ge ral
m e nte s ão privil
égios de
ove rfl
ow (s obre carga da m e m ória buffe r). adm inis trador.
<24>
s e gurança
<25>
s e gurança
<26>
s e gurança
<27>
te cnol
ogias
Vam os partir de um e xe m pl o s im pl e s:
s upondo q ue te m os um a apl icação q ue
Cl
u s te ring e xe cuta duas s om as inde pe nde nte s . Se s ó
tivés s e m os um com putador o proce dim e nto
norm als e ria a m áq uina faze r prim e iro um a
s om a e de pois a outra, m as vam os s upor q ue
Cl us te ring é o agre gar dois ou m ais te m os dois com putadore s q ue cons e gue m
com putadore s de m odo a q ue e s te s com unicar um com o outro. Pas s am os e ntão
funcione m e m paral elo para um m e s m o ao cl us te ring, um de l e s (o m as te r) as s um e a
fim . D e s te m odo te m os o q ue é ch am ado função de dis tribuir trabal h o e ntre os dois . O
cl us te r, um grupo de m áq uinas inte rl
igadas outro (s l ave ) ape nas re ce be “orde ns ” do q ue
via (por e xe m pl o) re de local q ue te m a faze r. (Es ta divis ão de tare fas é m uitas
cons e gue m com unicar e ntre s i. ve ze s crítica e te m de s e r m uito be m
program ada pe l o program ador.) Ne s te cas o
a divis ão s e ria s im pl e s , o m as te r ficava com
um a das s om as para e xe cutar e daria a
Ne ce s s idade e Im portância outra ao s l ave , q ue a re ce bia pe l o m e io de
com unicação util izado e de vol via o re s ultado
Cada ve z m ais s e util izam com putadore s
pe l o m e s m o canal . No finalo m as te r te ria
para re s ol ve r os m ais dive rs os probl e m as . À
am bos os re s ul tados das contas e pode ria
m e dida q ue e s te s vão apare ce ndo e
s e guir o norm alfl uxo de e xe cução. D e notar
cre s ce ndo e m com pl e xidade é ne ce s s ário
q ue am bas as s om as s e riam fe itas ao m e s m o
ir e ncontrando novos m étodos para s e r
te m po, m as e m m áq uinas dife re nte s ,
be m s uce dido na s ua re s ol ução. Se ndo
de m orando portanto m e tade do te m po
q ue a abordage m inicialm ais com um é a
inicial (s e m contar com as ove rh e ads da
de te ntar ach ar um m e l h or algoritm o e s ta
com unicação).
ne m s e m pre é cons e guida. M uitos
probl e m as q ue s urge m h oje e m dia s ão
Es te é o princípio bás ico do cl us te ring e pode -
s im pl e s m e nte de m as iado grande s e m
s e ve r q ue h á dive rs os factore s a te r e m
com pl e xidade (m e s m o com al goritm os
conta q uando m ontam os um cl us te r: de s de
bas tante trabal h ados e optim izados ) para
ligação e ntre m áq uinas (l atência e l argura
s e re m re s ol vidos por um a m áq uina is ol ada.
de banda), núm e ro de m áq uinas inte rl igadas
É ne s te ponto q ue e ntra o cl us te ring. Se
(tam bém ch am ados nós ), capacidade de
cons e guim os ach ar um a s ol ução m as
paral el is m o da apl icação até ao cus to total
util izando um a s ó m áq uina não a obte m os
de todo o s is te m a e , m uito im portante , a
e m te m po útil , e ntão vam os paral elizar o
função do s is te m a, pois a configuração da
proce s s am e nto de m odo a q ue e s te s e ja
m áq uina varia m uito com a função finalq ue
dis tribuído por m ais q ue um a m áq uina.
o cl us te r irá de s e m pe nh ar.
<28>
te cnol
ogias
M ode l
os de Cl
us te ring Sis te m as Tol
e rante s a Fal
h as
Com o pas s ar dos anos o cl us te ring e vol
uiu Ne s te s s is te m as te m os ge ral m e nte um a
de s de um a ide ia inicialm ais focada e m m áq uina inicialq ue corre as apl icaçõe s
re s olve r grande s probl e m as para outras ne ce s s árias , e um a s e gunda q ue s ubs titui a
áre as , onde o q ue te m m ais im portância é prim e ira no cas o de s ta fal h ar. Es te tipo de
a cone ctividade e ntre m áq uinas , s e gue -s e e s q ue m a te m bas tante apl icação e m bas e
um a l is ta das áre as onde a im portância do de dados , onde um prim e iro s e rvidor é
cl us te ring (de um ou outro m odo) te m dado com o principale corre a apl icação
cre s cido. norm al m e nte , e xis tindo um s e gundo q ue
vai m ante ndo um a cópia da inform ação e
as s um e o pape lprincipalcas o h aja um a
Com putação Paral
ela fal h a de funcionam e nto no prim e iro. Is to
pe rm ite m ante r todo o s is te m a a funcionar
Cons is te na divis ão por várias m áq uinas de s e m pre juízo para util izadore s . Es ta é um a
um m e s m o probl e m a. Todas trabal h am e m configuração s im pl e s e e xis te m num e ros as
conjunto e cada um a re s ol ve um a form as de dividir os dados , pode ndo os
pe q ue na parte de s s e m e s m o probl e m a. com putadore s e s tar e m s al as , e difícios ,
G e ral
m e nte para e s te tipo de trabal ho país e s ou até contine nte s dife re nte s , de
ape nas é ne ce s s ário CPU Tim e por parte de m odo a e vitar catás trofe s naturais e m l arga
cada com putador, s e ndo o ace s s o a e s cal a ou acide nte s fís icos l ocais .
dis cos baixo ou nul o (de pe nde nte , no
e ntanto, do probl e m a e m q ue s tão). Arm aze nam e nto e m Larga Es cal
a
Util izado por m otore s de bus ca com o o
D is tribuição de W ork l
oad G oogl e e s te tipo de cl us te ring é (e m
princípio) s e m e l h ante à com putação
Apl ica-s e o cl us te ring q uando te m os um a paral ela. Em ve z de s e dis tribuir código a
m áq uina a forne ce r de te rm inado s e rviço e , e xe cutar aq ui s ão dis tribuídos dados a
por al gum a razão, e s ta de ixa de cons e guir arm aze nar e m dis co. Com o cada m áq uina
(ou nunca cons e guiu) dar re s pos ta não te m capacidade para s e l igar a
(s atis faze r todos os pe didos ). M ontam -s e ce nte nas de dis cos é ne ce s s ário o us o de
e ntão várias m áq uinas a forne ce r e s s e varias m áq uinas , cada um a com vários
m e s m o s e rviço e divide m -s e os pe didos dis cos . Es te tipo de cl us te ring al ivia o
e ntre e l as . Um e xe m pl o: um a m áq uina a proce s s am e nto q ue cada m áq uina gas ta
corre r um W e b Se rve r (H TTPd) pode não e m ace s s os a dis co e ace l e ra os proce s s os
cons e gui s atis faze r todos os pe didos de de l e itura. Ape s ar de s tas vantage ns a s ua
q ue m vis ita as páginas al ojadas e m dis co. principal função continua a s e r o
Ne s te cas o e xis te a h ipóte s e de m ontar arm aze nam e nto. Se um a dada bas e de
um a outra m áq uina com o m e s m o W e b dados for de tam anh o cons ide ráve le s ta é
Se rve r e um a cópia e xacta do dis co do tam bém um a opção a te r e m conta, e
s e rvidor inicial . (As m áq uinas e ncontram -s e m uitas ve ze s a única. Ate nção q ue ne s te
inte rl igados e um a de l as (s l ave ) irá s is te m a não s e fal a e m dados re pl icados
m odificar o s e u conte údo e m dis co s e m pre (copias de s e gurança), pode ndo tam bém
q ue algo for m udado no m as te r.) s e r al go a te r e m conta q uando s e
Final m e nte pode m os dire ccionar os de s e nh a um cl us te r de s ta nature za.
vis itante s para um ou outro s e rvidor
conform e a afluência de cada M anute nção e M onitorização
com putador, e vitando a s obre carga de
cada um de l e s. Ne s te cas o te m os um núm e ro e l e vado de
m áq uinas q ue q ue re m os m onitorizar.
<29 >
proje cto
um a l igação cons tante à Inte rne t não é a re ce pção ou e nvio de dados a outra
ne ce s s ária, ne m tão pouco q ue s e ja rápida ou s e gue o proce s s am e nto norm al .
de baixa l atência (al go im pos s íve lde garantir).
M uitos de l e s ape nas ne ce s s itam de um a
ligação um a ve z por m ês de m odo a pe dir
dados e e nviar re s ul tados . São um tipo de
cl us te ring e m e rge nte pois cada ve z m ais
pe s s oas têm com putadore s e m cas a e ace s s o à
Inte rne t. Es te m ode l o te m , com o é óbvio,
bas tante s l im itaçõe s pe l o q ue a s ua m aior
util ização é junto de proje ctos m e nos críticos e
onde o dinh e iro é um a q ue s tão de pe s o.
<30>
tutorial
<31>
tutorial
Na de claração da Sq l Conne ction pre cis am os tam bém de indicar um a Conne ctionString2,
us ada para e s tabe l
e ce rm os a l
igação à bas e de dados e m q ue s tão.
Para e xe cutarm os o Sq l Com m and pode m os us ar os m étodos Exe cute NonQ ue ry (),
Exe cute Re ade r() e Exe cute Scal
ar().
<32>
tutorial
ligacao.Open()
NrLinhasAfectadas = cmdInserir.ExecuteNonQuery()
If NrLinhasAfectadas > 0 Then
MessageBox.Show("O registo foi inserido com sucesso", "P@P",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
ListarEdicoes()
Else
MessageBox.Show("Não foi possível inserir o registo. Tente novamente.",
"P@P", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
Catch ex As Exception
MessageBox.Show(ex.ToString)
Finally
ligacao.Close()
End Try
End Sub
•Al
te rar Edição
Private Sub AlterarEdicao()
Dim ligacao As SqlConnection
Dim cmdAlterar As SqlCommand
Dim NrLinhasAfectadas As Integer = 0
Try
ligacao = New SqlConnection("Data Source=XPTO;InitialCatalog=RevistaProgramar;
User Id=SA;Password=XPTO;")
cmdAlterar = New SqlCommand("UPDATE Edicoes " & "SET Nr_Edicao =
@nr,Titulo = @titulo, Data = @data " & "WHERE ID = " & Convert.ToInt32(
dgvEdicoes.CurrentRow.Cells("ID").Value), ligacao)
ligacao.Open()
NrLinhasAfectadas = cmdAlterar.ExecuteNonQuery()
<33>
tutorial
Catch ex As Exception
MessageBox.Show(ex.ToString)
Finally
ligacao.Close()
End Try
End Sub
ligacao.Open()
NrLinhasAfectadas = cmdRemover.ExecuteNonQuery()
If NrLinhasAfectadas > 0 Then
MessageBox.Show("O registo foi removido com sucesso", "P@P",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
ListarEdicoes()
Else
MessageBox.Show("Não foi possível remover o registo.", "P@P",
MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
Catch ex As Exception
MessageBox.Show(ex.ToString)
Finally
ligacao.Close()
End Try
End Sub
<34>
tutorial
Um a técnica m uito us ada, é o us o de parâm e tros nos Sq l Com m ands de form a a s im pl ificar e
clarificar o nos s o código. Em ve z de te rm os a tare fa de concate nar s trings , com o por e xe m plo,
“SELECT * FRO M tabe l a W H ERE Id=” & variave l _id & “ Nom e =’” & variave l _nom e & “’”, o q ue
faria com q ue um a e xpre s s ão m ais e xte ns a s e torna-s e bas tante confus a, pode m os as s ociar
ao Sq l Com m and um ou vários parâm e tros (Sq l Param e te r).
Um Sq lParam e te r na s ua de claração m ais s im ple s , pode conte r um nom e (“@ nr”), o tipo de
dados (Sq l
D bTy pe .Int) e um tam anh o (4). O nom e do parâm e tro é de pois us ado na e xpre s s ão T-
SQ L com o val or atribuído na proprie dade Val ue . Ne s ta s ituação, trata-s e de um parâm e tro
com a dire cção de Input.
Após e ntão e xe cutarm os o com ando, te m os de pois q ue nos ce rtificar q ue tudo corre u com o
pre vis to e s e o q ue pre te ndíam os foi re al m e nte e xe cutado. Com o re fe rim os e m cim a, o
m étodo Exe cute NonQ ue ry () de volve o núm e ro de l inh as q ue foram afe ctadas na e xe cução de
um a e xpre s s ão. A variáve l“NrLinh as Afe ctadas ” arm aze na e ntão e s s a inform ação, bas tando
e ntão s e r igual
ada ao m étodo re fe rido.
NrLinhasAfectadas = cmdInserir.ExecuteNonQuery()
If NrLinhasAfectadas > 0 Then
MessageBox.Show("O registo foi inserido com sucesso", "P@P",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Para pode rm os al te rar ou re m ove r um a e dição, pre cis am os de indicar à nos s a apl
icação q ual
é o núm e ro do s e u re gis to de form a a e xe cutar am bas as e xpre s s õe s corre ctam e nte . Com o
pude m os ve rificar no proce dim e nto Al te rarEdicao() e Re m ove rEdicao, te m os as s e guinte s
e xpre s s õe s as s ociadas aos com andos :
<35>
tutorial
Ne s te proce dim e nto faze m os us o dos obje ctos D ataSe t e D ataAdapte r. Pode m os cons ide rar o
D ataSe t com o um conjunto de dados , talcom o as e s truturas das bas e de dados , pe rm itindo
as s im um a m aior facil idade na m anipul ação dos dados , te ndo tam bém com o vantage ns a
não ne ce s s idade de e s tar com um a l igação activa à bas e de dados , e a não inte racção
dire cta com a nos s a fonte de dados . O D ataAdapte r por s ua ve z, é a ponte de l igação e ntre a
nos s a bas e de dados e o D ataSe t.
Fe ito is to, te m os finalm e nte a nos s a apl icação a funcionar corre ctam e nte , com a l
is tage m das
e diçõe s e a pos s ibil idade de ins e rir, al
te rar e re m ove r e diçõe s .
<36>
gnu/l
inux
D e pe ndências
•libas ound2 (> 1.0.10)
•libc6 (> =2.3.2.ds 1-21)
•libice 6
•libogg0 (> =1.1.2)
•libs m 6
G ravação do D e s k top •l
•l
ibth e ora0
ibvorbis 0a (> =1.1.0)
•libvorbis e nc2 (> =1.1.0)
Q uantas ve ze s q uis criar um tutorialcom a •libvorbis file 3 (> =1.1.0)
s ua dis tro de G NU/Linux ou a e s cre ve r um •libx11-6
código q ue q ue ria partil h ar e , e m ve z de o •libxdam age 1
apre s e ntar com im age ns e com e ntários , •libxe xt6
pe ns ou e m gravar um víde o cons igo a •libxfixe s 3
com e ntá-l o? Criar um proje cto para a •zlib1g (> =1:1.2.1)
e s cola ou unive rs idade e m q ue um víde o
s e ria m ais fácile prático de apre s e ntar?
Criar um víde o para um a pl ataform a de Com andos
e Le arning ou bLe arning?O u s im pl e s m e nte ,
para m os trar aos am igos os e fe itos 3D do A form a ge nérica de e xe cutar o program a é:
s e u D e s k top?
$ recordmydesktop
Ne s te artigo irá s e r apre s e ntada um a
Is to irá gravar um fich e iro com o nom e
s olução para tal . O program a us ado é o
out.ogg na s ua pas ta h om e . Para parar a
re cordM y D e s k top.
gravação s im ple s m e nte cl
iq ue Ctrl+ C.
Para de finir o nom e do fich e iro e /ou a
local ização bas ta:
re cordM y D e s k top
$ recordmydesktop /home/user/video.ogg
O re cordM y D e s k top é um program a criado
Joh n Varouh ak is , program ado e m C, O program a tam bém pe rm ite de finir áre as a
lançado e m 12 de Jul h o de 2006 (data da s e r gravadas . As s im pode us ar-s e :
ins crição do proje cto no Source Forge ) e
dis poníve l para dow nload em $ recordmydesktop -x x-pos -y y-pos
h ttp://re cordm y de s k top.s ource forge .ne t. A -width largura -height altura -o
lice nça de s te s oftw are é G PL (G NU Publ ic video.ogg
Lice ns e ). Es tá de m om e nto e m e s tado
al ph a, m ais concre tam e nte na ve rs ão 0.3.1. Tanto a opção x-pos com o a opção y-pos
re fe re m -s e à dis tância e m pixe l
s a partir do
Ape s ar do program a originals e r e m m odo canto s upe rior e s q ue rdo.
te xto e xis te um a ve rs ão gráfica us ando a
pl ataform a G TK .
<37>
gnu/l
inux
$ recordmydesktop t[h/m]
$ recordmydesktop -fps N
<38>
gnu/l
inux
Pode s e r us ado para criar novas , para e ditar,
D e pe ndências para corrigir ou para s incronizar. Es te
•re cordm y de s k top program a te m um gráfico do e s pe ctro de
•xbas e -clie nts áudio o q ue facil ita e m m uito o trabalh o de
•py th on-gtk 2 s incronizar um a l e ge nda. Com e s te gráfico
•py th on-gnom e 2e xtras do e s pe ctro de áudio pode ve rificar-s e as
•py th on e ntradas do s om , e as s im , faze r um a
le ge ndage m de form a corre cta e fácils e m
Com o m odo gráfico o program a fica ve rificar tantas ve ze s o fil
m e poupando te m po.
bas tante m ais prático e fácilde us ar. Para
se le ccionar um a parte da jane l a bas ta Concl
uindo o s e u víde o
clicar na im age m e arras tar até onde
pre te ndido. Todas as opçõe s e s tão tam bém O form ato .ogg, ape s ar de s e r um form ato
dis poníve is no m e nu "Advance d". No finalda ope n-s ource e tão bom com o outros , não é
gravação, bas ta cl icar no ícone na form a m uito us ado na ge ne ral idade . Por is s o o
de um q uadrado q ue irá e s tar col ocado na mel h or é talve z conve rte r o s e u víde o para
áre a de notificação do s e u D e s k top. avi, q ue é um form ato m ais conh e cido e para
além dis s o torna o víde o um pouco m ais
G ravar com s om pe q ue no. Para talpode us ar o m e ncode r, um
pacote do program a m pl ay e r. Bas ta us ar:
O re cordM y D e s k top te m a pos s ibilidade de
gravar com s om . No e ntanto, ne m todos nós $ mencoder -idx video.ogg -ovc lavc -
gos tam os de fal ar e nq uanto criam os o oac mp3lame -o video-saida.avi
tutorial. Por is s o, m uitas ve ze s o m e l h or é
faze r o víde o s ile ncios am e nte , e m ais tarde Para adicionar o s om pode s e r us ado o
adicionar o s om . Para tale xis te m variados m e ncode r com o com ando -audiofil
e , com o
program as com o por e xe m pl o o G ravador por e xe m pl
o:
de Som do G NO M E e o Audacity.
$ mencoder -idx out.ogg -ovc lavc -
Le ge ndando o tutorial oac mp3lame -audiofile som.mp3 -o
video-saida.avi
Por ve ze s , por um a q ue s tão de ace s s ibilidade
Bas ta te r o fich e iro m p3 (ou outro form ato de
a todas as pe s s oas , o m e l h or é le ge ndar o
s om ) q ue o m e ncode r faz o trabalh o.
tutorial . Exis te m várias opçõe s , por e xe m ploo
Jubl e r, o Sabbu e o Subtitl e Editor. Ve jam os
No fim de e xe cutar todos e s te s pas s os te rá o
al guns as pe ctos do Subtitl e Editor. O Subtitl e
s e u víde o pronto a s e r partil
h ado, pode ndo
Editor é um program a grátis prote gido pe l a
s e r vis to, ouvido e l ido por todos s e m
lice nça G PLpara e ditar facil m e nte le ge ndas .
re s triçõe s al
gum as .
Joe lRam os
<39 >
anál
is e s
D e s e nvol
vim e nto O rie ntado por
O bje ctos
João H ug o M iranda
Jos é A ntonio A l
m e ida
Editora: Ce ntroAtl
antico.pt
e cção: Te cnol
Col ogias
Páginas : 232
1ª e dição: O utubro de 2005
ISBN: 9 89 -615-013-3
iniciante s , al
argando as s im o públ ico al vo da
obra. Se gue um e s til o re fl e xivo e por ve ze s
tam bém didáctico.
<40>
inte rne t
G oog l
e apre s e nta os 10 te rm os m ais procu rados de 2006
O m ais fam os o m otor de bu s ca da inte rne t continu a a tradição anu al 1. Be bo
de pu bl icar os de z te rm os m ais pe s q u is ados no s e u s ite . 2. M y S pace
A s du as pal avras m ais pe s q u is adas foram Be bo e M y S pace , dois portais 3. W orl d Cup
de com u nidade s a criação de pág inas pe s s oais e afins , s e g u idas pe l os 4. M e tacafe
fanáticos do fu te bolcom "W orl d C u p". O víde o onl ine tam bém m arca 5. R adiobl og
pre s e nça nas pe s q u is as dos inte rnau tas , no 4º l u g ar com o s ite 6. W ik ipe dia
M e tacafe e e m 7º com a pal avra Vide o. 7. Vide o
8. R e be lde
Para m ais inform açõe s : 9 . M ininova
h ttp://w w w .g oog l
e .com /intl
/e n/pre s s /ze itg e is t2006.h tm l 10. W ik i
h ttp://w w w .inpi.pt
Th e CSS Pow e r
H á al gum te m po atrás , foi apre s e ntado no fórum do Portugal -a-Program ar um
s ite bas tante inte re s s ante para todos os program adore s w e b q ue q ue re m
apre nde r CSS e /ou trabal h am com e l e re gul
arm e nte , falo do s ite M aujor
(h ttp://w w w .m aujor.com /). Es pantos o. Is to é o pe ns am e nto q ue m uitos pode rão
te r ao abrir e s te s ite , e e xpl ico o porq uê: grande q uantidade de inform ação,
fiáve le , principal m e nte , e m Português . É ce rto q ue é português do Bras il , m as
ainda h á e s pe rança q ue s e de s e nvol va um a pl ataform a as s im e m Portugal .
Ficam os à e s pe ra...
<41>
bl
ue s cre e n
D ificul
dade s e m l
argar
o com putador nas férias ...
Novo gadge tpara
a fam íl
ia iPod
Te cl
ado l
33t
<42>
com unidade
e q ue gos tava de criar um e ve nto no Ve rão traga pros pe ridade a 2008. Um grande
do géne ro G oogl e Sum m e r of Code , m as abraço, e m nom e do s taffdo P@ P .
e xcl us ivo para m e m bros do P@ P.
<43>
Q ue re s participar na re vis ta
PRO G RAM AR?Q ue re s inte grar e s te
proje cto, e s cre ve r artigos e ajudar
a tornar e s ta re vis ta num m arco
da program ação nacional ?
Vai a
re vis taprogram ar
@ portugal
-a-program ar.org