Você está na página 1de 52

e dit orial

ndice 3 not cias 4t e m a de capa 10 a program ar 26 s e gurana 28 e l e ct rnica 33 t e cnol ogias 38 t ut orial 44 gnu/ l inux 47 e v e nt os 49 anl is e s 50 int e rne t 51 bl ue s cre e n 52 com unidade e q u ipa P RO G RAM AR

adm inis t rao


Rui M aia D avid P int as s il go

coorde nador
S rg io S ant os

Criar , Agir e Apre s e nt ar


Nos v rios e v e nt os por onde t e nh o pas s ado, um t ema t e m s ido re corre nt e : a inov ao e m P ort ugal ou, com o al guns indicaram , a f al t a de l a. O e xe m pl o m ais apre s e nt ado e ra no de s e nv ol v im e nt o de apl icae s w e b, um a re a q ue act ual m e nt e e st em f ranco de s e nv ol v im e nt o. T odos os dias s urge m nov as e originais apl icae s , m as ainda raro e ncont rar um a e q uipa port ugue s a e nv ol v ida. F oram apre s e nt adas v rias e xpl icae s para e s t a gre v e de criao: a l ocal izao (cada v e z m e nos im port ant e) ,a m e nt al idade , a f al t a de inv e st im e nt o e , principal m e nt e,af al t a de corage m . Cada v e z m ais s e pe ns a duas v e ze s ant e s de s e at irar de cabe a nal gum proj e ct o arris cado. No e nt ant o, o m e l h or cam inh o apre s e nt ado para o s uce s s o f oi m e s m o " t e nt ar"(m uit as v e ze s ) , de dicar-s e a um proj e ct o e f aze r t udo para q ue v ingue . F ica aq ui o ince nt iv oa t odos os port ugue s e s q ue e s t iv e re m a l e r, s e m e s m o com t oda a de dicao no obt iv e re m re s ul t ados (o q ue pode r acont e ce r m uit as v e ze s ) , apre ndam com a e xpe rincia e av ance m para nov as ide ias . M as t e nt e m ... A part ir de s t a e dio ire m os t e nt ar acom panh ar m ais e v e nt os q ue acont e am por P ort ugal , no s e nt ido de div ul gar o q ue s e v ai f aze ndo pe l o nos s o pas e prom ov e r a dis cus s o nos m e s m os . P or is s o, pe dim os q ue nos not if iq ue m de f ut uros e v e nt os , para pode rm os div ul gar na re v is t a, de nt ro do pe rodo pos s v el .T am bm pode ro e nv iar-nos re s um os e f ot os de e v e nt os j de corridos para s urgire m na nov a s e co Ev e nt os , inaugurada com o e v e nt o T e cnonov 2007, no q ual e st iv e pre s e nt e.

coorde nador adj unt o


M ig ue l P ais

e dit or

Joe l Ram os

re daco

D anie l Corre ia Rui G onal ve s P e dro T e ixe ira B runo V az Joo P e re ira R icardo Roch a G uil h e rm e Rodrig ue s Nuno Corre ia M ig ue l W ah non Ce l s o Ram os F e rnando M art ins

col aboradore s
Jos O l ive ira

cont act o w e bs it e

re vis t aprog ram ar @ port ug al -a-prog ram ar.org w w w .re vis t a-prog ram ar.inf o

<2>

Srgio Sant os

not cias

UE am e aa M icros of t
A e m pre s a de B il lG at es t e m de cobrar m e nos pe l a ce dncia de cdigos -f ont e s a out ras com panh ias de s of t w are . O av is o f oi f e it o no dia 1 de M aro pe l a Com is s o Europe ia. A CE de u q uat ro s e m anas M icros of t para re duzir os cus t os de ace s s o a cdigo-f ont e por produt oras de s of t w are q ue q ue re m as s e gurar a com pat ibil idade e int e raco com apl icae s da M icros of t . D e acordo com o e xe cut iv o com unit rio, os pre os prat icados pe l a M icros of t ape nas e s t o a al cance das m aiore s com panh ias . A M icros of t re s ponde u adv e rt ncia da CE, al e gando q ue os pre os de ace s s o aos cdigos s o 30% m ais baixos q ue a m dia prat icada e m cas os s im il are s . A Com is s ria para a Concorrncia Europe ia, acus a a M icros of t de v iol ar o art igo 82 do T rat ado Europe u da Concorrncia, com prt icas de abus o de pos io dom inant e . Se no s at is f ize r as e xigncias da CE, a M icros of t arris ca-s e a gas t ar num a m ul t a o corre s ponde nt e s re ce it as de cinco m e s e s no m undo int e iro

Adobe l ana v e rs o do P h ot os h op onl ine


Se gundo inf orm ae s de B ruce Ch ize n, pre s ide nt e da e m pre s a, nos prxim os s e is m e s e s s e r l anada um a v e rs o onl ine do P h ot os h op, o m ais conh e cido e ut il izado program a de e dio de im age m do m undo.

O P h ot os h op j unt ar-s e - port ant o, ao Adobe Re m ix, o j e xis t e nt e s of t w are onl ine para e dio de v de o. Com e s t as m e didas , a Adobe e s t ar a com pe t ir dire ct am e nt e com e m pre s as com o o G oogl e , q ue j of e re ce m s e rv ios s e m e l h ant e s.

Se m inrios I ST -T agus 2007


O s Se m inrios I ST -T agus , iniciados no ano de 2004, s o um e v e nt o re al izado anual m e nt e v is ando prom ov e r a dis cus s o de e xpe rincias e t roca de ide ias re l acionadas com a re a t e cnol gica, be m com o a s ua inf l uncia no m undo e m pre s arial . Se ndo organizado por al unos do I ns t it ut o Supe rior Tcnico (pl o do T agus park ) , e st e ev e nt ot em t ido um a cre s ce nt e part icipao de prof is s ionais , s e ndo j um conce it uado pal co para a apre s e nt ao de proj e ct os inov adore s e de f ort e im pact o no m e rcado. A 4 e dio dos Se m inrios I ST -T agus re al izar-s e nos dias 19 e 20 de M aro, no Ce nt ro de Congre s s os do T agus park , s e ndo s ubordinada ao t ema " Re al Tim e B us ine s s " . O ut ro dos grande s at ract iv os da e dio de s t e ano s e r a e xibio de T rabal h os de F inalde Curs o por part e de al unos do I ST . O ev e nt o ir cont ar com um l e q ue s ignif icat iv o de oradore s de pre s t gio, e nt re os q uais s e de s t acam Jos M agal h e s (Se cre t rio de Es t ado da Adm inis t rao I nt e rna) , Carl os B at is t a (T Sy s t e m s) , Jorge L ope s (B RI SA) , Ant nio M arce l o (TECM I C Eas y t ran V odaf one ) , e nt re out ros . P ara m ais inf orm ae s , cons ul t e o s it e of icial :ht t p:/ / s e m inarios .t agus .is t .ut l .pt

<3>

t e m a de capa

I nt roduo ao W M L(W AP )
A t e cnol ogia W AP f oi criada pe l oF rum W AP , f undado e m 19 9 7 por m arcas com o a Nok ia ou a M ot orol a, com o obj e ct iv o de criar um prot ocol o de t roca de inf orm ao e m dis pos it iv os m v e is (w ire l e s s ) com o os t el e m v e is . O W AP cons is t e num a l inguage m de t roca de inf orm ao prpria de nom inada W M L . O W M L com pat v el com os s t andards de T CP / I P , H TM L e XM L e incl ui t am bm um a l inguage m de s cript ing se m e l h ant e ao Jav as cript , m as m ais l ev e de f orm a a s e r de rpida e xe cuo por part e dos dis pos it iv os m v e is , j q ue e s t e s no pos s ue m grande pode r de proce s s am e nt o, de nom inada W M L Script . A s igl a W AP s ignif ica W ire l e s s Appl icat ion P rot ocol , ou s e j a, P rot ocol o para Apl icae s W ire l e s s e de f inida com o um a apl icao XM L1.0. O s brow s e rs q ue cons e gue m int e rpre t ar e s t a l inguage m s o e s pe cf icos , ou s e j a, no pode us ar o s e u brow s e r h abit ual (a no s e r q ue pos s ua al gum pl ugin para o e f e it o) para v e r pginas W AP . Os t ipos de brow s e r com pat v e is com o W AP s o de nom inados M icro B row s e rs , pe l as s uas caract e rs t icas bv ias no pode m t e r grande s ne ce s s idade s ao nv e l do h ardw are , m ais e s pe cif icam e nt e ao nv el da m e m ria e CP U, e por is s o s o ide ais para s e r us ados nos dis pos it iv os m v e is . O W ML , com o f oi e xpl icado ant e riorm e nt e, um a l inguage m q ue a bas t ant es program adore s pare ce r f am il iar por s e r um m is t o de H TM L e XM L , m as m ais rgida e m t e rm os de int e rpre t ao. As pginas e m W M L no s o de m uit o dif e re nt e program ao das pginas e m H TM L , por is s o o program ador com e xpe rincia e m H TM L pode f acil m e nt e iniciar-s e ne s t a l inguage m . Es t as pginas t m a e xt e ns o .w m le s o s e ns v e is a m ais cul as por t e re m por bas e o XM L , ou s e j a, s e e s cre v e r <abc> no v ai t e r o m e s m o re s ul t ado do q ue s e e s cre v e s s e <AB C> . P or s t andard do XM L , as t ags de v e m s e m pre s e r apre s e nt adas e m m ins cul as e de v e m s e r s e m pre f e ch adas . No W AP e xis t em t e rm os e s pe cf icos para as pginas e o s e u conj unt o, e cos t um a f aze r-s e a anal ogia e nt re o W AP e um j ogo de cart as . I m agine q ue t e m um a t orre de cart as , de nom inado por D e ck , e cada e l e m e nt o de s s a t orre , obv iam e nt e , um a cart a de nom inada por Card no cdigo. O ra as s im s e ndo, um a pgina W M L cons ide rado um de ck e de nt ro da pgina W M L pode m e xis t ir m l t ipl as cards . Q uando um ut il izador ace de pgina W M L s o de s carre gadas t odas as cards do de ck , s e ndo q ue a nav e gao e nt re e l as e s t ar a cargo do dis pos it iv o q ue as re q ue re u, q ue ne s s a al t ura no e s t ar e m cont act o com o s e rv idor.

<4>

t e m a de capa
O l e it or ne s t e m om e nt o pode e s t ar um pouco conf us o e m re l ao al guns t picos m e nos e xpl orados e por is s o pre f e rv el q ue obs e rv e um e xe m pl o de um de ck , para m e l h or cons ol idar os conh e cim e nt os at agora adq uiridos :
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card id="carta1" title="Ttulo da Carta 1"> Isto uma card. <br /> Vrias tags HTML funcionam aqui e sero abordadas mais frente nesta introduo ao WML. </card> <card id="carta2" title="Segunda Carta"> <p> Segunda carta do deck </p> </card> </wml>

Re s ul t ado:
Expl icao do Cdigo:
<w m l > -T ag q ue de l im it a o de ck . <card> T ag q ue de l im it a cada card. P ode m t er v rios at ribut os , os apre s e nt ados s o: id I de nt if icao da cart a, de v e s e r um nom e nico no de ck . t it l e Tt ul o da card, nos t e rm inais W APcos t um a s e r apre s e nt ado no t opo do e cr. <p> - P argraf o, idnt ico ao H TM L . <b r /> - Q ue bra de l inh a, s e m e l h ant e ao H TM L .

V rias t ags H TM Lpode m s e r ut il izadas da m e s m a f orm a e m W M L . Aq ui f ica um a pe q ue na l is t a das m e s m as : <p> - P argraf o <b r /> - Q ue bra de l inh a <b ig> - T e xt o G rande <sm al l > -T e xt oP e q ue no <b > - B ol d <i> - I t l ico <u> - Subl inh ado (Unde rl ine )

<5>

t e m a de capa
Um e l e m e nt o m uit o ut il izado e m H TM Le q ue t am bm pode s e r ut il izado no W M L a t abe l a. As t abe l as f uncionam prat icam e nt e do m e s m o m odo do q ue no H TM L :
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card title="Tabela"> <p> <table columns="2" border="1"> <tr> <td>Coluna 1</td> <td>Coluna 2</td> </tr> </table> </p> </card> </wml>

Re s ul t ado:
O ut ras t ags com o o <a> , q ue t ant o s o ut il izadas para anch ors com o para l ink s e m H TM L pode m s e r ut il izados e m W ML , m as com um a pe q ue na al t e rao na f orm a com o os anch ors s o ut il izados :

<anchor>Clique Aqui <go href="teste.wml"/> </anchor>

As im age ns e m W M L j s o um a h is t ria dif e re nt e. P or s e re m dis pos it iv os com poucas capacidade s e m t e rm os de h ardw are t m de s e r ut il izadas pe q ue nas , norm al m e nt e m onocrom t icas . Es t as im age ns t m um a e xt e ns o e s pe cf ica, o .w bm p. No s e r abordada aq ui a cons t ruo de im age ns .w bm p, m as um a bre v e pe s q uis a na I nt e rne t de v e r e s cl are ce -l o re l at iv am e nt e a e st e as s unt o. A im age m de v e r s e r ins e rida do s e guint e m odo:
<img src="imagem.wbmp" alt="imagem_alt" />

Os f orm ul rios s o e l e m e nt os m uit o t e is para adicionar int e ract iv idade ao s e u s it e ou port al , ape s ar dos ut il izadore s no f icare m m uit ot e m po a nav e gar na W APao cont rrio da I nt e rne t . Ne s t a s e co v am os de ixar o l e it or e xpl orar por s i prprio cdigo de f orm ul rios j conce bidos , be m com o o s e u re s ul t ado, de m odo a pode r apre nde r m e l h or a t rabal h ar com f orm ul rios e m W ML . (e xe m pl os re t irados do s it e w 3s ch ool s .com e t radu zidos para port u gu s )

<6>

t e m a de capa
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card title="Input"> <p> Nome: <input name="Nome" size="15"/><br/> Idade: <input name="Idade" size="15" format="*N"/><br/> Sexo: <input name="Sexo" size="15"/> </p> </card> </wml>

(im age m e ncu rt ada de v ido ao t am anh o do e cr do s im u l ador)


<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card title="Lista de seleccao"> <p> <select> <option value="htm">HTML Tutorial</option> <option value="xml">XML Tutorial</option> <option value="wap">WAP Tutorial</option> </select> </p> </card> </wml>

<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card title="Lista de seleccao 2"> <p> <select multiple="true"> <option value="htm">HTML Tutorial</option> <option value="xml">XML Tutorial</option> <option value="wap">WAP Tutorial</option> </select> </p> </card> </wml>

<7>

t e m a de capa
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card title="Fieldset"> <p> <fieldset title="CD Info"> Titulo: <input name="titulo" type="text"/><br/> Premio: <input name="premio" type="text"/> </fieldset> </p> </card> </wml>

Not a: Es t e s im ul ador no re produz o f ie l ds e t


da m e l h or f orm a.

Em W M L , para a nav e gao e nt re as div e rs as pginas e af ins , t e m os os s e guint esel e m e nt os :

P re v ious

G o:
<anchor> Ir para Carta <go href="carta.wml"/> </anchor>

D irige para a pgina v is it ada ant e riorm e nt e.


<anchor> Pgina Anterior <prev/> </anchor>

P re v ious :
<anchor> Anterior <prev/> </anchor>

Re f re s h

Act ual iza a pgina ao cl icar , e act ual iza as v ariv e is dadas .

t am bm

Re f re s h :
<anchor> Actualizar <go href="pagina.wml"/> <refresh> <setvar name="a" value="10"/> </refresh> </anchor>

<anchor> Actualizar a pgina <go href="paginaactual.wml"/> <refresh> <setvar name="a" value="20"/> </refresh> </anchor>

C om andos W M L
Go
D irig e para a pg ina indicada no h re f .
<anchor> Ir para abc <go href="abc.wml"/> </anchor>

No O pe rat ion (noop) P re v ine um a aco de s e r re al izada.


<anchor> Ir para abc <go href="abc.wml"/> <noop/> </anchor>

<8>

t e m a de capa
Tim e rs
Ut il izam -s e norm al m e nt e para re dire ccionar para um a pgina e s pe cf ica, de pois de x s e gundos .
<card ontimer="test.wml"> <timer value="30"/> <p>Vai ser redireccionado em 3 segundos.</p>

V ariv e is e m W M L
De f inir um a v ariv el :
<setvar name="a" value="500"/>

Com is t o criada um a v ariv e la com o v al or 500. P ara de f inir um a v ariv e la part ir de um inputf aze m os :
<card id="carta1"> <select name="escolha"> <option value="pap">Portugal-aProgramar</option> <option value="revista">Revista PROGRAMAR</option> </select> </card>

E s e guidam e nt e us am os o s e guint e cdigo para us ar a v ariv el obt ida:


<card id="carta1"> Seleccionaste: $(escolha) </card>

Se s e guiu at e nt am e nt e e st e art igo com ce rt e za ir gos t ar de aprof undar m ais os s e us conh e cim e nt os e apl ica-l os nos s e us prprios s it e s , por is s o de ixo aq ui um a e xce l e nt e f orm a de apre nde r m ais s obre e st e t e m a. Cons ul t e ot ut orial da W 3Sch ool s s obre e s t e as s unt o, m ais e s pe cif icam e nt e a pgina de e xe m pl os (h t t p:/ / w 3s ch ool s .com / w ap/ wml _e xam pl e s .as p) . D aq ui t udo, bons s it e s!

<9 >

D anie l Corre ia

a program ar

P rogram ao O rie nt ada aos As pe ct os com As pe ct J


I nt roduo
D urant e os l t im os anos as s is t im os a um a grande divul gao da program ao orie nt ada aos obj e ct os (P OO) . Es t a ve io re s ponde r a re q uis it os e s s e nciais no de s e nvol vim e nt o de s of t w are , nom e adam e nt e no q ue diz re s pe it o s f acil idade s de m anut e no e re ut il izao do cdigo. M as ape s ar de t odas e s t as e vol ue s , ne m t udo aq uil o q ue a P O O s e propunh a cons e guir f oi al canado. ne s t e cont e xt o q ue s urge a program ao orie nt ada aos as pe ct os (P O A) . Es t e novo paradigm a de program ao s urgiu e m 19 9 6 por G re ge r K iczal os e pe l a s ua e q uipa no Xe rox P ARC, q ue t am bm f oram re s pons ve is pe l o de s e nvol vim e nt o do As pe ct J, a l inguage m P O A m ais us ada. Q uando v am os de s e nv ol v er um a apl icao, conv e nie nt e div idir o probl e m a q ue nos f oi propos t o e m part e s. A s e parao do probl e m a de acordo com os dados e as f uncional idade s a e l es as s ociadas f acil it a o e st udo dos re q uis it os da apl icao. I st o o q ue s e de s igna por s e parao de int e re s s e s . O paradigm a OO e st abe l e ce um a s e parao de int e re s s e s t e ndo e m cont a os t ipos de dados , re pre s e nt ados pe l os obj e ct os , e as f une s q ue ut il izam cada t ipo de dados , ou s e j a, os m t odos a q ue um obj e ct o re s ponde . M as , com o j f oi re f e rido ant e riorm e nt e, ape s ar da orie nt ao aos obj e ct os t er t razido m e l h orias na f orm a de program ar , no cons e guiu re s ol v e r al guns probl e m as . Exe m pl os cl s s icos s o o re gis t os das ope rae s e m f ich e iros de l og q ue e ncont ram os e m m uit os s of t w are s , ou program ao concorre nt e/ dis t ribuda. O cdigo as s ociado a e s t e t ipo de f uncional idade s e ncont ra-s e norm al m e nt e e s pal h ado por t odos os m dul os , o q ue dif icul t a a m anut e no e a e v ol uo do cdigo. Em P O A dize m os q ue is t o s o int e re s s e s e nt re cort ant e s , pois cort am t rans v e rs al m e nt e t odos os m dul os . A P OA v e m re s ol v e r e st e probl e m a int roduzindo um nov o nv el de s e parao de int e re s s e s , os as pe ct os . B as icam e nt e e st e s int e re s s e s t rans v e rs ais apl icao s o e ncaps ul ados ne s t as nov as unidade s m odul are s e pos t e riorm e nt e f undidas com as cl as s e s num nico s is t e m a. I st o no s aum e nt a a f acil idade de m anut e no de s t as f uncional idade s da apl icao, v is t o q ue t udo s e e ncont ra num nico l ocal , com o aum e nt a as pos s ibil idade s de re ut il izao das cl as s e s nout ros cont e xt os , pois e s t as e ncont ram -s e l im pas de s t as f uncional idade s q ue norm al m e nt e v ariam m uit o de cas o para cas o.

<10>

a program ar

O As pe ct J
O As pe ct J (h t t p:/ / w w w .e cl ips e .org/ as pe ct j )f oi a prim e ira l inguage m O A de s e nv ol v ida e , prov av el m e nt e, a m ais us ada. Es t a l inguage m pe rm it e acre s ce nt ar as pe ct os a program as f e it os e m Jav a. P ara com pre e nde r o As pe ct J ne ce s s rio conh e ce r t rs conce it os f undam e nt ais pre s e nt e s na P O A: adv ice s - s o f ragm e nt os de cdigo com as ace s re f e re nt e s aos int e re s s e s e nt re cort ant e s; j oin point s - s o l ocais de um program a onde os adv ice s s e ro e xe cut ados , q ue pode m s e r a ch am ada/ e xe cuo de um m t odo, o ace s s o a m e m bros de um a cl as s e , a criao de um obj e ct o, o l anam e nt o de e xce pe s , e t c.; point cut s - s o um conj unt o de j oin point s , de f inidos s e gundo um de t e rm inado crit rio, q ue ide nt if icam os l ocais onde um de t e rm inado adv ice s e r e xe cut ado.

w it h in - j oin point s q ue ocorre m de nt ro de de t e rm inadas cl as s e s ; t arge t- e nv io de m e ns age ns a um obj e ct o de um de t e rm inado t ipo; args - e nvio de m e ns age ns e m q ue os argum e nt os s o de um de t e rm inado t ipo. A e xpre s s o pode s e r um a pal av ra (nom e de um a cl as s e , nom e de um m t odo, e t c.) , m as t am bm t e m os caract e re s e s pe ciais : *- re pre s e nt a um a s e q uncia de caract e re s q ual q ue r , de s de q ue no cont e nh a pont os ; .. - re pre s e nt a um a s e q uncia de caract e re s q ual q ue r , m e s m o cont e ndo pont os ; + - re pre s e nt a as s ubcl as s e s de um a dada cl as s e . V ej am os agora al guns e xe m pl os : point cu tt os t r() : e xe cu t ion(St ring t oSt ring() ) ; Re pre s e nt a t odas as e xe cue s do m t odo t oSt ring. P ode m os re s t ringir ape nas e xe cuo do m t odo a obj e ct os da cl as s e Xpt o s ubs t it uindo St ring t oSt ring() por St ring Xpt o.t oSt ring() , ou a obj e ct os da cl as s e Xpt o e t odas as s uas s ubcl as s e s f aze ndo St ring Xpt o+ .t oSt ring() ; point cu ts e t s () : cal l (*Xpt o* .s e t * (..) ) ; Re pre s e nt a a ch am ada de m t odos com e ados pe l a pal av ra s e t de cl as s e s com e adas pe l a pal av ra Xpt o, com um nm e ro q ual q ue r de argum e nt os . P ode m os l im it ar ape nas a m t odos q ue re ce bam argum e nt os de um de t e rm inada t ipo, por e xe m pl o, f aze ndo * Xpt o* .s e t * (int ,St ring) l im it aram os ape nas aos m t odos cuj o o prim e iro argum e nt o f os s e um int e iro e o s e gundo um a s t ring (para al m de v e rif icar t odas as out ras condie s j indicadas ) . point cu tge t s () : ge t (priv at e St ring abc* ); Re pre s e nt a t odos os ace s s os (para cons ul t a) a at ribut os priv at e do t ipo St ring, com e ados por abc.

P oint cut s
G e ne ricam e nt e , a de f inio de point cutobe de ce s e guint e s int axe : um

pointcut <nome>() : <tipo>(<padro>);

O nde : <nom e > o ide nt if icador de s t e point cut <t ipo> indica a q ue t ipo de j oin point nos re f e rim os (ch am ada de um a f uno, ace s s o a um at ribut o, e t c.) ; <padro> um a e xpre s s o q ue re s t ringe os j oin point s a s e re m cons ide rados q ue l e s q ue f aze m m at ch ing com e s t a e xpre s s o. D e s e guida indicam -s e point s m ais im port ant e s: os t ipos de j oin

cal l - ch am ada de um a f uno; e xe cut ion - e xe cuo de um a f uno; ge t- cons ul t a dos at ribut os de um obj e ct o; s e t- al t e rao dos at ribut os de um obj e ct o;

<11>

a program ar
P ara de f inirm os point cut s t am bm t e m os nos s a dis pos io ope radore s l gicos (!, || e & & , cuj o s ignif icado o h abit ual ) .
pointcut gets() : get(* *) && within(Xpto);

Es t e point cutre pre s e nt a um ace s s o a q ual q ue r at ribut o, de s de q ue s e j a da cl as s e Xpt o. Agora v am os v e r com o ut il izar o t arge t e o args para re s t ringir o t ipo dos obj e ct os a q ue o m t odo e nv iado, as s im com o o t ipo dos argum e nt os com os q uais o m t odo f oi inv ocado.
pointcut p1(Xpto x,int y,float z) : execution(* *(..)) && target(x) && args(i,j);

D e st af orm a re s t ringim os os j oin point s aos m t odos e nv iados a um obj e ct o do t ipo Xpt o e q ue re ce be m 2 argum e nt os (o prim e iro do t ipo int e o s e gundo do t ipo f l oat ) . cl aro q ue is t o pode ria t e r s ido cons e guido com a e xpre s s o * Xpt o.* (int ,f l oat ) , m as , com o v e re m os de s e guida, e s t a opo pe rm it ir us ar o obj e ct o ao q ual f oi e nv iado o m t odo, as s im com o os argum e nt os re ce bidos na e s pe cif icao de adv ice s .

Adv ice s
Se os point cut s indicav am o conj unt o de pont os de um a apl icao onde q ue ram os re al izar out ras ope rae s , os adv ice s pe rm it e m -nos de f inir q uais s o e s s as ope rae s . T e m os 3 (ou 5) t ipos de adv ice s . Us am os o: be f ore , q uando q ue re m os e xe cut ar ace s ant e s de um j oin point ; af t er , q uando q ue re m os e xe cut ar ace s de pois de um j oin point , e xis t indo t rs al t e rnat iv as : o af t e r() , q ue s e m pre e xe cut ado; o af t e r() re t urning, q ue ape nas e xe cut ado q uando o m t odo as s ociado ao j oin point re t orna; o af t e r() t h row ing, q ue ape nas e xe cut ado q uando o m t odo as s ociado ao j oin point l ana um a e xce po. around , q uando q ue re m os e xe cut ar ace s e m v e z de um m t odo (s e ndo q ue de nt ro do adv ice pode m os e xe cut ar o m t odo original ) . V am os agora anal is ar al guns e xe m pl os concre t os . P ara t alv am os cons ide rar as s e guint es cl as s e s Jav a:
public class Classe1 { private int x; private boolean a; public Classe1(int x,boolean a) { this.x = x; this.a = a; } public void setX(int x) {this.x=x;} public void setA(boolean a) {this.a=a;} public String toString() { return ("x=" + this.x + " / a=" + this.a); } }

public class Classe2 { private int y; public Classe2(int y) { this.y=y; } public void setY(int y) {this.y=y;} public String toString() { return ("y=" + this.y); } }

<12>

a program ar
O prim e iro probl e m a q ue v am os re s ol v e r cons is t e e m al t e rar os m t odos t oSt ring() .V am os al t e rl os de f orm a a q ue pas s e m a criar um a s t ring q ue cont e nh a t am bm o nom e da cl as s e . T al pode s e r cons e guido do s e guint e m odo:

pointcut tostr(Object obj) : execution(String toString()) && target(obj); String around(Object o) : tostr(o) { String s = proceed(o); return ("<" + o.getClass().getName() + " @ " + s + ">"); }

P rim e iro de f inim os o point cut q ue , para al m de re s t ringir os m t odos e xe cuo do t oSt ring() , t am bm capt a o obj e ct o ao q ualo m t odo e nv iado at rav s do t arge t . D e st a f orm a f oi pos s v el ut il izar o obj e ct o no adv ice , com o s e pode v e r nas l inh as 5 e 6. F oi t am bm us ado proce e d, q ue e xe cut a o m t odo original . D e pois s acre s ce nt ar o nom e da cl as s e e de v ol v er o re s ul t ado. No prxim o e xe m pl ov am os v e r com o us ar o args , q ue s e m e l h ant e ao t arge t , m as e s t e capt a os argum e nt os do m t odo (ou cons t rut or , com o s e r o cas o) . Es t e as pe ct o ir im prim ir um a m e ns age m s e m pre q ue um obj e ct o de um a cl as s e com e ada por Cl as s e f or inicial izado at rav s de um cons t rut or q ue re ce ba um argum e nt o do t ipo int e iro.

pointcut init(int x) : initialization(new(..)) && within(Classe*) && args(x); after(int x) : init(x) { System.out.println("Classe: " + thisJoinPointStaticPart.getSignature().getDeclaringType().getName()); System.out.println("Argumentos: " + x); }

Ne s t e e xe m pl o f oi t am bm us ada a v ariv e lt h is JoinP oint St at icP art , q ue cont m um a s rie de inf orm ae s s obre o j oin point e m q ue o as pe ct o v ai s e r e xe cut ado. Exis t e t am bm a v ariv el t h is JoinP oint , q ue pode ria s e r us ada ne s t e cas o para s abe r q uais os argum e nt os re ce bidos . T al s e r f e it o no prxim o e xe m pl o. Suponh am os agora q ue q ue ram os re gis t ar t odas as al t e rae s re al izadas e m q ual q ue r um a das cl as s e s . P ara al t e rar o v al or dos at ribut os ne ce s s rio re corre r aos m t odos s e t * . L ogo v am os criar um point cut q ue agrupe t odas as e xe cue s de s t e s m t odos . T am bm v am os q ue re r re gis t ar q ual o obj e ct o af e ct ado, q uais os argum e nt os us ados no m t odo (s e ndo q ue o se u t ipo ne m s e m pre o m e s m o) e q ual o nom e do m t odo.

pointcut sets(Object obj) : call(* Classe*.set*(..)) && target(obj); before(Object obj) : sets(obj) { try { BufferedWriter bw = new BufferedWriter(new FileWriter("history.txt",true));

<13>

a program ar

Date d=(Calendar.getInstance()).getTime(); bw.write("Data: " + d + "\nObjecto: " + obj + "\nMetodo: " + thisJoinPointStaticPart.getSignature().getName() + "\nArgumentos:\n"); Object[] args = thisJoinPoint.getArgs(); String[] ids = ((CodeSignature)thisJoinPoint.getSignature()) .getParameterNames(); for (int i = 0; i < args.length; i++) { bw.write(" " + ids[i] + "=" + args[i] + "\n"); } bw.close(); } catch(Exception e){System.out.println(e);} }

Aq ui j re corre m os v ariv el t h is JoinP oint para obt e r os argum e nt os us ados no m t odo, as s im com o os ide nt if icadore s dos argum e nt os . O re s ul t ado obt ido s e r al go com o: D at a: SatD e c 09 17:56:30 W ET 2006 O bj e ct o: <Cl as s e 1 @ x=12 /a=t rue > Me t odo: s e t X Argum e nt os : x=10

Concl us o
Ao l ongo de s t e art igo f icaram v is v e is al guns dos be ne f cios q ue pode m os obt e r com a P O A. Cont udo h al guns f act os q ue ne ce s s rio re al ar . Em prim e iro, q ue um a abordage m dos probl e m as s e gundo e s t amet odol ogia, bas t ant e m ais com pl icada do q ue a abordage m O O . dif cilde f inir a e s t rut ura do s of t w are , ide nt if icando corre ct am e nt e t odas as part e s q ue o com pe m . M e s m o de pois de de f inida a e s t rut ura, com e t e m os f acil m e nt e e rros na de f inio dos as pe ct os (acont e ce v rias v e ze s de f inir as pe ct os q ue originam cicl os inf init os , pois ao e xe cut -l os criv am os s it uae s onde out ros as pe ct os pode riam s e r e xe cut ados ) , q ue por v e ze s no s o m uit ov is v e is . Subl inh a-s e ainda q ue no obj e ct iv o da P O A s ubs t it uir a P OO, t rat am -s e s im de dois paradigm as com pl e m e nt are s . P or l t im o re f e ria-s e q ue e s t e t e xt o ape nas um a int roduo P O A/ As pe ct J e , com o t al , m uit as das capacidade s de s t e nov o paradigm a no f oram aq ui de m ons t radas . Suge re -s e a q ue m q uis e r aprof undar os s e us conh e cim e nt os ne s t a re a, a cons ul t a da pgina w e b do As pe ct J, onde pode r e ncont rar um a v as t a docum e nt ao s obre e s t e t e m a.

h h h h

t t p:/ / w w w .e cl ips e .org/ as pe ct j t t p:/ / e n.w ik ipe dia.org/ w ik i/ As pe ct -orie nt e d_program m ing t t p:/ / w w w .re s e arch .ibm .com / h ype rs pace t t p:/ / w w w .de v x.com / Jav a/ Art icl e/ 28422

<14>

Rui G onal v es

Re f e rncias

a program ar
O cdigo do cl ie nt e e do s e rv idor no t m de se r ne ce s s ariam e nt e dif e re nt e s, f acil m e nt e s e de s e nv ol v e um a apl icao q ue t ant o pode f uncionar com o cl ie nt e com o para s e rv idor . A grande dif e re na e st no s e u com port am e nt o, ou s e j a, o s e rv idor inicia a e xe cuo e aguarda um a l igao, o cl ie nt e inicia a e xe cuo e a l igao ao s e rv idor . P ara dar um e xe m pl o prt ico de com o f uncionam os s ock e t s, v am os f aze r um s im pl e s par de apl icae s e m q ue o cl ie nt e e nv ia um a pal av ra com l et ras m ins cul as para o s e rv idor . O s e rv idor t rat a de conv e rt e r as l et ras e m m ais cul as de v ol v e ndo a pal av ra ao cl ie nt e. V am os ut il izar o m odo T CP do prot ocol oT CP / I Pe o conj unt o de apl icae s s o f e ch adas q uando o cl ie nt e digit a a pal av ra e xit . Ant e s de m ais nada conv m v e r com o f unciona o e s t abe l e cim e nt o de um a l igao T CP . A s e guint e f igura bas t ant e e xpl cit a q uant o a is s o:

Sock e t s de B e rk e l y em l inguage m C
Na ant e rior e dio da Re v is t a P RO G RAM AR f oi dado a conh e ce r com o f uncionam os s ock e t s e m Jav a. T am bm f oram de s crit as as principais dif e re nas e nt re UD P e T CP . Ne s t e art igo v am os f aze r um a bre v e int roduo aos Sock e t s de B e rk e l ey em l inguage m C para am bie nt e s UNI Xe L inux. B as icam e nt e os Sock e t s de B e rk e l e y s o um AP I , is t o , um conj unt o de bibl iot e cas de f une s para a program ao s obre prot ocol os de com unicao.

M ode l o Cl ie nt e Se rv idor
O m ode l o Cl ie nt e Se rv idor com pos t o por um conj unt o de dois program as e m e xe cuo q ue com unicam e nt re s i. O s e rv idor e s t s e m pre e s pe ra de pe didos ef e ct uados pe l os cl ie nt e s m as de s conh e ce a s ua l ocal izao. O cl ie nt e t e m de conh e ce r obrigat oriam e nt e a l ocal izao do s e rv idor (I P ) para pode r l igar-s e e com unicar com e l e.

<15>

a program ar
Agora v am os v e r pas s o a pas s o as f une s ut il izadas :

5 - Es t abe l e ce r a l igao ao s e rv idor:


// efectua a ligao ao servidor. // Se falhar (por exemplo o servidor // estar em baixo) o programa termina if(connect(sock, (struct sockaddr *)&target, ad1) == -1) { close(sock); puts("Conexao falhou!"); exit(0); }

Cl ie nt e
1 - Conj unt o de bibl iot e cas a adicionar s t radicionais :
#include #include #include #include #include #include #include <sys/types.h> <sys/socket.h> <netdb.h> <netinet/in.h> <arpa/inet.h> <sys/ioctl.h> <unistd.h>

6 - L um a pal av ra do t e cl ado e nq uant o e st a f or dif e re nt e de e xit . Em s e guida e nv ia-a para o s e rv idor e re ce be -a com l et ras m ais cul as : de de s t ino
do { scanf("%s", palavra); // envia para o servidor os dados // contidos na varivel palavra write(sock, palavra, 50); if(strcmp(palavra, "exit") != 0){ // recebe do servidor os dados // e guarda-os na varivel // palavra2 read(sock, palavra2, 50); printf("%s\n", palavra2); } }while(strcmp(palavra, "exit") != 0);

2 - De f inir a e s t rut ura (s e rv idor) e as v ariv e is :

// definio da estrutura do servidor struct sockaddr_in target; // criar o socket, indicando a famlia // a que pertence (AF_INET), o tipo de // protocolo (neste caso TCP // SOCK_STREAM) e o parmetro do // protocolo (0). int sock = socket(AF_INET,SOCK_STREAM,0); // variveis char palavra[50], palavra2[50]; // tamanho da estrutura do servidor int ad1 = sizeof(target);

7-F e ch ar o s ock e t :
close(sock);

3-I nicial izar a e s t rut ura:


// inicializa a estrutura do servidor bzero((char *)&target, ad1);

Se rv idor
1 - Conj unt o de bibl iot e cas a adicionar s t radicionais :
#include #include #include #include #include #include <sys/types.h> <sys/socket.h> <netinet/in.h> <arpa/inet.h> <unistd.h> <ctype.h>

4 - De f inir as proprie dade s do s e rv idor ao q ual nos v am os l igar:


// indica a famlia do protocolo target.sin_family = AF_INET; // especifica o endereo (IP) do // servidor target.sin_addr.s_addr = inet_addr("127.0.0.1"); // porta que o programa vai usar target.sin_port = htons(8450);

<16>

a program ar

2 - De f inir a e s t rut ura do cl ie nt e , do s e rv idor e as v ariv e is :


// definio das estruturas do // cliente e do servidor struct sockaddr_in me, from; // criao dos sockets.o sock // declarado identicamente ao cliente int newSock, sock = socket(AF_INET,SOCK_STREAM,0); // declarao das variveis int tam = 0, i = 0; int ad1 = sizeof(me); char palavra[50], palavra2[50];

6 - Es pe rar por pe didos . criado um nov o s ock e tpara t rat ar ape nas de s t e pe dido e nq uant o q ue o out ro s ock e t cont inua e s pe ra de pe didos :
// coloca o socket escuta. // Podem ser mantidos em espera 5 // pedidos de ligao listen(sock, 5); // gera um novo socket especfico // para essa ligao newSock = accept(sock, (struct sockaddr *)&from, (void *)&ad1); // fechar o socket antigo close(sock);

3-I nicial izar a e s t rut ura:


// inicializa a estrutura do servidor bzero((char *)&me, ad1);

7 - Cicl o inf init o q ue t rat a dos pe didos do cl ie nt e:


for(;;){ // recebe os dados do cliente e guarda-os na varivel palavra read(newSock, palavra, 50); if(strcmp(palavra, "exit") != 0){ tam = strlen(palavra); for(i=0;i<tam;i++){ if((palavra[i]>='a') && (palavra[i]<='z')){ palavra2[i] = toupper(palavra[i]); } } palavra2[i] = '\0'; // envia os dados que esto na varivel palavra2 para o cliente write(newSock, palavra2, 50); } else{ close(newSock); exit(0); } }

4 - De f inir as proprie dade s do s e rv idor:


// indica a famlia do protocolo me.sin_family = AF_INET; // fica associado a todos os // endereos IP do host local me.sin_addr.s_addr = htonl(INADDR_ANY); // porta em que o servidor vai // estar escuta me.sin_port = htons(8450);

5 - Al ocar a port a. Se e s t iv e r ocupada f e ch ado o s e rv idor .


// se a porta estiver ocupada o servidor no pode correr e terminado if(bind(sock, (struct sockaddr *)&me, ad1) == -1) { close(sock); puts("Porta Ocupada!"); exit(0); }

<17>

a program ar

Se rv idor
#include #include #include #include #include #include #include #include #include <stdio.h> <string.h> <stdlib.h> <sys/types.h> <sys/socket.h> <netinet/in.h> <arpa/inet.h> <unistd.h> <ctype.h>

int main() { struct sockaddr_in me, from; int newSock, sock = socket(AF_INET, SOCK_STREAM, 0); int tam = 0, i = 0; int ad1 = sizeof(me); char palavra[50], palavra2[50]; bzero((char *)&me, ad1); me.sin_family = AF_INET; me.sin_addr.s_addr = htonl(INADDR_ANY); me.sin_port = htons(8450); if(bind(sock, (struct sockaddr *)&me, ad1) == -1) { close(sock); puts("Porta Ocupada!"); exit(0); } listen(sock, 5); newSock = accept(sock, (struct sockaddr *)&from, (void *)&ad1); close(sock); for(;;){ read(newSock, palavra, 50); if(strcmp(palavra, "exit") != 0){ tam = strlen(palavra); for(i=0;i<tam;i++){ if((palavra[i]>='a') && (palavra[i]<='z')){ palavra2[i] = toupper(palavra[i]); } } palavra2[i] = '\0'; write(newSock, palavra2, 50); } else{ close(newSock); exit(0); } } return 0; }

<18>

a program ar

Cl ie nt e
#include #include #include #include #include #include #include #include #include #include <stdio.h> <string.h> <stdlib.h> <sys/types.h> <sys/socket.h> <netdb.h> <netinet/in.h> <arpa/inet.h> <sys/ioctl.h> <unistd.h>

int main() { struct sockaddr_in target; int sock = socket(AF_INET, SOCK_STREAM, 0); char palavra[50], palavra2[50]; int ad1 = sizeof(target); bzero((char *)&target, ad1); target.sin_family = AF_INET; target.sin_addr.s_addr = inet_addr("127.0.0.1"); target.sin_port = htons(8450); if(connect(sock, (struct sockaddr *)&target, ad1) == -1) { close(sock); puts("Conexao falhada!"); exit(0); } do { scanf("%s", palavra); write(sock, palavra, 50); if(strcmp(palavra, "exit") != 0){ read(sock, palavra2, 50); printf("%s\n", palavra2); } }while(strcmp(palavra, "exit") != 0); close(sock); return 0; }

Se no pode t am bm pe s q uis ar na I nt e rne t j q ue e xis t e inm e ra inf orm ao no q ue diz re s pe it o AP I s ock e t s de B e rk e l e y.

<19 >

P e dro T e ixe ira

P ara conh e ce r m e l h or com o s o com pos t as al gum as e s t rut uras o l e it or pode v is it ar os l ink s : ht t p:/ / j an.ne t com p.m onas h .e du.au/ Cl ie nt Se rv e r/ s ock e t / s ock e t .h t ml ht t p:/ / w w w .de i.is e p.ipp.pt / ~ andre / docum e nt os / s ock e t s -be rk e l e y.h t ml

a program ar

Es t at s t icas e m P HP 1 P art e

M aani P HP / SW FCh art s um a f e rram e nt a l iv re q ue nos pe rm it e criar grf icos e m Sh ock w av e F l as h e m t e m po re al com dados e s t t icos ou dinm icos . Encont ram o dow nl oad e inf orm ao m ais com pl et aem: ht t p:/ / w w w .m aani.us / ch art s/ inde x.ph p De v ido e xt e ns o do s cript , ne s t e art igo ape nas ire i f al ar das f une s m ais re l ev ant e s . O s cript na s ua t ot al idade , im pl e m e nt a 4 grf icos ( 2 de barras , e 2 circul are s ) ,e 4 t abe l as re s um o. No e nt ant o ape nas ire m os f al ar aq ui da cons t ruo de um grf ico e de um a t abe l a re s um o. Na concl us o do art igo (na prxim a e dio) s e r re f e rido um l ink para o s criptcom pl et o.

Q ue m j criou um w e bs it e ce rt am e nt e t ev e a curios idade de s abe r q uant as pe s s oas por l pas s aram e de onde s e riam e s s as pe s s oas . A curios idade h um ana nat ural e l ev a a e st as q ue s t e s . Es t a a prim e ira part e dum t ut orial q ue s e r concl udo na prxim a e dio.
P ara re s ol v e r de um a f orm a s im pl es e int e iram e nt e ao nos s o gos t o ir s e r de s e nv ol v ido aq ui um t ut orial pas s o-apas s o de f orm a a q ue no f inalde s t e art igo t e nh a um s is t e m a de e s t at s t icas s im pl es e f uncional com as inf orm ae s m ais ut il izadas . T odas e s t as inf orm ae s s e ro m os t radas com auxl io v is ualde grf icos , para q ue os re s ul t ados se j am m ais ape l at iv os aos v is it ant e s. Ant e s de com e ar a program ar , conv m f aze r o dow nl oad de al gum as cl as s e s e m P HP q ue ir ut il izar de f orm a a m inim izar o s e u t rabal h o. So e l as : G EO I P um a cl as s e com v e rs o ope ns ource e v e rs o l ice nciada. Ns ire m os ut il izar a v e rs o l iv re para nos re t ornar o cdigo e nom e do P as de orige m do v is it ant e s. P ode ro re al izar o dow nl oad e m : ht t p:/ / w w w .m axm ind.com / app/ ge oip_count ry

I ns t al ao
Aps t er f e it o o dow nl oad de am bas as f e rram e nt as (G e oI P e M aani Ch art s) , de v e r de s com pact -l as para a raiz do s e u w e bs it e. Os f ich e iros de s crit os nas prxim as pginas de v e ro t am bm s e r guardados na raiz do w e bs it e.

SQ L
Com o o proj e ct o ir s al v aguardar os dados de t odos os v is it ant e s q ue pas s am no w e bs it e , de v e r guardar os re s pe ct iv os dados num a bas e de dados e m M y SQ L .

<20>

a program ar

CREATE DATABASE IF NOT EXISTS `stats`; USE `stats`; DROP TABLE IF EXISTS `estatisticas`; CREATE TABLE `estatisticas` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ip` varchar(15) NOT NULL, `referer` varchar(150) DEFAULT NULL, `browser` varchar(150) DEFAULT NULL, `os` varchar(150) DEFAULT NULL, `pagina_visitada` varchar(150) NOT NULL, `cod_pais` varchar(4) DEFAULT NULL, `nome_pais` varchar(75) DEFAULT NULL, `dominio_visitante` varchar(150) DEFAULT NULL, `data` date NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM;

Re col h a de I nf orm ae s
Agora q ue j t e m a bas e de dados pront a e pre parada para re ce be r dados , pas s a f as e do P H Pcriando o f ich e iro 's t at is t ics .ph p'. I nicia as s im o f ich e iro l ogo com a f uno m ais im port ant e de t odo o s is t e m a. A f uno q ue pe rm it e re col h e r os dados do v is it ant e , e ir ins e rir na re s pe ct iv at abe l a.
<?php function saveStatistics ( ) { include( "connection.php"); include( "geoip.inc" ); $geoIP_Pais = geoip_open( "GeoIP.dat" , GEOIP_STANDARD );

Ut il izando a f uno ge oip_ope n q ue f az part e da Cl as s e G e oI Pf az com q ue s e carre gue com a bas e de dados q ue ir s e rv ir para ide nt if icar os P as e s .
$ip = $_SERVER[ 'REMOTE_ADDR' ]; if ( ! $_SERVER[ 'HTTP_REFERER' ] ) { $referer = "URL Directo"; } else { $temp_referer=parse_url(htmlspecialchars(strip_tags($_SERVER['HTTP_REFERER']))); if ( $temp_referer[ 'host' ] == $_SERVER[ 'HTTP_HOST' ] ) { $referer = "URL Directo"; } else { $referer = $temp_referer[ 'host' ]; } }

<21>

a program ar
O prprio P HPt e m q uas e t odas as ins t rue s ne ce s s rias para re col h e r a inf orm ao q ue ne ce s s it a. A v ariv el $ _SERV ER pe rm it e s abe r o I P do v is it ant e at rav s de REM O TE_AD D R . Com H TTP _REF ERER cons e guir s abe r de q ue pgina originrio. No e nt ant o o H TTP _REF ERER um a ins t ruo m uit ot raioe ira, pois por v e ze s d inf orm ae s incorre ct as q ue t e m q ue s al v aguardar. Se no e xis t ir ne nh um H TTP _REF ERER s ignif ica q ue o ut il izador prov av el m e nt e ins e riu dire ct am e nt e o URLdo w e bs it e e com o t al ,f icar cat al ogado com o URLD ire ct o. Cas o e xis t a um H TTP _REF ERER e nt o no ir pre cis ar de t odo o REF ERER para o t rat am e nt o, ir ape nas ne ce s s it ar de al go do gne ro: w w w .port ugal -a-program ar.com . P ara t alut il iza um a s rie de ins t rue s do P H P q ue ir is ol ar a inf orm ao q ue pre t e nde de t oda a inf orm ao q ue v e m a m ais no URL . O l t im o probl e m a a de re s ol v e r pre nde -s e com o f act o de q ue s e f r e f e ct uado um REF RESH na prpria pgina o H TTP _REF ERER de v ol v e ape nas um array () v azio. I r cat al ogar um REF RESH com o um 'h it ' de URLD ire ct o.
$temp_page_visited = explode ( "/" , $_SERVER[ 'PHP_SELF' ] ); $page_visited = end ( $temp_page_visited );

Num s is t e m a de e s t at s t icas im port ant e q ue t e nh a conh e cim e nt o de q uais as pginas m ais v is it adas no s e u w e bs it e . Ut il izar $ _SERV ER['P HP _SEL F '] , cont udo ao ut il izar e s t a ins t ruo re ce be inf orm ao adicional no URLq ue no ne ce s s it a. T e r q ue is ol ar a part e f inal do URLde f orm a a q ue t e nh a ape nas a pgina v is it ada.
$country_code = geoip_country_code_by_addr ( $geoIP_Pais , $ip ); $country_name = geoip_country_name_by_addr ( $geoIP_Pais , $ip ); $visitor_hostname = @gethostbyaddr ( $ip ); if(ereg("^(([1]?[0-9]{1,2}|2([0-4][0-9]|5[0-5]))\.){3}([1]?[0-9]{1,2}|2([0-4][09]|5[0-5]))$", $visitor_hostname)) { $visitor_hostname = "Indefinido";

P ara q ue pos s a s abe r q ual o cdigo e o nom e do P as do v is it ant e at rav s do I Pv ol t a a ut il izar a cl as s e G e oI P com as f une s 'ge oip_count ry _code _by _addr() ' e 'ge oip_count ry _nam e _by _addr() ' re s pe ct iv am e nt e. Com o '@ ge t h os t y addr() ' pode s abe r o dom nio do v is it ant e . No e nt ant o pode t e r no cons e guir s abe r o nom e do dom nio por e s t ar a s e r ut il izado um Se rv idor Annim o, ou ainda a s e r ut il izado um s e rv idor q ue s e e s conde por v rias int e rl igae s e m f orm a de s al t os (h ops ) , e acaba s e m pre por s e r re t ornado um nov oI P . Sal v aguardando e s t a h ipt e se , t e st a s e o q ue re t ornado um I P v l ido com a f uno e re g() , cas o s e j a um a condio v e rdade ira e nt o de f ine -s e o dom nio do v is it ant e com o 'I nde f inido'.
$browser_info = $_SERVER[ 'HTTP_USER_AGENT' ]; if ( eregi ( "(opera) ([0-9]{1,2}.[0-9]{1,3}){0,1}" , $browser_info ) ) $browser = "Opera"; elseif ( eregi ( "(opera/)([0-9]{1,2}.[0-9]{1,3}){0,1}" , $browser_info ) ) $browser = "Opera"; elseif ( eregi ( "(konqueror)/([0-9]{1,2}.[0-9]{1,3})" , $browser_info ) ) $browser = "Konqueror"; elseif ( eregi ( "(konqueror)/([0-9]{1,2})" , $browser_info ) ) $browser = "Konqueror"; ... else $browser = "Desconhecido";

<22>

a program ar
De v e m os conh e ce r q ue Expl orador de I nt e rne t (B row s e r) ut il iza o v is it ant e , ao criar um w e bs it e de v e r s e r s e m pre com pat v e lcom t odos os Expl oradore s e xis t e nt e s . bv io q ue com pat v el com t odos a 100% prat icam e nt e im pos s v el , port ant o ne ce s s rio s abe r s e m pre q uais s o os m ais im port ant e s e m ais ut il izados pe l o v is it ant e , de f orm a a de s e nv ol v e r no s e u w e bs it e a com pat ibil idade com os out ros Expl oradore s dos v is it ant e s . Com o cdigo acim a de s crit o pode s e e nt o v e rif icar q ue a ins t ruo $ _SERV ER[H TTP _USER_AG ENT]de v ol v e um a s t ring, na q ual pe rm it e s abe r o Expl orador de I nt e rne tq ue e s t a s e r ut il izado na v is ual izao do s e u s it e. Aq ui, ape nas col ocado al guns Expl oradore s a t t ul o de e xe m pl o, no s cript com pl et o e xis t em m uit os m ais .
if ( eregi ( "linux" , $browser_info ) ) $os = "Linux"; elseif ( eregi ( "Win 9x 4.90" , $browser_info ) ) $os = "Windows ME"; elseif ( eregi ( "win32" , $browser_info ) ) $os = "Windows"; elseif ( eregi ( "windows 2000" , $browser_info ) ) $os = "Windows 2000"; ... else $os = "Desconhecido";

D a m e sm a f orm a q ue s oube q ual o Expl orador de I nt e rne t at rav s da 's t ring' re t ornada pe l o 'H TTP _USER_AG ENT', t am bm s e cons e gue s abe r o Sis t e m a O pe rat iv o do ut il izador . um dado bas t ant e im port ant e , principal m e nt e se e st iv e r a de s e nv ol v e r um w e bs it e com cont e do para P C's , Sm art ph one 's ou P D A's . T am bm aq ui o cdigo f oi re s um ido, pode ndo e ncont rar m ais Sis t e m as O pe rat iv os no Scriptcom pl et o.
mysql_select_db ( $database , $connection ); $sqlQuery_Statistics = sprintf("INSERT INTO estatisticas (ip, referer, browser, os, pagina_visitada, cod_pais, nome_pais, dominio_visitante, data) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", $ip, $referer, $browser, $os, $page_visited, $country_code, $country_name, $visitor_hostname, date("Y-m-d") ); $query_result = mysql_query($sqlQuery_Statistics, $connection) or die (mysql_error()); }

Com t odos os dados e s s e nciais do v is it ant e j re col h idos f ica a f al t ar a s ua ins e ro na B as e de D ados , t e rm inando as s im a f uno q ue re col h e dos e l e m e nt os e s s e nciais ao f uncionam e nt o do s cript .

Cl as s e
Cont inuando o f ich e iro 's t at is t ics .ph p' ch e gou a al t ura de criar e nt o a 'Cl as s e ' re s pons v el pe l a ge rao dos grf icos e re l at rios at rav s dos dados e xis t e nt e s na B as e de D ados . A prxim a f uno da 'Cl as s e St at is t ics ' de m e ra pe rs onal izao do grf ico para o s e u as pe ct ov is ual , com o t al no ir s e com e nt ada. M ais inf orm ao s obre a pe rs onal izao dos grf icos de v e r s e r obt ida e m : h t t p:/ / w w w .m aani.us / ch art s/ inde x.ph p? m e nu=G al l e ry .

<23>

a program ar
class Statistics { function setGraphicColumnStyle ( $chart ) { // Formatar o grafico com as propriedades visuais para o eixo do 'X' $chart[ 'axis_category' ] = array ( 'font'=>"arial", 'bold'=>true, 'size'=>9, 'color'=>"000000", 'alpha'=>50, 'skip'=>2 ); // Formatar o grafico com as propriedades visuais para o eixo do 'Y' $chart[ 'axis_value' ] = array ( 'font'=>"arial", 'bold'=>true, 'size'=>10, 'color'=>"000000", 'alpha'=>50, 'steps'=>4, 'prefix'=>"", 'suffix'=>"", 'decimals'=>0, 'separator'=>"", 'show_min'=>true ); // Formatar o grafico com as propriedades visuais da legenda $chart[ 'legend_label' ] = array( 'layout'=>"horizontal", 'font'=>"arial", 'bold'=>true, 'size'=>12, 'color'=>"333355", 'alpha'=>90 ); // Formatar o grafico com as propriedades visuais do fundo da legenda $chart[ 'legend_rect' ] = array ( 'height'=>20, 'margin'=>5, 'fill_color'=>"000066", 'fill_alpha'=>8, 'line_color'=>"000000", 'line_alpha'=>0, 'line_thickness'=>0 ); // Formatar o grafico com a cor para as colunas de dados $chart[ 'series_color' ] = array ("666666"); // Formatar o grafico com as propriedades visuais para o fundo do grafico $chart[ 'chart_rect' ] = array ( 'positive_color'=>"000066", 'negative_color'=>"000000", 'positive_alpha'=>10, 'negative_alpha'=>30 ); // Formatar com as propriedades visuais para a grelha do eixo do 'X' $chart[ 'chart_grid_h' ] = array ( 'alpha'=>20, 'color'=>"000000", 'thickness'=>1, 'type'=>"dashed" ); // Formatar o grafico com as propriedades visuais dos valores das colunas $chart[ 'chart_value' ] = array ( 'color'=>"ffffff", 'alpha'=>85, 'font'=>"arial", 'bold'=>true, 'size'=>10, 'position'=>"middle", 'prefix'=>"", 'suffix'=>"", 'decimals'=>0, 'separator'=>"", 'as_percentage'=>false ); return $chart; } // FIM DE "setGraphicColumnStyle"

Com e s t af uno pre para-s e o as pe ct ov is ual para o grf ico de col unas , m as e xis t e t am bm um a f uno para pe rs onal izao do grf ico circul ar no Scriptcom pl et o.

<24>

a program ar
Com e s t af uno pre para-s e o as pe ct ov is ual para o grf ico de col unas , m as e xis t e t am bm um a f uno para pe rs onal izao do grf ico circul ar no Scriptcom pl et o.
function getPageViewsGraph ( $beginDate , $endDate ) { include ( "connection.php"); include ( "date_functions.php" ); mysql_select_db ( $database , $connection ); $sql_pageViews = "SELECT count(ip) AS hits, data FROM estatisticas WHERE data >= '" . changeDate($beginDate) . "' AND data <='" . changeDate($endDate) . "' GROUP BY data"; $pageViews=mysql_query($sql_pageViews,$connection) or die(mysql_error());

Es t a f uno ir ge rar o G rf ico para t ot ais de v is it as por dia, e xt raindo os dados da bas e de dados com cont age m de t odos os I Pguardados e com os t ot ais agrupados por dia.
for ($i=0;$i<(($endDate-$beginDate)+1);$i++) { $days[$i]=date("d-m",strtotime("-".(($endDate-$beginDate)-$i)." day",strtotime(changeDate($endDate)))); }

Com o as dat as int roduzidas para v is ual izao dos grf icos e re l at rios v ariv el , cria-s e um 'array ' dos dias e xis t e nt e s e nt re as duas dat as com os rt ul os no f orm at o de 'dia-m s ' (e x: 17-01) .
while($row_pageViews=mysql_fetch_array($pageViews,MYSQL_ASSOC)) { for ( $i=0 ; $i < sizeof ( $days ) ; $i++ ) { if($days[$i]==date("d-m",strtotime($row_pageViews['data']))){ $dailyVisits[$i]=$row_pageViews['hits']; } else { if ( $dailyVisits[ $i ] > 0) { $dailyVisits[ $i ] = $dailyVisits[ $i ]; } else { $dailyVisits[ $i ] = 0; } } } }

Com um 'array ' de int e rv al o dos dias e s col h idos ch e gou a al t ura de pre e nch e r um out ro 'array ' com o m e s m o nm e ro de pos ie s q ue cont e nh a os t ot ais de v is it a naq ue l e re s pe ct iv o dia.
$chart = $this->setGraphicColumnStyle ( $chart );

P ara s e at ribuir um as pe ct o v is ual pe rs onal izado ao grf ico ut il iza-s e ant e riorm e nt e para os grf icos de col unas .
$chart [ 'chart_data' ][ 0 ][ 0 ] = ""; $chart [ 'chart_data' ][ 1 ][ 0 ] = "Total de Visitas por dia"; for ( $i=0 ; $i < sizeof ( $days ) ; $i++ ) { $chart['chart_data'][0][($i+1)] = $days[$i]; $chart['chart_data'][1][($i+1)] = $dailyVisits[$i]; } return $chart; } // FIM DE "getPageViewsGraph"

a f uno criada

A f orm a de pre e nch e r a inf orm ao para ge rar o grf ico e m F l as h com o num program a de F ol h a de Cl cul o. Cria-s e o rt ul o do 'X' e do 'Y' e no cruzam e nt o dos rt ul os pre e nch e -s e com os dados re s pe ct iv os . Aps o pre e nch im e nt o da v ariv el '$ ch art ' com t odos os dados ne ce s s rios ge rao, re t orna-s e e s s a v arv el q ue ir s e r ut il izada m ais t arde pe l a Cl as s e Ch art s . O re s t ant e art igo s e r apre s e nt ado na prxim a e dio.

<25>

B runo V az

s e gurana

T odos os s it e s da I nt e rne t pode m s e r ace didos at rav s de um ide nt if icador nico, conh e cido por e nde re o I P , q ue os pe rm it e l ocal izar . O e nde re o I P cons t it udo por q uat ro nm e ros , de 0 a 255, s e parados por pont os , com o por e xe m pl o 127.0.0.1. Com o os e nde re os I P s o m ais dif ce is de m e m orizar para o cre bro h um ano q ue t e m m ais capacidade s q uando s e t rat a de m e m orizar nom e s , e xis t e o nom e de dom nio, q ue m ais f cilde m e m orizar (por e xe m pl o, o w w w .port ugal -aprogram ar .org m uit o m ais f cil de de corar q ue 19 5.22.25.172) . Se m pre q ue int roduzim os o nom e de dom nio num brow s e r , t raduzido para um I P pe rm it indo de s t e m odo ace de r ao s it e pre t e ndido. Se e xis t ir al gum e rro na t raduo do nom e de dom nio para e nde re o de I P e e s s e e rro t iv e r orige m e m al gum com int e ne s m al icios as pode m os cons ide rar q ue e xis t e um at aq ue de P h arm ing bas e ado nas al t e rae s de D NS's .

P h arm ing
I nt roduo
Nunca o com put ador f oi ut il izado para arm aze nar t ant a inf orm ao e t ant os dados pe s s oais com o agora. E no ne ce s s rio s e r-s e m uit o conh e ce dor para cons e guir re t irar e s s as inf orm ae s de um com put ador s e e s t e no e s t iv e r be m prot e gido. H oj e e m dia, com a cre s ce nt e ut il izao da I nt e rne t para q uas e t udo, ne ce s s rio t e r o conh e cim e nt o s obre o q ue l h e pode acont e ce r s e f or al v o de um at aq ue por part e de al gum m al int e ncionado. Exis t e m inm e ros e s q ue m as on-l ine nos q uais os m e nos pre v e nidos pode m s e r apanh ados . Ne s t e art igo v am os f al ar um pouco de P h arm ing, um a t cnica q ue de riv a do P h is h ing e q ue com pl e m e nt ar de s t a s e gunda

O at aq ue At aq ue nos s e rv idore s D NS
Al guns s of t w are s us ados e m s e rv idore s D NS pos s ue m f al h as de s e gurana, program ao ou m conf igurao, q ue pe rm it em " e nv e ne nar" a m e m ria t e m porria (cach e ) do s is t e m a at acado. As s im o int rus o cons e gue ace de r ao s e rv idor e al t e rar ce rt as conf igurae s at ribuindo nom e s de dom nio a I P s q ue no l h e s de v e riam corre s ponde r e q ue s o cont rol ados pe l o int rus o. As s im , num at aq ue e s pe cf ico, o e nde re o I P as s ociado ao dom nio port ugal a-program ar.org, por e xe m pl o, pode ria s e r m udado de 19 5.22.25.172 para 209 .85.129 .9 9 num s e rv idor D NS at acado e cons e q ue nt e m e nt e q uando s e int roduzis s e no brow s e r w w w .port ugal -a-program ar.org e st e s e ria re dire ccionado para a pgina port ugue s a do G oogl e.

O q ue ?
O P h arm ing um a v ariant e m ais s of is t icada de P h is h ing q ue e xpl ora v ul ne rabil idade s dos brow s e rs , dos s is t e m as ope rat iv os e dos s e rv idore s de D NS (D om ain Nam e Sy s t em) para cons e guir conduzir os ut il izadore s a s it es f ict cios com o obj e ct iv o de obt e r os cdigos de ace s s o.

<26>

s e gurana
Ne s t e at aq ue , um s e rv idor de nom e s (s e rv idor D NS) com prom e t ido, de t al f orm a q ue as re q uis ie s de ace s s o a um s it e f e it as pe l os ut il izadore s de s t e s e rv idor s e j am re dire ccionadas para out ro e nde re o, s ob cont rol o dos int rus os . Es t e t ipo de at aq ue s t am bm pode s e r f e it o re m ot am e nt e ou por m e io de program as m al icios os com o cav al os -de -t ria, al t e rando um f ich e iro pre s e nt e nos com put adore s de ut il izadore s f inais , ch am ado " h os t s" . Es t e f ich e iro, e ncont rado na m aioria das v e rs e s do W indow s e out ros s is t e m as ope rat iv os , incl ui um a l is t a de nom e s de s it e s as s ociados a de t e rm inados e nde re os e l e ct rnicos . Se e st es e nde re os f ore m al t e rados , o com put ador do ut il izador pode r dire ccionl o para um f al s o s it e s e m pre q ue o nom e de um s it e l e gt im o pre s e nt e na l is t af or digit ado no brow s e r. Ut il ize um a f ire w al l para cont rol ar e v e rif icar a com unicao do com put ador com a I nt e rne t . Em cas o de dv ida da v e racidade de um a pgina ou e -m ail , cont act e a e nt idade m as no ut il ize os cont act os e xis t e nt e s no e m ail ou pgina.

Concl us o
D e pois de l ido e s t e art igo e s t ar ce rt am e nt e m ais inf orm ado e m ais cie nt e do q ue pode acont e ce r , de com o s e r burl ado on-l ine , m as is t o ape nas um a got a no oce ano da s e gurana porq ue o m undo das burl as on-l ine im e ns am e nt e v as t a e no pos s v el abord-l as t odas e m conj unt o. No e nt ant o, o P h arm ing um a das t cnicas de burl a on-l ine m ais us ada em t odo o M undo por is s o bom q ue f iq ue de al e rt a de f orm a a no cair e m e rros de s ne ce s s rios .

At aq ue aos ut il izadore s
Es t as inv as e s do-s e no com put ador da v t im a f aze ndo m odif icae s nos f ich e iros h os t s . Ao cont rrio dos at aq ue s nos s e rv idore s D NS e s t e s ape nas af e ct am a m q uina q ue inf e ct am e ne ce s s rio o ut il izador cl icar e m al gum a l igao ou ins t al ar al gum program a. P ode h av e r de s de a ins t al ao de s py w are s para propaganda e publ icidade , im it ao pe rf e it a de um s it e bancrio q ue t e m por obj e ct iv o roubar os dados da v t im a (aq ui e nt ra a j uno do P h arm ing com o P h is h ing) .

M e didas de prot e co
Joo P e re ira
I ns t al e um ant iv rus , m ant e nh a-o act iv o e act ual izado. M ant e nh a as apl icae s ins t al adas no s e u com put ador act ual izadas , nom e adam e nt e o s is t e m a ope rat iv o e o s e u brow s e r .

<27>

el e ct rnica
Em l igae s pont o a pont o pont o a pont o: SP I , RS232 L igae s m ul t ipont o:I 2C, USB , RS422, RS485, CAN (Cont rol l e r Are a Ne t w ork ) .

Re de CAN
I nt roduo
No s e guim e nt o do art igo M icrocont rol adore s da e dio 4 de s t a nos s a re v is t a v am os abordar ne s t e art igo, al guns conce it os s im pl e s int rodut rios das t opol ogias das re de s de dados . P ara e xe m pl if icar a apl icabil idade de s t as re de s v am os us ar m icrocont rol adore s da M icroch ip (P ics ) . No f inal s e ro apre s e nt ados al guns e xe m pl os prt icos re l acionados com o cont e do do art igo.

Re de CAN e m icrocont rol adore s


De f ine ape nas a l igao f s ica e o cont rol o do ace s s o ao m e io de t rans m is s o (l igao de dados ) .F oi de s e nv ol v ido para apl icae s e m be dde d (l igao dos cont rol os nos m ot ore s de aut om v e is ) - B os ch 19 9 1. Um a re de Can com pos t a por um grupo de ns . Cada n pode com unicar com q ual q ue r out ro n da re de . A com unicao s uport ada por pacot es robus t os de nom inados de M e ns age ns . O prot ocol o Can f az us o do CSM A/ CD -CR (Carrie r Se ns e M ul t ipl e Acce s s / Col l is ion D e t e ct ion and Col l is ion Re s ol ut ion) , ou s e j a, cada n ant es de e nv iar inf orm ao para a re de , e s cut a o q ue s e pas s a na re de , s e e v e nt ual m e nt e e st a e st iv er l iv re , e nt o col oca a s ua m e ns age m na re de , s e dois ou m ais ns t e nt are m col ocar inf orm ao na re de ao m e s m o t e m po, e nt o d-s e um a col is o. Am bos de t e ct am e s s a col is o e e s pe ram um t e m po al e at rio at v ol t ar a t rans m it ir. Ao cont rrio do art igo da e dio 4, onde f oi us ado um P I C 16f 877 ne s t e art igo iro s e r us ados P I C18f 2580. O obj e ct iv o do t rabal ho s e r pr 4 P ics a com unicar e nt re s i. P ara f cilim pl e m e nt ao v am os us ar um M as t er e 2 Sl av e s . D e not ar q ue o CAN no im pl ica q ue e xis t a um M as t e r, m as para q ue s e j a m ais s im pl e s a apre ndizage m , adopt a-s e e st a e st rat gia. Em cada n v am os t e r um L e d e um pot e ncim e t ro. O ut il izador, at rav s do t e rm inalir e s col h e r um n e pe de a e s s e n o v al or do pot e ncim e t ro, ou e nt o pe de a um de t e rm inado n para ace nde r o l ed x v e ze s . M ais um a v e z a com unicao e nt re os P ic m as t ere oP C s e r f e it o com us o da port a s rie (ou us b com adapt ador) , t al com o apre s e nt ado no art igo da 4 e dio.

Conce it os de l igae s de dis pos it iv os


Nal guns s is t e m as el e ct rnicos h a ne ce s s idade de m anipul ar e t om ar de cis e s com bas e e m inf orm ao q ue no e s t l ocal m e nt e ace s s v el , be m com o h a ne ce s s idade de t rans f e rir inf orm ao para out ros l ocais . P ara s e pode r l idar com e s t as s it uae s e xis t e m re de s q ue int e rl igam dois ou m ais pont os de int e re s s e . D e um m odo s im pl is t a, pois e xis t em v rias v ariant e s de int e rl igae s , e s t as pode m s e r pont o-apont o ou m ul t i-pont o. T alcom o os nom e s indicam , a prim e ira l iga um pont o a out ro pont o.

E a s e gunda l iga v rios pont os , onde pos s v el q ue e xis t at roca de inf orm ao e nt re t odos , pode ndo e xis t ir um m as t e r ou no

<28>

el e ct rnica

P ara no t ornar e s t e art igo m uit o e xt e ns o ne m m uit o e s pe cf ico, as s um e -s e q ue as f une s da USART , AD Cs j e st o de s e nv ol v idas . V is t o o prot ocol o CAN t e r m uit os porm e nore s , o q ue t ornaria o t e m po de re al izao de de t e rm inados proj e ct os bas t ant e grande , a M icroch ip dis ponibil iza as s uas principais f une s para o CAN. Ant e s de com e ar a program ar , h al guns porm e nore s re l at iv am e nt e ao m odo de f uncionam e nt o dos P ics q ue de v e m se r t idos e m cont a. Ne s t e art igo, no iro s e r e xpl icados , s om e nt e apre s e nt ados , m om e adam e nt e o m odo de ope rao dos P ics , re gis t os de B aud Rat e ,f il t ros e m s caras dos buf f e rs CAN.

P rogram ao:
O s ns B ,C v o s e r idnt icos , o q ue v ai dif e rir nom e pe l o q uale l e iro re s ponde r (I de nt if ie r) . O n A ao s e rv ir de M as t er ,v ai s e r o re s pons v el pe l a re ce po e apre s e nt ao da inf orm ao. As s im com e ando pe l o n M as t e r: Em prim e iro l ugar h q ue com e ar por f aze r a inicial izao dos v rios m dul os .
void main(void) { TRISA=0xff;//input port ADCON0=0b00000001; //channel AN0 ADCON1 = 0x00; //Vref=vss&VDD All PORTA analogic I/O ADCON2=0b00001010;//rigth justified;2tad;fosc/32 //Inicializao da USART //SYNC = 0, BRGH = 1, BRG16 = 0 //baudrate=115200 -->spbrgh=21 fosc=40Mhz,

OpenUSART(USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE &USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 21); //Inicializao do modulo ECAN ECANInitialize(); INTCONbits.GIE = 1; //Enable interrupts

<29 >

el e ct rnica
O M as t e r s ir act uar cons oant e a inf orm ao re ce bida do ut il izador . Us ando um a int e rf ace com bas e no H y pe r T e rm inal , as s im o M as t er v ai s e r re s pons v e l pe l o e nv io de s t rings q ue iro s ol icit ar a inf orm ao ao ut il izador . O ut ra e s t rat gia pode ria s e r t om ada, cas o a int e rf ace f os s e bas e ada e m V is ual B as ic, Jav a , pois ne s s as circuns t ancias do pont o de v is t a do cont rol ado, s int e re s s av a a orde m propriam e nt e dit a. V e r no f inal a print _m e nu() . e st rut ura da f uno
case 's': Putsr("\r\r\r\r\r\r\r\r"); Putsr("\r########################"); Putsr("\r#_Select NODE"); Putsr("\r-->"); can_tx=Getn(); //teste se o n existe if(!find_node(can_tx)) { Putsr("\rNODE DOESNT EXIST\r"); Putsr("\r press any key to continue"); Re(); can_tx=0; break; } break;

Es t a ir t e r com o v al or de re t orno o ch ar 'r' cas o s e j a para pe dir inf orm ao a um n ou 's ' cas o s e j a para e nv iar:

Cas o a l et ra re ce bida no s e j a ne m o 'r' ne m o 's ':


default: Putsr("\r parametro incorrecto\r"); break;

switch(print_menu()) { case 'r': Putsr("\r\r\r\r\r\r\r\r"); Putsr("\r#####################"); Putsr("\r#_Select NODE"); Putsr("\r-->"); can_rx=Re();

Re ce bido o nom e do n t e m de s e v e rif icar se e l e e xis t e , cas o no e xis t a abort a-s e a f uno e v ol t a-s e a pe dir um a nov af uno:

Cas o o n e xis t a e m can_rx t e re m os o nom e do n do q ualpre t e nde m os re ce be r o v al or do pot e ncim e t ro. AD C_REQ um a m acro de f inida com o 0xa, m ais f re nt e v am os us ar a m acro AD C_V AL q ue e s t de f inida com o 0xb. Es t as m acros s s e rv e m para f acil it ar a program ao e t orn-l a m ais l e gv el .
if(can_rx!=0) { data[0]=ADC_REQ;

if(! find_node(can_rx)) { Putsr("\rNODE DOESNT EXIST\r"); Putsr("\r press any key to continue"); Re(); can_rx=0; break; } break;

A f uno ECANs e ndM e s s age um das m uit as f unoe s dis ponibil izadas pe l a M icroch ip, para q ue s e pos s a t rabal h ar com o prot ocol o CAN s e m q ue para is s o s e j a ne ce s s rio um a grande pe rda de t e m po na m anipul ao dos re gis t os dos P ics As s im , e s t af uno t e m com o parm e t ros de e nt rada: Ide ntif ie r - nom e do node de s t inat rio D at a - array onde e s t o as m e ns age ns Size - nm e ro de e l e m e nt os do array dat a ECAN_TX_STD _FRAM E - f l ags re l at iv as ao f uncionam e nt o do m dul o ECAN.

Cas o a f uno pe dida pe l o ut il izador s e j a a de e nv io e nt o re ce bido um 's ':

<30>

el e ct rnica
D e not ar q ue s s e av ana no cdigo q uando a m e ns age m f or e nv iada. aq ui ne s t e pont o q ue e nt ra o prot ocol o CSM A/ CD CR. D o pont o de v is t a do program ador o q ue int e re s s a q ue a m e ns age m s e j a e nv iada, no e nt ant o pos s v el s abe r porq ue q ue e l a no f oi e nv iada prim e ira, m as e s t e as s unt o no v ai s e r abordado ne s t e art igo.
while( ECANSendMessage(can_rx,data,1, ECAN_TX_STD_FRAME) ); Putsr("\rRequest send..."); Putsr("\rwaiting...\r");

O v al or 0xc (cdigo abaixo) prim e ira v is t a no t e m ne nh um s ignif icado, no e nt ant o el e indica q ue a f uno a s e r de s e m pe nh ada pe l o node a de ace nde r o l e d, t al com o as m acros AD C_V ALe AD C_REQ
data[0]=0xc; while( !ECANSendMessage(can_tx, data,4,ECAN_TX_STD_FRAME)); can_tx=0; }

As s im e s t concl uda a ope rao do m as t er . T alcom o f oi dit o ant e riorm e nt e , os out ros dois ns v o t e r o cdigo m uit o pare cido. As dif e re nas v o e s t ar nos ide nt if icadore s das m e ns age ns CAN, pois um v ai t e r q ue act uar q uando f or re ce bido o caract e r B e o out ro t e m q ue act uar q uando f or re ce bido o caract er C. As s im s e ndo, s ir s e r apre s e nt ado o cdigo de um dos ns .

A f uno ECANRe ce iv e M e s s age f orm al m e nt e ide nt ica ant e rior.

while( !ECANReceiveMessage(&id, data, &dataLen, ECAN_TX_STD_FRAME) );

O m as t e rt e m um ide nt if ie r igual ao by t e 0xa.


if((id==0x)&&(data[0]=ADC_VAL)) { Putsr("\r\rADC VALUE\r --> ");

T al com o no art igo da e dio 4 a AD C ir l e r um v al or e nt re 0 a 5V o q ue v ai corre s ponde r a um v al or com pre e ndido e nt re 0 e 255 (AD C de 8 bit s) , as s im m ul t ipl ica-s e por 1.9 para q ue a s ua apre s e nt ao s e j al e gv el pe l o ut il izador .
aux_char=data[1]; aux_int=aux_char*1.9; Putn(aux_int,3,2); can_rx=0; }

N B
void main(void) { adcInit(); ECANInitialize();

Tipo de s ada do port o B (in=1 e out =0) ,v is t o ol e d ir e s t ar l igado na s ada RB 7.


TRISBbits.TRISB7=0 ; LATBbits.LATB7=0; //Enable interrupts INTCONbits.GIE = 1; INTCONbits.PEIE = 1; can_tx=0; can_rx=0; while(1) {

Se a ope rao e xigida pe l o ut il izador f or a de ace nde r o l e d e s e o n de s t inat rio e s t iv er l igado, ou s e j a, s e e xis t ir, can_t x ir s e r dif e re nt e de ze ro.
if(can_tx!=0) { Putsr("\r########################"); Putsr("\r#_Number of repetitions "); Putsr("\r-->"); data[1]=Getn();

Q uando o n re ce be um a m e ns age m , v ai anal is ar o ide nt if ie r . Se o ide nt if ie r f or o s e u, ou se j a B ou C e nt o re al iza a ope rao

<31>

el e ct rnica
while(!ECANReceiveMessage(&id,data, &dataLen, ECAN_TX_STD_FRAME)); if(id==0xb) {

Na prt ica e s t e t ipo de re de s CAN pode m s e r us adas nas m ais v ariadas apl icae s . O CAN f oi criado pe l a B O SCH para o ram o aut om v el . Es t e e ra us ado para cont rol ar os m ais v ariados e l e m e nt os de um carro, nom e adam e nt e e q uipam e nt os de s e gurana, m onit orizao, cont rol o O CAN ao l ongo do t e m po j t ev e v rias act ual izae s , com v is t a a mel h orar a s ua pe rf orm ance . O ut ro t ipo de apl icao pode s e r por e xe m pl o a de um rob. Um m icrocont rol ador pode re ce be r inf orm ao dos m ais v ariados s e ns ore s at rav s de um barram e nt o CAN, t al com o e nv iar inf orm ao para os act uadore s (m ot ore s ) . T om ando com o e xe m pl o a f igura 2, ao l ongo da e st rut ura do rob s s o ne ce s s rios dois f ios ( CAN h igh e CAN l ow ) para q ue t odos os pe rif ricos pos s am com unicar e nt re s i. Na dom t ica, t am bm s e pode us ar re de s CAN. Supondo q ue se t em v rios m icrocont rol adore s , l m padas e s e ns ore s de pre s e na, e s t e s s ne ce s s it am , t alcom o no e xe m pl o do rob de e s t ar l igados e nt re s i at rav s de um barram e nt o CAN, o q ue t orna s im pl e s a s ua im pl e m e nt ao.No e nt ant o, s e m pre ne ce s s rio f aze r o acondicionam e nt o do s inal v indo dos s e ns ore s e cont rol ar os act uadore s q ue iro cont rol or a int e ns idade das l m padas (O n-O f f ,P W M ,...) , proce s s o e s t e idnt ico ao da e dio 4.

Na prim e ira pos io do array de dados do CAN e s t de f inida a f uno a re al izar


switch (data[0]) { case ADC_VAL: data[0]=ADC_VAL;

Na s e gunda pos io do array dat a col ocado o v al or da adc. Es s e v al or s e r um a m dia de v rias l e it uras
data[1]=adc_read(0); id=0; //send to master while(ECANSendMessage(id,data,4, ECAN_TX_STD_FRAME) ); break; case LED_VAL: for(i=0;i<data[1];i++) { LATBbits.LATB7=1;

P ara q ue s e j av is v el ao ol h o h um ano a l uz do l e d ao pis car t e m de s e criar al guns at ras os , para q ue a t rans io no s e j a ins t ant ne a
Delay10KTCYx(255);//255ms Delay10KTCYx(255);//255ms LATBbits.LATB7=0; Delay10KTCYx(255);//255ms Delay10KTCYx(255);//255ms } break; } } } }

Concl us o

Em bora t odos e s t e s prog ram as s e jam s im pl e s, e l e s s o a e s s ncia de t odas as re de s C A N. A q u i f oram u s ados 3 Pics . D e pe nde ndo do obje ct ivo do proje ct o norm al m e nt e e st a s ol u o dis pe ndios a. Na re al idade o q ue se u s a s o cont rol adore s C A N cu ja s u a ope rao idnt ica ao princpio apre s e nt ado (por e xe m pl o o M C P2515 t am bm da M icroch ip).

<32>

Ricardo Roch a

t e cnol ogias

M ul t i-Core
I nt roduo
A inds t ria de proce s s adore s t em v indo a ev ol uir a um pas s o cons t ant e nos l t im os anos . A prol if e rao dos com put adore s e das t are f as q ue l h e s incum bim os cont inuam a pre s s ionar a ne ce s s idade de proce s s adore s m ais pode ros os . As s im a t rans io para proce s s adore s m ul t i-core t orna-s e num pont o crt ico ne s t e nov o de s e nv ol v im e nt o. O M ul t i-Core cons is t e e m col ocar dois ou m ais ncl e os (core s ) no int e rior de um nico ch ip. O obj e ct iv o de s t e de s ign para pos s ibil it ar ao s is t e m a e xe cut ar v rias ope rae s e m s im ul t ne o e as s im al canar mel h or ov e ral lpe rf orm ance para re s ponde r s ne ce s s idade s dos dias de h oj e. No e nt ant o e xis t em v rias abordage ns a e s t e probl e m a, no de corre r de s t e art igo v am os f al ar s obre t e cnol ogias q ue e s t e nde m a ef icincia do proce s s ador para al m dos G H z e da L e i de M oore (um a noo e rrada do de s e m pe nh o dos proce s s adore s as s ociar e s t e v el ocidade do s e u re l gio) .

Sy m m e t ric M ul t i-P roce s s ing


SM P a s ol uo m ais com um no q ue t oca a criar um s is t e m a m ul t i-proce s s ador e m q ue dois ou m ais proce s s adore s e st o cone ct ados a um a m ain m e m ory part il h ada. Um a arq uit e ct ura SM P pode f acil m e nt e m ov er cargas de t rabal ho e nt re proce s s adore s com o de v ido s uport e por part e do SO (Sis t e m a O pe rat iv o) . O l ado ne gat iv o de s t a arq uit e ct ura q ue com o e m s is t e m as com ape nas um proce s s ador os ace s s os m e m ria s o m ais l e nt os q ue o proce s s ador a ace d-l a. No cas o do SM P , j q ue ape nas um proce s s ador pode ace de r m e m ria de cada v e z, pos s v el q ue v rios proce s s adore s no pos s am e xe cut ar t rabal h o (s t arv at ion) . Am bos os nov os proce s s adore s dual -core da AM D e I nt e lpode m s e r cons ide rados capaze s de SM P . Exis t em l im it ae s ao us o do SM P ,v rios SO no s uport am e s t a t e cnol ogia (com o o W indow s XP H om e ) e no f aro us o do s e gundo proce s s ador . T am bm a m aior part e dos program as e xis t e nt e s s o s ingl et h re ade d, o q ue s ignif ica q ue ape nas um proce s s ador pode e xe cut ar os com andos de s s e program a no t om ando part ido da capacidade t ot al do s is t e m a.

M ul t it h re ading, H y pe rTh re ading, or M ul t i-Core ?


T odos os program as s o f e it os de t h re ads , s e q uncias de ins t rue s q ue o proce s s ador v ai e xe cut ar . P rogram as s e q ue nciais s o f e it os a part ir de um a nica t h re ad. No pas s ado e s t e t ipo de program as dom inav am o cam po do s of t w are .

<33>

t e cnol ogias

O s SO de s s e s dias e ram ape nas capaze s de e xe cut ar um a t h re ad de cada v ez o q ue re s ul t av a num bl oq ue ar do com put ador s e m pre q ue m ais q ue um program a e ra e xe cut ado ao m e s m o t e m po. Com o t e m po f oram s urgindo nov as t e cnol ogias e nos dias de h oj e os SO s o capaze s de m l t ipl os program as e m s im ul t ne o (m ul t it as k ing) . T alf oi al canado por parar por um m om e nt o um program a para out ro corre r .T rocando rapidam e nt e os program as q ue e s t o a s e r e xe cut ados o s is t ema f az pare ce r q ue t odos os program as e s t o a s e r e xe cut ados ao m e sm o t e m po m as , no f undo, o proce s s ador pode ape nas e xe cut ar um a t h re ad de cada v e z. Um proce s s ador norm alpe rm it e q ue v rias t h re ads e proce s s os s e j am e xe cut ados de nt ro da s ua unidade de t e m po (t im e sl ice ) is t o ch am ado m ul t it h re ading. Um av ano de s t a t e cnol ogia o Supe rt h re ading onde o proce s s ador pode e xe cut ar v rias ins t rue s de dif e re nt es t h re ads e m cada cl ock cy cl e (cicl o de re l gio) , as s im cicl os q ue no s e j am us ados por um a t h re ad pode m s e r e xe cut ados por out ra. M as prov v el q ue um a t h re ad no ut il ize t odos os re curs os prov ide nciados pe l o proce s s ador (com o as e xe cut ion unit s) de nt ro do s e u t im e s l ice , as s im SM T (Sim ul t ane ous M ul t it h re ading) pe rm it e q ue m l t ipl as t h re ads pos s am e xe cut ar dif e re nt e s ins t rue s no m e s m o cicl o. H TT (H y pe r-Th re ading T e ch nol ogy ) um a t rade m ark da I nt e lde SM T e m bora m ais av anada q ue s upe r t h re ading q ue ch e ga a pe rm it ir q ue duas t h re ads dif e re nt es se j am e xe cut adas ao m e s m o t e m po onde um a t h re ad us a os re curs os parados da out ra. Um e xe m pl o s e ria e nq uant o um a t h re ad e xe cut a ope rae s de v rgul a f l ut uant e , um a out ra pode ria e xe cut ar ope rae s int e iras e m s im ul t ne o.

A ide ia por t rs da H TT dupl icar a act iv idade no proce s s ador para re duzir o probl e m a de um cach e m is s q ue re duze m ot e m po de re s pos t a de s t e. Em bora e s t a t e cnol ogia apare nt a para um a part e dos SO com o s e ndo dois proce s s adore s dif e re nt e s m as e s t a no com parv e l com os D ual core v is t o q ue am bas as t h re ads part il h am a m e s m a pipe l ine e cach e . H TT m e l h ora a pe rf orm ance do s is t e m a m as nunca t ant o com o e m s is t e m as dual / m ul t i core j q ue no cons e gue re al izar duas ope rae s iguais . Es t a dif e re na t orna-s e bv ia q uando j unt am os e s t as t e cnol ogias aos dual -core f aze ndo, e m t e oria, q uas e q uadrupl icar o de s e m pe nh o f inal .

I m pl icae s no Sof t w are criadas pe l o M ul t i-Core


Q uant o m ais ope s para re s ol v e r um probl e m a e xis t ire m , m ais f cils e t orna e s t e de re s ol v er . Um a e s t rada com ape nas um a v ia m ais s us ce pt v el a f icar conge s t ionada por t rans it o q ue um a com duas v ias . Num a e s t rada de ape nas um a v ia a v el ocidade do t rns it o f ica condicionada ao e l e m e nt o m ais l e nt o.

<34>

t e cnol ogias

No cas o dos proce s s adore s a re gra a m e s m a. At agora t e m os v indo a as s is t ir a m t odos q ue m e l h oram o de s e m pe nh o com o as t h re ads q ue pe rm it em ao com put ados e xe cut ar dif e re nt e s ope rae s q uas e e m s im ul t ne o. M as q uas e no bas t a, nunca pode r igual ar out ro iguala s i e e s s e o conce it o de m ul t i-core . As t e cnol ogias a s e re m de s e nv ol v idas com o o m ul t i-core de pe nde m do paral el is m o, is t o , m l t ipl as act iv idade s a s e re m e xe cut adas ao m e s m o t e m po. Se rv idore s t picos pos s ue m m l t ipl as port as por caixa. O paral el is m o com e a a t om ar im port ncia e s e os produt ore s de s of t w are q uis e re m s e r re l ev ant e s, t e ro de apre nde r al idar com is s o. Um bom com e o para anal is ar o probl ema s e ria obs e rv ar o q ue t em v indo a s e r f e it o no cas o dos s upe r-com put adore s . Es t es com put adore s at inge m o s e u nv e l de com put ao at rav s da cone xo e xis t e nt e e nt re v rios m ais pe q ue nos com put adore s . Exis t em duas arq uit e ct uras dis t int as : m e m ria dis t ribuda m l t ipl as ins t rue s m l t ipl a dat a (M I M D ) ou m e m ria part il h ada M I M D . ch am ada de m e m ria part il h ada o s is t e m a onde e xis t e um e nde re o onde t odos os e l e m e nt os a s e re m proce s s ados part il h am . Se a m e m ria dis t int a e os e l e m e nt os a s e re m proce s s ados ape nas pode m int e ragir at rav s da re de e nt re e l e s , ch am am os o s is t e m a de m e m ria dis t ribuda. No f ut uro v am os as s is t ir a um cre s cim e nt o e xpl os iv o no nm e ro de s is t e m as com bas e em m e m ria part il h ada. E com o cre s cim e nt o do m ul t i-core s is t e m as de m e m ria part il h ada pas s aro a s e r cons ide rados um a norm a. Es t es ev e nt os iro pre s e nt e ar o program ador com pl at af orm as de h ardw are paral el as .

Exis t e m duas ope s para l idar com e s t es probl e m as de pe nde ndo do t rabal h o e das ne ce s s idade s do cons um idor . A prim e ira com pl et ar um a col e co de t rabal h os no m e nor t e m po pos s v el . Ne s t e cas o cada t rabal h o indiv idualpode corre r num nico proce s s ador . T udo o q ue o program ador s e pre cis a de pre ocupar q ue o s of t w are q ue cont rol a os t e m pos de e xe cuo dos t rabal h os cons iga l idar com e s t e s de um a m ane ira e f icie nt e. A s e gunda opo ocorre q uando os t rabal h os indiv iduais pre cis am de se r com pl et ados no m e nor t e m po pos s v el . Um e xe m pl o s e ria o m undo dos ne gcios onde s o ne ce s s rias re s pos t as rpidas para s uport ar de cis e s e m t e m po re al . Ne s t e cas o ape nas um t rabal h o pre cis a de s e r e xe cut ado e m m e nos t e m po. Ch am am os a is t o t irar part ido do paral el is m o de nt ro de um nico t rabal h o para pe rm it ir a e s t e q ue corra e m m e nos t e m po para um t am anh o do probl ema dado, program ao paral el a. P rogram ao paral el a t e m s ido durant e anos o dom nio dos program adore s de s of t w are de com put ao de al t a pe rf orm ance (H P C, h igh pe rf orm ance cum put ing) . H oj e , cont udo, t odos os program adore s de s of t w are pre cis am de pe rce be r program ao paral el a.

<35>

t e cnol ogias

I nicial m e nt e na s ua m aior part e , s e no t odos , os program adore s s o t re inados para e s cre v e r program as s e q ue nciais . M ais t arde apre nde m q ue e xis t em out ros m ode l os de program ao s e ndo um de l es a program ao paral el a q ue t e m os v indo a de s cre v er . I st o s ignif ica q ue e m v e z de e xe cut ar o program a num a dada s e q uncia, um a ins t ruo de cada v e z, e st e v ai s e r e xe cut ado por dif e re nt es e nt idade s e m s im ul t ne o. Um e xe m pl o onde program ao paral el a se t orna abs ol ut am e nt e ne ce s s ria e m s e rv idore s de m odo a e s t e s pode re m re s ponde r a t odos os pe didos f e it os por pos s v e is cl ie nt e s e m s im ul t ne o.

Concl us o
P re t e nde u-s e com e s t e art igo proporcionar um conh e cim e nt o ge ral s obre as t e cnol ogias a s e re m de s e nv ol v idas , os s e us props it os e os s e us s uport e s . As s im o l e it or de ce rt o cons e guir l idar com ce rt as de cis e s da prxim a v e z q ue s e e ncont rar f ace -a-f ace com e s t as nov as t e cnol ogias . I nf el izm e nt e , o m undo por t raz do m ul t i-core das s uas v ant age ns e apl icae s no s e u t odo no pode s e r de s crit a num t rabal ho t o pe q ue no ne m s e q ue r e m pape l . H 30 anos at rs um e nge nh e iro da I nt el aproxim ou-s e de G ordon M oore com um a ide ia para um com put ador q ue pode ria s e r us ado e m cas a. M oore pe rgunt ou as v ant age ns q ue t alpode ria t raze r e t udo o q ue o e nge nh e iro cons e guiu im aginar f oi q ue e s s e ins t rum e nt o pode ria s e r us ado para as donas de cas a arm aze nare m as s uas re ce it as . M oore no cons e guiu im aginar a s ua m ul h e r com re ce it as num com put ador na cozinh a e de cl arou q ue a ide ia no f azia s e nt ido ne nh um . H oj e e xis t e m m ais de m e io bil io de us urios de P Cs e m t odo o m undo com as m ais div e rs as apl icae s . O f ut uro ainda re s e rv a m uit as s urpre s as e q ue m s abe s e o m ul t i-core no s e r ape nas m ais q ue um ins t rum e nt o de t rans io.

A f undao da program ao paral el a a concorrncia: a condio de um s is t ema e m q ual duas ou m ais t are f as e s t o act iv as e m s im ul t ne o.

A program ao paral el a pe rm it e aos program adore s div idir um program a para e st e e xe cut ar ope rae s de ace s s o ao dis co e nq uant o o proce s s ador se e ncarre ga de e f e ct uar cl cul os , is t o em s im ul t ne o, al go q ue nunca s e ria pos s v el num program a s e q ue ncial .

<36>

G uil h e rm e Rodrigue s & Nuno Corre ia

publ icidade

t ut orial

P rogram ao e m C (1 P art e)
Es t e art igo v e m na s e q uncia de um ant e rior, P rogram ao e m Sch e m e , q ue s aiu na e dio nm e ro 6. E com o t al ,v is a e s t abe l e ce r um a e v ol uo l gica do program ador principiant e . Em bora o Sch e m e s e j a um a l inguage m e xce l e nt e para s e apre nde r a program ar, no f icarm os agarrados a um a l inguage m para s e m pre q ue s e re m os bons program adore s . O s abe r program ar dif e re do s abe r m uit as l inguage ns de program ao na m e dida e m q ue de pois de s e s abe r program ar, bas t a e st udar al gum a s int axe , q ue t odas as l inguage ns s o program v e is . P ara um program ador, o prim e iro pas s o no incio da criao de um nov o program a, de v e s e r a bus ca da m e l h or f e rram e nt a e l inguage m para o f aze r. P ort ant o, s e ndo o Sch e m e um a l inguage m para dar bas e s de conh e cim e nt o de program ao, o C um a l inguage m , de baixo nv el e , por is s o, com um pot e ncial e xt re m o, onde pos s v e l ope rar t udo s e m e xce po. A L inguage m C f oi de s e nv ol v ida por D e nnis Rit ch ie e m 19 72 para s e r us ada nos s is t e m as UNI X. um a l inguage m q ue s e bas e ia no paradigm a proce dim e nt al , ut il iza pas s age m de re f e rncia at rav s de pont e iros e e nde re os de m e m ria, o q ue a t orna um a l inguage m m inim al is t a e de baixo nv e le m t e rm os de ace s s o m e m ria, s e ndo por is s o, m uit o v e rs t il para criar s of t w are [pare cida com o As s e m bl y ] e adapt a-s e be m ao h ardw are . Com o na m aior part e das l inguage ns , pos s v e l criar-s e bibl iot e cas para e xpandi-l a. O C s e rv iu de e v ol uo para m uit as l inguage ns , onde a principale m ais inf l ue nciada l inguage m f oi o C+ + , de s e nv ol v ida por B j arne St rous t rup e m 19 83. No v am os e nt rar e m grande s porm e nore s m as para t rabal h arm os e m C pre cis am os de um com pil ador e de um e dit or de t e xt o do e st il o Not e pad2 ou G e dit , para W indow s e L inux re s pe ct iv am e nt e.

P ara W indow s , e xis t e o De v cpp q ue t e m um com pil ador de C e de C+ + , t e m um e dit or de t e xt o incl udo e f re e w are . P os t o is t o, pode m os com e ar ...

Hel l o W orl d
No s e j am os originais e por is s o aq ui v ai o prim e iro program a univ e rs al de q ual q ue r l inguage m de program ao q ue s e pre ze : H e l l o W orl d!.
#include <stdio.h> int main() { printf(Hellow World\n); return 0; }

A nica cois a q ue e s t a program a f az im prim ir no e cr a f ras e H e l l ow W orl d e acre s ce nt ar-l h e um a nov a l inh a. Em bora s f aa is t o, t e m m uit o q ue s e l h e diga, por is s o aq ui v ai a e xpl icao pe dao a pe dao: # incl ude <s t dio.h > diz ao com pil ador para incl uir a bibl iot e ca s t dio.h onde , e nt re e l as , e st de f inida a f uno print f () . Ao f aze rm os # incl ude f ich e iro.h e s t am os a dize r q ue j crim os um f ich e iro, ant e riorm e nt e , onde e st o de f inidas f une s q ue q ue re m os us ar agora ne s t e nos s o nov o program a. P or agora f ica as s im , m ais para a f re nt e v e re m os mel h or com o re al m e nt e f unciona. int m ain() a f uno q ue nunca nos e s q ue ce m os pois s e m e l a no h program a. T odos os program as f e it os e m C t m de t era f uno m ain() de f inida. P ara al m dis s o, a prim e ira cois a q ue um program a e m C f az ir f uno m ain() e corre r o s e u cont e do. Ne s t e cas o, o int q ue pre ce de a de f inio m ain() , podia ne m e s t ar l . No v am os aprof undar agora o e s t udo de f une s m as as f une s re t ornam cois as ne s t e cas o, dis s e m os f uno m ain() para el a re t ornar um int , ou s e j a, um v al or int e iro. M ais para a f re nt e s e r e xpl icado o s ignif icado do re t orno de um v al or int e iro na f uno m ain, at rav s da pe nl t im a l inh a de s t e pe q ue no cdigo, re t urn 0; .

<38>

t ut orial
{ } is t o um bl oco. As ch av et as s e rv e m para de l im it ar um bl oco de cdigo q ue t e nh a m ais do q ue um a ins t ruo (e m bora um bl oco de cdigo pos s a t e r ape nas um a ins t ruo) . Ne s t e cas o, a f uno m ain() pos s ui duas ins t rue s , o print f () ,l ch e gare m os , e o re t urn 0. J de nt ro do bl oco da f uno m ain() t e m os as ant e riorm e nt e m e ncionadas ins t rue s print f () e re t urn 0. Um a de cada v e z. A f uno print f () re ce be um a s t ring e m os t ra-a no e cr (ne s t e cas o na cons ol a) . O u se j a, print f ( H e l l o W orl d\n) ; im prim e na cons ol a a f ras e H e l l o W orl d s e guida de um a nov a l inh a. A nov a l inh a de v e -s e ao f act o de a f ras e H e l l o W orl d e st ar s e guida de um caract e r e s pe cial , o \n (ne w l ine ) . Exis t em v rios caract e re s e s pe ciais e m C q ue v e re m os m ais f re nt e. E f inal m e nt e t e m os o re t urn 0. Com o j f oi re f e rido ant e riorm e nt e , um a f uno s e f oi de f inida, t e r de re t ornar. Ne s t e cas o f oi de f inida para re t ornar um v al or int e iro, int m ain() . E por e s s a razo, e l a re t orna o v al or 0 [ze ro] . Com o j f oi re f e rido, s e r e xpl icado m ais f re nt e o re t orno de f une s .
#include <stdio.h> int main() { int inteiro = 3; //definio de um int float pi = 3.14; //definio de um float //definio de um double double inteiro_gigante = 1234567890; //definio de um char char caracter = A; /* Imprimir as variveis no ecr*/ printf(inteiro:%d\n pi: %f\n inteiro_gigante: %d\n caracter: %c\n, inteiro, pi, inteiro_gigante, caracter); return 0; }

H aq ui m uit a cois a nov a e q ue pode pare ce r com pl icada m as q ue no f undo no . V am os por part e s . O program a com e a e , com o j re f e rim os , v ai dire it of uno m ain() . Ao ace de rm os ao s e u bl oco, e ncont ram os nas prim e ira 4 l inh as , de f inie s de v ariv e is , int int e iro = 3; f l oat pi = 3.14; doubl e int e iro_gigant e = 123456789 0; e ch ar caract e r = A;Ao criarm os , por e xe m pl o o int int e iro = 3, e s t am os a dize r ao com pil ador para nos re s e rv ar um pe dao [um a zona, com um e nde re o]de m e m ria do nos s o com put ador [RAM ] para pode rm os l guardar al go do t ipo int [int e iro]e q ue , ne s t e cas o, cont e nh a o v al or int e iro 3. A m e s m a cois a para as out ras 3 de f inie s de t ipos de v ariv e is . H aq ui dois pas s os q ue f oram e v it ados e s cre v e r no cdigo para pode re m s e r f al ados agora. Na de cl arao de v ariv e is , no obrigat rio at ribuir-s e aut om at icam e nt e um v al or a e l a. P odia t e r-s e f orm a: e s crit o o m e s m o da s e guint e

V ariv e is (1 part e)
V is t o j s abe rm os f aze r um program a e m C, q ue m os t ra f ras e s no e cr, pode m os av anar para al go m ais int e re s s ant e:v ariv e is . Um a v ariv el e m al go q ue no t em v al or f ixo e q ue , port ant o, pode s e r al t e rado e t om ar q ual q ue r v al or. I st ov e rdade , m as e m C no as s im t o l ine ar. Um a v ariv el e m C pode t om ar q ual q ue r v al or do s e u t ipo, is t o , e xis t em v rios t ipos de v ariv e is : int e iros [int e s uas v ariant e s uns igne d (s e m s inal ) e s igne d (com s inal ) ] , de v rgul a f l ut uant e [f l oat ] doubl e s [cas o int / f l oat no ch e gue m ] , e caract e re s [ch ar] .P or agora e s t es ch e gam e j nos v o dar m uit oj e it o. Com is t o ach o q ue pode m os com e ar com um s im pl e s program a q ue m os t ra no e cr cada um dos t ipos de dados q ue acabm os de v e r.

int inteiro; inteiro = 3;

q ue o re s ul t ado s e ria e xact am e nt e o m e s m o.

<39 >

t ut orial
O u se j a para al m de s e de cl arar a v ariv el int e iro com o s e ndo um int , at ribui-s e -l he o v al or 3 at rav s do s m bol o de at ribuio =. A at ribuio f unciona da dire it a para a e s q ue rda, ou s e j a, o 3 at ribudo v ariv el int e iro e no ao cont rrio, e pode m pe ns ar: q ue e s t upide z, bv io q ue no ao cont rrio. M as um e xe m pl o m os t ra be m o probl e m a q ue m uit as v e ze s acont e ce . print f (Caract e re s norm ais : % d [para int e iros ou dou bl e s] ,%f [para f l oat s] e % c [para caract e re s ] ... D e pois de f e ch ar as pas , pe -s e o nom e de cada v ariv el s e parada por v rgul as , pe l a orde m q ue apare ce ram de nt ro da f ras e , ne s t e cas o s e r um int , um f l oate de pois um caract e r e no nos s o cas o: , int e iro, pi, caract e r) ; A ide ia pr a % df c, e t c, e no f inal das pr o nom e das v ariv e is pe l a orde m q ue f oram ins e ridas de nt ro da f ras e . Se be m re pararam ps -s e o print f () e m v rias l inh as . I st o pode s e r m uit o t il para s e pode r v is ual izar, m ais ou m e nos , com o v ai f icar o as pe ct o f inal ou m e s m o e m t e rm os de organizao do cdigo para q ue out ra pe s s oa pos s a v ir a l e r e com pre e nde r be m . P or f al ar e m organizao de cdigo, pode m os v er q ue t am bm f oram acre s ce nt ados com e nt rios . D e s de j , bom h bit o acre s ce nt ar com e nt rios ao cdigo para q ue , m ais um a v e z, q ual q ue r pe s s oa q ue o v l e r, o pos s a e nt e nde r ou m e s m o para no pe rde rm os um raciocnio q ue s e e s t av a a t e r num dia e q uando v ol t am os ao f ich e iro no f aze m os a m e nor ide ia do q ue s e pas s a al i. Exis t e m duas f orm as de com e nt ar cdigo e m C: ou num a nica l inh a, us ando / / ou e m m ais q ue um a l inh a, us ando / * para com e ar e * / para acabar. E t udo o q ue de nt ro de s s e e s pao e st iv e r, s e r ignorado pe l o com pil ador. Com e st as bas e s e s t am os pront os para criar v ariv e is , at ribuir-l hes v al ore s , s e j am e l as de q ue t ipo f ore m , e ainda de im prim i-l as no e cr.

int inteiro = 3; int outro_inteiro; int e_outro_inteiro = 5; outro_inteiro = inteiro; inteiro = ainda_outro_inteiro;

O q ue acont e ce ne s t a s it uao : 3 at ribudo a int e iro;out ro_int e iro criado com um v al or q ual q ue r inde f inido;5 at ribudo a e _out ro_int e iro. D e pois , int e iro, q ue v al e 3, at ribudo a out ro_int e iro, pas s ando e s t e a v al e r 3, e m v e z do v al or ant e rior, al e at rio; e _out ro_int e iro, q ue v al e 5, at ribudo a int e iro, de s t ruindo o s e u v al or ant e rior, 3. Com o v e m , o s m bol o de at ribuio = t em o pode r de de s t ruio e de at ribuio, s e ndo e s t a, s e m pre da dire it a para a e s q ue rda. P os t o is t o, e no e s q ue ce ndo o re s t o do cdigo de s t e s e gundo program a, v ol t e m os a e l e. O print f () um a f uno q ue nos pe rm it e im prim ir f ras e s . M as e s e q uis e rm os im prim ir ov al or q ue e s t de nt ro de um a v ariv el ?No nos s o cas o q ue re m os im prim ir o s e guint e t e xt o: int e iro: 3 pi: 3.14 int e iro_gigant e : 123456789 0 caract e r: A Se re parare m , as as pas acabam na l inh a de baixo pois f oi acre s ce nt ado o caract er e s pe cial \n, para al m das out ras l inh as , no f inal da f ras e . O ra para im prim ir as v ariv e is de nt ro da f ras e us am os a s e guint e s int axe :

V ariv e is 2 e Sm bol os O pe radore s


Em bora j t e nh am os apre ndido a us ar int e iros , f l oat s e caract e re s , s e ria m ais int e re s s ant e s e puds s e m os int e ragir com el e s: s om ando-os , s ubt raindo-os , m ul t ipl icando-os , div idindo-os , e t c.

<40>

t ut orial
T udo f icar m ais cl aro com program a. um s im pl es M as um a m ane ira m uit o pre guios a e na q ualno pode ram os v ol t ar a us ar o v al or dos re s ul t ados , com o acont e ce na v e rs o ant e rior .

#include <stdio.h> int main() { //declarao das variveis a=3,b=4 e c int a = 3; int b = 4; //podia ter sido //declarado da seguinte maneira: int soma; //int a = 3, b = 4, soma; //que teria o mesmo efeito int sub,mult,div; soma = a + b; // soma a com b //e atribui o resultado a soma sub = a - b; // subtrai b a a e //atribui o resultado a sub mult = a * b; // multiplica a por b //e atribui o resultado a mult div = a / b; // divide a por b e //atribui o resultado a div printf(soma=%d, sub=%d, mult=%d, div=%d\n, soma, sub, mult, div); return 0; }

I nput / O ut put
Com o j re f e rim os no nicio, us am os o # incl ude <s t dio.h > para pode rm os ut il izar as f uncional idade s de input ,t e cl ado, rat oe out ros , e out put , m onit or , f ich e iro ou pe rif rico. At agora s us m os o out put , com a f uno print f () . V am os agora pode r al argar , e m uit o, a m ane ira de us ar o C, pode ndo int e ragir com o program a.

To s im pl e s q uant o is t o. Crim os as v ariv e is a e b e at ribum os -l h e s os v al ore s 3 e 4 re s pe ct iv am e nt e . D e pois crim os as 4 v ariv e is para guardarm os os v al ore s re s pe ct iv os s ope rae s e f e ct uadas a a e b, s om a, s ub, m ul t e div . Em s e guida at ribum os a cada um a de s t as ope rae s , o v al or da re s pe ct iv a ope rao e nt re a e b. No f inal , im prim im os , com o j v im os , as v ariv e is de nt ro da f ras e . O ut ra m ane ira de t e rf e it o is t o s e ria a s e guint e:
int main() { //declarao das variveis a=3, b=4 //e soma int a = 3; int b = 4; int soma; //podia ter sido declarado da //seguinte maneira: //int a = 3, b = 4, soma; //que teria o mesmo efeito printf(soma=%d, sub=%d, mult=%d, div=%d\n, a+b, a-b, a*b, a/b); return 0; }

#include <stdio.h> int main() { //declarao de variveis int a,b,soma; printf(Insira um valor para a: ); // obter valor de a scanf(%d, &a); printf(Insira um valor para b: ); // obter valor de b scanf(%d, &b); soma = a + b; // soma a com b e atribui o resultado a soma // imprimir o resultado no ecr printf(soma=%d\n, soma); return 0; }

O s canf () pode pare ce r dif cil part ida m as no f undo m uit o s im pl e s. No e nt ant o, um a v e z m ais , v ej am os do incio o cdigo de s t e program a. No incio de cl arm os 3 v ariv e is , a, b e s om a, com o obj e ct iv o de at ribuirm os um v al or a a e a b e de pois de adicionados at ribudo a s om a. P as s e m os , e nt o, ao s canf () . Ne s t a f uno incl um os o t ipo de dados q ue v am os ins e rir e no f im , f ora das as pas , o e nde re o de l a e no cas o de s e r m ais do q ue um a, pom o-l as por orde m a s e guir s as pas , as s im com o f aze m os no print f () .

<41>

t ut orial
Ao e s cre v e rm os & a e & b e s t am os a dize r ao com pil ador q ue ao re ce be r dois int e iros [% d ] , q ue re m os q ue s e j am al ocados no e nde re o de m e m ria & a e & b re s pe ct iv am e nt e. P e ns e m os nis t o com o s e ndo cas as . T e m os a cas a a com o e nde re o & a e a cas a b com o e nde re o & b. O u s e j a, o program a e s pe ra o v al or para o int e iro a s e guido de ENTER e de pois , e s pe ra o v al or de b s e guido de m ais um ENTER. Se pe rce be rm os be m com o o s canf f unciona, f ica aq ui um program a q ue re ce be a dat a de nas cim e nt o e de pois a conf irm a, m os t rando no e cr as ope s e s col h idas pe l o ut il izador:
#include <stdio.h> int main() { //declarao de variveis int ano; int dia; int mes; printf("Insira a sua data de Nascimento [mes em numero]\n\nAno:"); // obter valor de ano scanf("%d", &ano); printf("Dia: "); // obter valor de dia scanf("%d", &dia); printf("Mes: "); // obter valor de mes scanf("%d", &mes); // imprimir os dados do utilizador // no ecr printf("Data:\n%d\\\%d\\\%d\n", ano, dia, mes); return 0; }

O if() f unciona da s e guint e m ane ira:


if (condio) { expresso 1; } else { expresso 2; }

Com o j re f e rim os ant e riorm e nt e , um bl oco {} , s pre cis a de e xis t ir , s e e xis t ir m ais do q ue um a e xpre s s o. Em C, al go v e rdade iro s e f or dif e re nt e de 0 [ze ro] , ou se j a, 1 v e rdade iro, 642 v e rdade iro, -2,3 v e rdade iro e 0 [ze ro] s e m pre f al s o. P os t o is t o, v am os a um s im pl e s program a para pr e m prt ica o nos s o if() :
#include <stdio.h> int main() { int x = 10; int user; printf(Insira um numero maior que %d: , x); scanf(%d, &user); if (user > x) // se condio for // verdadeira, executa o seu corpo { printf(Inseriu o numero %d que maior que %d\n, user, x); } else // caso contrrio // executa este corpo { printf(O numero %d que inseriu nao maior que %d\n, user, x); } return 0; }

Expre s s e s Condicionais e O pe radore s L gicos


Ne s t a s e co v am os apre nde r l gica. A l gica m uit o im port ant e para de cidir s it uae s . E para as de cidir e xis t e m as e xpre s s e s condicionais . Exe m pl o dis s o s o o if() e o s w it ch () .P or agora v ej am os e s t as duas .

Com o pode m os v e r, m uit o f cilpe rce be r a s int axe do if () . Se o nm e ro ins e rido f or m aior do q ue x, q ue v al e 10, o corpo do if e xe cut ado, cas o cont rrio, o corpo do e l se e xe cut ado. No obrigat rio q ue o if t e nh a e l s e . Es t a l gica m uit o s im pl e s m as pre cios a. P or out ro l ado, e xis t e m ope radore s l gicos q ue nos aj udam a pre cis ar um a condio. So e l e s o AND o O R e o NO T , q ue e m C s e re pre s e nt am por, & & , || e ! re s pe ct iv am e nt e.

<42>

t ut orial
E s e r-nos -o m uit o t e is no s e guint e program a [um a v e rs o 2 do ant e rior] .
#include <stdio.h> int main() { int MIN = 5, MAX = 10; int user; printf(Insira um numero maior que %d e menor que %d: , MIN, MAX); scanf(%d, &user); if ((user > MIN) && (user < MAX)) // executa o seu corpo do if { printf(Inseriu o numero %d que maior que %d e menor que %d\n, user, MIN, MAX); } else // caso contrrio executa este corpo { printf(O numero %d que inseriu nao maior que %d e menor que %d \n, user, MIN, MAX); } return 0; }

Um a v e z m ais , pode pare ce r m uit o com pl icado m as v e rdade iram e nt e s im pl es e v ai-nos dar im e ns o j e it o. P as s ando s ua e xpl icao: o s w it ch re ce be a v ariv e la anal is ar. D e pois , j de nt ro do corpo, t e m os t odos os cas os q ue q ue re m os e por orde m , cada um s e guido de bre ak , de m odo a q ue um a v e z e xe cut ado o prim e iro cas e q ue de r v e rdade iro, o s w it ch pare por a e no e xe cut e t odas os out ros cas e , e f inal izado por um a condio de f aul t , cas o ne nh um a das ant e riore s s e j a v e rdade ira. Um program a para e xpl icar o s w it ch . P orq ue no um m e nu de um l e it or de m s ica?
#include <stdio.h> int main() { int menuOption; printf("Escolha uma opcao do menu:\n\n"); printf("1-Play\n"); printf("2-Pause\n"); printf("3-Stop\n"); printf("4-Next\n"); printf("5-Previous\n\n"); printf("Opcao: "); scanf("%d", &menuOption); switch (menuOption) { case 1: printf("Escolheu a opcao Play\n"); break; case 2: printf("Escolheu a opcao Pause\n"); break; case 3: printf("Escolheu a opcao Stop\n"); break; case 4: printf("Escolheu a opcao Next\n"); break; case 5: printf("Escolheu a opcao Previous\n"); break; default: printf("Opcao invalida\n"); } return 0; }

Com o pode m os cons t at ar, ne s t e cas o, o corpo do ifs e xe cut ado s e o v al or ins e rido pe l o ut il izador s at is f ize r, obrigat oriam e nt e , as duas condie s , s e r m aior do q ue M I N, q ue v al e 5, e ao m e s m o t e m po, s e r m e nor do q ue M AX, q ue v al e 10. f cil pe rce be r e s t es conce it os l gicos nas condie s , o im port ant e prat icar para ganh ar t raq ue j o na m at ria. P os t o is t o pas s e m os ao s w it ch () . Es t a f uno m uit o im port ant e q uando q ue re m os condicionar um a v ariv e la um a e s col h a por ope s . A s ua s int axe a s e guint e:
switch (varivel) { case caso_1: { expresso_1 } break; case caso_2: { expresso_2 } break; default { expresso } }

12345-

<43>

M igue l W ah non

O u se j a, de pois de m os t rarm os o m e nu, ut il izam os o s canf () v ariv e l m e nuO pt ion para de t e rm inar a opo e s col h ida e conf orm e e s t a, cada cas e dir a re s pe ct iv a opo e s col h ida ou O po inv al ida cas o ne nh um dos cas e s s e j a v e rdade iro. Na prxim a e dio pros s e guire m os com e s t a int roduo ao C.

gnu/ l inux

Am bie nt e s grf icos G NU/ L inux e m s is t e m as de f raco de s e m pe nh o


A q ue m f az por no pe rde r pit ada de cada nov o pas s o no re ino das Nov as T e cnol ogias , a q ue m capaz de e s t ar m e s e s e m e s e s a j unt ar o p de m e ia para com prar aq ue l a pl aca grf ica ou proce s s ador t opo de gam a, pode pare ce r re l at iv am e nt e e st ranh o q ue ainda h aj a q ue m t rabal h e na prim e ira v e rs o do P e nt ium . M as , m ais (s upos t am e nt e ) raro e xis t ire m s e r, de nt ro de s s a m e s m a m inoria, h av e r q ue m no q ue ira pe rde r o praze r de ut il izar G NU/ L inux, e q ue com o t alprocure s abe r as m e l h ore s ope s t e ndo e m cont aa s ua s it uao. G NU/ L inux , af inal de cont as , um a das mel h ore s s ol ue s no m e rcado para e s t a gam a de ut il izadore s , com o t al , ne s t e art igo de cidim os dar um as l uze s s obre o principal f act or de gas t o de de s e m pe nh o num a dis t ribuio: o am bie nt e grf ico. -nos m uit as v e ze s , e m v rios f runs e m q ue part icipam os , pe rgunt ado q ual a m e l h or dis t ribuio para l ow pc's . A re s pos t a s im pl e s: no de pe nde da dis t ribuio, de pe nde do am bie nt e grf ico q ue s e ut il iza (ge ral m e nt e !) , e s col h e ndo-s e m uit as v e ze s a dis t ribuio e m f uno dis s o. ne s s a al t ura q ue v e m bail aa q ue s t o: Se ndo as s im , q u al o m e l h or am bie nt e grf ico? No a e s t a pe rgunt a q ue pre t e nde m os re s ponde r, m as q ue re m os e xpor-v os as principais v ant age ns e caract e rs t icas das duas m ais adopt adas e s col h as para l ow pc's : XF CE e F l uxbox.

F l uxbox
A pal av ra de orde m ne s t e pe q ue no am bie nt e de t rabal h o m inim al is t a m e sm o a s im pl icidade e m t e rm os e s t t icos e f uncionais . D e s de l ogo, h a re al ar q ue o F l uxbox no m ais q ue um W indow s M anage r , com o t al , no de e s pe rar um l e q ue v ariado de apl icae s com um a raiz com um a s uport ar a ut il izao de produt iv idade (e xe m pl o: apl icae s K do K D E, q ue um D e s k t op Env ironm e nt ) . O F l uxbox s s e e ncarre ga de m odif icar o s is t e m a grf ico Xorg de m ane ira a incl uir , e nt re out ras cois as , um a pe q ue na barra de t are f as , a pos s ibil idade de de corar o f undo do am bie nt e com um w al l pappe r e um m e nu de apl icae s accionv e lpe l o cl iq ue dire it o do rat o, al m da pos s ibil idade de pe rs onal izao por v ia de t e m as . L ogo, t odas as apl icae s a ut il izar t e ro de s e r ins t al adas pe l o prprio ut il izador, m as no s e pre ocupe , F l uxB ox com pat v e lcom as apl icae s de G NO M E e K D E.

<44>

gnu/ l inux
Es t e pe q ue no am bie nt e m inim al is t a no propriam e nt e al go nov o, bas e ado nout ro W M: o B l ack B ox. Se ndo m uit o se m e l h ant e a e st e , principal m e nt e v is ual m e nt e, t e m -s e progre s s iv am e nt e de s t acado e ganh o a popul aridade q ue o t orna num a e s col ha a cons ide rar para pc's de baixo de s e m pe nh o. Em re l ao ao B l ack B ox apre s e nt a m ais al gum as f uncional idade s im port ant e s , com o um a barra de t are f as conf igurv el , a pos s ibil idade de ut il izar at al h os de t e cl ado, e pode r agrupar t odas as j ane l as e m ape nas um a com s e paradore s . V e rs e s m ais re ce nt e s apre s e nt am inov ae s no de s ign com o j ane l as com cant os arre dondados e t rans parncias . e st e pe q ue no s is t e m a ch e ga, o q ue um ch am ariz para ut il izadore s com m ais int e re s s e e m apre nde r, ou m ais conh e cim e nt os .

rpido, ao m e nos ?
Ne s t e cam po no h a m e nor dv ida, F l uxB ox o W M m ais s im pl e s do re ino G NU/ L inux, q ue incorpora igual m e nt e um m aior nm e ro de f uncional idade s . A s ua s ource no t e m m ais de 1M B , de m orando ape nas al guns m inut os a com pil ar. M als e e nt ra pode r-s e - de s de l ogo cons t at ar a rapide z com q ue s e cons e gue ut il izar e s t e pe q ue no s is t e m a, ge ral m e nt e ocupando, s e m m ais ne nh um a apl icao e xt e rior abe rt a, t e ndo ape nas o s is t e m a bas e por t rs e s e m s w ap ut il izada, aproxim adam e nt e 39 M B de m e m ria. I st o pe rm it ir corr-l o at nos pc's m ais ant igos s e ndo ne ce s s ria, no e nt ant o, a cons cincia de q ue q ual q ue r apl icao, por m ais s im pl e s q ue s e j a, el ev ar l ogo a m e m ria para v al ore s m ais al t os e q ui abus iv os , com o al is l gico. Se s e q uis e r re duzir ainda m ais a m e m ria ocupada, pode r-s e - opt ar por um a s is t ema bas e m ais l ev e do q ue o q ue nos proporcionado por um a norm aldis t ribuio com a opo de ins t al ar F l uxbox (com o D e bian, G e nt oo, SuSe , e t c) , caindo a e s col h a no bas t ant e f am os o D am n Sm al l L inux, um a dis t ribuio de 50M B de t am anh o q ue incl ui F l uxB ox.

Sim pl icidade ?
No s e r pre cis o m uit o t e m po para q ue f iq ue a conh e ce r os cant os cas a de s t e W M , com ut il izao int e ns iv a pode r at e st ranh ar e no s e h abit uar a m ais ne nh um s is t e m a q ue no d ao cl iq ue dire it o do rat o um pape l f ul cral na aco. No e nt ant o, t udo is t o t e m um cus t o, ou ne nh um , de pe nde ndo do ut il izador q ue s e j a. Al m da s ua s im pl icidade , F l uxB ox t am bm conh e cido por cons e guir apre s e nt ar um s is t e m a com um de s ign act uale com um a boa dos e de e y e candy, m as no re f e rido com o ch e gar l . A v e rdade q ue e s t e pe q ue no s is t ema t ot al m e nt e conf igurv el m as , para o f aze r ,t e r de s e h abit uar ,t ant o ut il izao da cons ol a, com o a inv e st ir al gum t e m po e m apre nde r a adicionar nov os t e m as , e dit ar o m e nu e de f inir apl icae s de com e o aut om t ico no st art up do s is t e m a, t udo conf igurv e le m f ich e iros de t e xt o s im pl e s . Al m dis s o, e ape s ar dos m uit os t e m as e xis t e nt e s na I nt e rne t , ne m s e m pre f icam os cont e nt es com o obt ido, e e s t are m os a um pas s o de andar a v as cul h ar nos f ich e iros dos t e m as , e a e dit -l os a nos s o be l o praze r . Se s e re f e re o abom inv e lq ue is t o pos s a s e r para um ut il izador q ue ape nas q ue r al go l ev e e pront o a us ar, h q ue re f e rir t am bm o e s pant os o de s t a pe rs onal izao e xt re m a a q ue

Concl us o
Se gos t a de apre nde r, e q ue r o m e l h or q ue e xis t e no com prom e t e ndo a pe rf orm ance , F l uxB ox a e s col ha a t om ar. O s e u de s ign s im pl es e f uncional idade j conq uis t aram m uit os , de q ual q ue r f orm a, no h com o e xpe rim e nt ar e t irar a prov a dos nov e . Se no q uis e r ins t al ar propos it adam e nt e e st e am bie nt e grf ico, pode r s im pl e s m e nt e f aze r o dow nl oad do L iv e CD da dis t ribuio D am n Sm al lL inux e com prov ar o q ue l ev a m uit os , m e s m o pos s uindo pc's de e l ev ada pe rf orm ance , a t -l o com o e s col h a n 1.

<45>

gnu/ l inux

Xf ce
P ode m os caract e rizar Xf ce num a nica f ras e : D e sk t op Env ironm e nt l ev e se m de s pre zo da f uncional idade . T e m na rapide z, e m re l ao aos dois D E's dom inant e s , o s e u principal t runf o. Se gue um a f il os of ia m odul ar, ou s e j a, v e m com um s is t e m a bas e s e m m uit as de pe ndncias a q ue se pode f acil m e nt e acre s ce nt ar f une s m e dida das ne ce s s idade s , at rav s da ins t al ao de pacot e s . As s im , cons e gue ocupar m e nos re curs os pois no ins t al a por de f aul t f une s m uit as v e ze s de s ne ce s s rias ao ut il izador. O nom e Xf ce prov inh a original m e nt e de XF orm s Com m on Env ironm e nt , m as com o f oi re e s crit o duas v e ze s j no us a XF orm s . O nom e cont inuou o m e s m o, j no s e ndo XF ce m as Xf ce , no s ignif icando a s igl a abs ol ut am e nt e nada, t alcom o o l ogo, q ue ape nas um a piada. O de s e nv ol v im e nt o com e ou por v ol t a de 19 9 7 s e ndo um cl one para L inux do Com m on D e sk t op Env ironm e nt (CD E) um D E proprie t rio para UNI X. A s e gunda v e rs o f oi l anada j com o Xf ce 's w indow m anage r (Xf w m ) ainda h oj e pre s e nt e. F oi na t e rce ira v e rs o q ue de ixou Xf orm s e pas s ou a bas e ar-s e e m G TK , principal m e nt e por caus a de o prim e iro s e r proprie t rio, o q ue l im it av a o progre s s o do proj e ct o. Com a v e rs o 4.2.0 f oi f e it o um grande s al t o com o updat e para as bibl iot e cas G TK + 2 e na 4.4 (act ual ) pas s ou a us ar o Th unar com o f il e m anage r e m v e z do Xf f m.

o a e st e, s acrif icar al gum as f uncional idade s (t ais com o ace de r por s s h ) . A l t im a v e rs o cons e gue s e r um bom s ubs t it ut o de G NO M E ou K D E. -nos apre s e nt ado um D e s k t op s im pl e s , com duas barras h orizont ais com o e m G NO M E, q ue o t orna bas t ant e prt ico. P os s ui um paine l s im pl e s m as bas t ant e t il pe rm it indo o f cil ace s s o a v rias conf igurae s do s is t e m a. O cupa ce rca de 55M b de m e m ria com a SW AP t ot al m e nt e l iv re , t e ndo por t rs o s is t e m a bas e a corre r . V e m com t rans parncias e ef e it os s om bra nat iv os (ne ce s s it a de ace l e rao 3d e m but ida no de s k t op) , apre s e nt ando um a e xce l e nt e f l uide z.

Not af inal
Se q uis e r ape nas um D E l ev e ou m e s m o um s ubs t it ut o para G NO M E ou K D E, t e m no Xf ce um a boa apos t a. Al m de s e r f cil de ut il izar , principal m e nt e para q ue m v e m do G NO M E, t e m um as pe ct o l im po e de pe rs onal izao f cil . D e not ar q ue para com put adore s q uas e pr-h is t ricos prov av el m e nt e f l uxbox m ais indicado...

Sim pl es e F uncional
Us a a bibl iot e ca G TK (t al com o G NO M E) e v e m por de f aul t com o Th unar com o f il e m anage r . Es t e l t im o criado f oi para s e r l ev e q uando com parado com , por e xe m pl o, o naut il us ( f il e m anage r de f aul tdo G NO M E) , ape s ar de , e m re l a-

<46>

Ce l s o Ram os & M igue l P ais

ev e nt os

No pas s ado dia 27 de Jane iro, de corre u o TECNO NO V 2007, um e ncont ro nacional de dicado T e cnol ogia e I nov ao.
Es t e ev e nt o v e io dar cont inuidade a out ros j de corridos s obre a m e s m a re a de aco, com o B arCam pP ort ugale a SH iF T , s e ndo e s t e l t im o m ais v irado para um pbl ico int e rnacional . O TECNO NO V , pe l o cont rrio, t inh a a int e no de m os t rar um pouco do q ue s e f az no nos s o pas , aos port ugue s e s , e principal m e nt e f om e nt ar a part il h a de ide ias e m ot iv ar a inov ao. O e ncont ro de corre u e m Coim bra, no caf / audit rio da F NAC, l ocal izada no F rum Coim bra, e s pao q ue , por v e ze s , no f oi s uf icie nt e para o pbl ico q ue ia pas s ando e re s ol v ia e s pre it ar. L de nt ro iam de corre ndo apre s e nt ae s , m aiorit ariam e nt e dirigidas a um pbl ico no-prof is s ional , com e xce po de al guns t e m as , com o a t e rce ira v e rs o da l ice na G P L , q ue e ra dire ccionada para a re a de de s e nv ol v im e nt o de s of t w are . Ao t odo, f oram s e t e apre s e nt ae s , re al izadas por oradore s na s ua grande m aioria prof is s ionais da re a, m as com h is t oriais dis t int os . D urant e t odo o e v e nt o e st iv e ram t am bm dis ponv e is grat uit am e nt e cds da dis t ribuio G NU/ L inux Ubunt u, para div e rs as pl at af orm as . A prim e ira apre s e nt ao, de t t ul o " L inux: Um cam inh o para a produt iv idade " ,f icou a cargo de O ct v io F il ipe G onal v e s, f undador da e m pre s a M agicB rain. F oi um a apre s e nt ao de dicada div ul gao do " m undo" do Sof t w are L iv re e de um a das s uas principais " bande iras " : as dis t ribuie s de s is t e m as ope rat iv os G NU/ L inux.

F oram de s m is t if icados m it os q ue se pe rpe t uam s obre e s t e t ipo de s of t w are e e nunciadas al gum as das principais v ant age ns . Se guidam e nt e , de corre u a apre s e nt ao da t e rce ira v e rs o da l ice na G NU G P L , por Rui M igue l Se abra, V ice -P re s ide nt e da ANSO L (As s ociao Nacional para o Sof t w are L iv re ) . F oram cl arif icadas as principais dif e re nas de s t a nov a v e rs o e m re l ao ant e rior e apre s e nt adas al gum as v ant age ns da s ua adopo. P ara t e rm inar a prim e ira part e do e v e nt o, M arcos M arado, anal is t a da Sonae Com I T , re al izou um a das apre s e nt ae s q ue ge rou m aior int e re s s e e dis cus s o de t odo e s t e ev e nt o, v ol t a do t ema " A I nds t ria D is cogrf ica e o D RM (D igit al Righ t s/ Re s t rict ions M anagm e nt ) " . Aps a de s crio de s t a t e cnol ogia, f oram apre s e nt adas div e rs as concl us e s ne gat iv as a t irar da s ua ut il izao, j us t if icando as s im as ace s q ue o orador ince nt iv av a, de f orm a a com bat er a apl icao de t ais re s t rie s na inds t ria dis cogrf ica. Aps um curt o cof f e e bre ak , M rio L ope s , e st udant e na F EUP ,v e io apre s e nt ar o I M AG E (I ndus t rial M anage m e nt G am e ) , proj e ct o com pos t o por um a e q uipa de e s t udant es do curs o de Enge nh aria I nf orm t ica. Es t e cons is t e num j ogo w e b-bas e d de s im ul ao de ge s t o e de s e nv ol v im e nt o indus t rial . T e ndo por bas e aq uil o q ue re al m e nt e s e ut il iza no s e ct or , e st e j ogo t orna-s e as s im num a boa pl at af orm a para t e st e s de t ct icas e pl anos e m pre s ariais .

<47>

ev e nt os

Aprov e it ou-s e para abordar principal m e nt e as de cis e s f e it as pe l a e q uipa para o de s e nv ol v im e nt o de s t e proj e ct o, s e ndo dado um m aior f oco pl at af orm a w e b e s col h ida, Ruby on Rail s. O f undador da W e B re ak St uf f , e m pre s a port ugue s a de dicada ao de s e nv ol v im e nt o, de s ign e e s t rat gia para produt os w e b, F re de rico O l iv e ira, v e io f al ar s obre o t ema " I nov ao e m P ort ugal " . F oram f e it as div e rs as crt icas f al t a de e m pre e nde doris m o da m aioria dos port ugue s e s e f al t a de oport unidade s q ue s o dadas a nov as ide ias , com parando com out ros pont os do gl obo. Se guiu-s e um a I nt roduo l inguage m de program ao P e rl , e m bora m ais v irada para o as pe ct o s ocial , ou s e j a, para as com unidade s e s uport e ge rado s ua v ol t a: CP AN, m ail ing l is t s em l ngua port ugue s a, P e rlM onge rs , e nt re out ros ... Apre s e nt ao e st a q ue f oi re al izada por Ne l s on F e rraz, prof is s ional da Se gul aT e ch nol ogie s .

P ara t e rm inar , a l t im a apre s e nt ao f icou a cargo de P e dro Sous a, program ador w e b para a Acce nt ure , q ue j h av ia apre s e nt ado o s e u proj e ct o na 5 e dio da Re v is t a P RO G RAM AR, o w e Spe ndM one y. Es t a f oi um a cont inuao do t ema " I nov ao" , de s t a v e z apre s e nt ando al guns bons e xe m pl os , dando e s pe ciale nf as e W ii, a nov a cons ol a da Nint e ndo. Em s um a, f oi, s e m dv ida ne nh um a, um a pt im a iniciat iv a, pois para al m de s urgir m ais um e s pao de div ul gao do q ue s e f az e m P ort ugal ne s t a re a, s urgiu principal m e nt e m ais um e s pao de s e ns ibil izao, m ot iv ao e incubao de ide ias , pront as a s e r part il h adas e de s e nv ol v idas . Es t e um dos cam inh os para at ingir a re corre nt e m e nt e f al ada " I nov ao" . F el izm e nt e j pos s v el obs e rv ar um re s ul t ado prt ico de s t e ev e nt o: um l ocal de div ul gao e s e ns ibil izao s obre as prt icas de al gum as e m pre s as , ao ins e rire m D RM s nos s e us produt os (h t t p:/ / w w w .drm -pt .inf o) . P ara m ais inf orm ae s s obre e s t e ev e nt o, v is it e m o s it e of icial ht t p:/ / t e cnonov .ne t

<48>

Srgio Sant os

anl is e s

UM L , Me t odol ogias e F e rram e nt as CASE


Al be rt o S il va Carl os V ide ira
Edit ora: Ce nt roAt l ant ico.pt
Col e co: T e cnol ogias

P ginas : 357 2 Edio, 1 Edio: M aro de 2005 I SB N: 9 89 -615-009 -5

UM L , Me t odol ogias e F e rram e nt as CASE, v ol um e 1, apre s e nt a-s e com o um l iv ro de re f e rncia para al unos de l ice nciat uras e de curs os de ps -graduao, na re a de conce po de s is t e m as de s of t w are , com e s pe cial f oco e m m t odos , m ode l ao e f e rram e nt as CASE (Com put e r Aide d Sof t w are Engine e ring) .
I nt roduzido o l iv ro, o prim e iro im pact o ao corre r das pginas no im pre s s iona. O as pe ct o grf ico pare ce indicar q ue o l iv ro f oi de s e nv ol v ido num corriq ue iro e dit or de t e xt o, f icando m uit o aq um da q ual idade grf ica q ue as e dit oras de re nom e m undial h abit uaram os prof is s ionais e os al unos do e ns ino s upe rior . Es t e prim e iro im pact o cons ol ida-s e ao l ongo do l iv ro, onde s e j unt am os im e ns os grf icos e diagram as cuj a q ual idade grf ica f ica abaixo das e xpe ct at iv as , ao pont o de t ornar dif cila l e it ura e m al guns cas os . Ce nt rando a at e no no cont e do e no na f orm a, o l iv ro div ide -s e e m duas part e s. A prim e ira e f e ct ua o e nq uadram e nt o int roduzindo um a v is o ge ral s obre os s is t e m as de inf orm ao, arq uit e ct uras , pl ane am e nt o, proce s s os e m t odos de de s e nv ol v im e nt o de s of t w are . No s e ndo e st e o obj e ct iv o do l iv ro e m q ue s t o, e s t a prim e ira part e pe rm it e q ue um l e it or f ora da

re a de t e cnol ogias de inf orm ao s e f am il iarize com conce it os e conh e cim e nt os bs icos da re a. A s e gunda part e ce nt ra-s e na l inguage m de m ode l ao UM L (Unif ie d M ode l ing L anguage ) , s e ndo a s e gunda v e rs o do UM La grande razo de s e r de s t a re e dio. Na s e gunda part e ef e ct ua-s e um a e num e rao das v rias m ode l ae s s uport adas pe l o UM L , ef e ct uando um a de s crio, int roduzindo os diagram as corre s ponde nt es e f aze ndo re f e rncia, de f orm a s upe rf icial , s l im it ae s das v e rs e s ant e riore s do UM L , m as no abordando pos s v e is probl e m as e s ol ue s na act ual v e rs o. Um pont o int e re s s ant e a incl us o de e xe rccios no f inalde cada s e co de f orm a a t e st ar a s ol ide z dos conh e cim e nt os adq uiridos . Era e xpe ct v e l q ue aps a int roduo dos conce it os UM Ls e il us t ras s e a s ua ut il izao cons ol idada e a s ua l igao af e rram e nt as CASE, dado q ue o l iv ro t em a pre t e ns o da apl icao do UM L no proce s s o de de s e nv ol v im e nt o, no e nt ant o t al no acont e ce . Ao cont rrio das as pirae s as s um idas no incio do l iv ro, o m e s m o pare ce indicado para l e it ore s q ue t om e m cont act o pe l a prim e ira v e z com UM L , m as f ica aq um das ne ce s s idade s de al unos do e ns ino s upe rior q ue pre t e ndam cons t ruir um a carre ira na re a das t e cnol ogias de inf orm ao.

<49 >

F e rnando M art ins

int e rne t

D ire ct rio de apl icae s w e b 2.0

Um dire ct rio e xt e ns o e pe s q u is ve l de f e rram e nt as w e b 2.0, m ant ido pe l a Te ch C ru nch . A q u i pos s ve le ncont rar as m ais variadas apl icae s , de u m a f orm a bas t ant e int u it iva.

ht t p:/ / w w w .g o2w e b20.ne t

D igg B igSpy
D os l aborat rios do popul ar port alde not cias D igg f oi criada um a nov a e m uit o ape l at iv a f orm a de obs e rv ar a act iv idade de t odos os ut il izadore s . As s im , pos s v el v is ual izar e m t e m po re al , t odas as not cias v ot adas pe l os m e m bros , e nq uant o as not cias com m ais im port ncia (ou s im pl e s m e nt e m ais v ot adas ) s o re al adas .

ht t p:/ / l abs .digg.com / bigs py /

V ide o-aul as de P HP
B l og m ant ido por um a program adora, com um t ut orialde P HP . Cada aul a corre s ponde a um v de o f l as h , s obre um as s unt o part icul ar de s t a popul ar l inguage m de program ao.

ht t p:/ / program m ing.l e arningne rd.com / ph p-bl og

Joos t
Nov a apl icao pe e r-t o-pe e r para o s t re am ing de canais de TV . Um a nov a f orm a de aprov e it ar o m e l h or dos dois m undos : TV e int e rne t , at rav s de um a apl icao f cil de us ar e onde pode m os v e rdade iram e nt e e s col h e r o q ue q ue re m os v er .

ht t p:/ / w w w .j oos t .com


<50>

bl ue s cre e n

P robl e m as de t e cl ado

L ev e o s e u W indow s / M ac cons igo

Sol uo de s e s pe rada

As crianas e s t o cada v e z m ais int el ige nt e s ...


<51>

com unidade

Es t am os no l t im o m s do prim e iro t rim e s t re do ano e s int o-m e opt im is t a e m re l ao ao rum o q ue as cois as e s t o a t om ar na com unidade . V ej o o nm e ro de ut il izadore s act iv os a aum e nt ar no f rum , as s im com o o nm e ro de ut il izadore s no s e u t ot al , v ej o v rias e q uipas de de s e nv ol v im e nt o a s e re m f orm adas a part ir do f rum , v rios proj e ct os a s urgir , v rias de ze nas de pe s s oas a q ue re r cont ribur act iv am e nt e para o cre s cim e nt o da com unidade , e nf im , v ej o v ont ade de t rabal h ar . P or v e ze s t orna-s e dif cil para o s t af f apoiar t odas as iniciat iv as , t odos os proj e ct os e dar iniciao a t odas as ide ias q ue s urge m . No e nt ant o, com al gum e s f oro e v ont ade as cois as acabam por s e f aze r com re l at iv a rapide z e s uce s s o.

Q ue re s part icipar na re v is t a P RO G RAM AR? Q ue re s int e grar e s t e proj e ct o, e s cre v e r art igos e aj udar at ornar e s t a re v is t a num m arco da program ao nacional ? V ai a

w w w .re v is t a-program ar .inf o


para m ais inf orm ao com o part icipar ou e nt o cont act a-nos por

O w ik i (h t t p:/ / w ik i.port ugal -a-program ar .org) m ais um a das pl at af orm as de apoio f orm ao de s s e s proj e ct os , de apoio e s crit a de art igos na nos s a l ngua-m e e de apoio a q ue m q ue r apre nde r al go s obre program ao. O prxim o pas s o s e r dado t am bm no s e nt ido de cont inuar a prom ov e r a cons t ruo de cont e dos e apre ndizage m de q ue m s e dis ponibil izar para t al .

@ port ugal -a-program ar .org


P re cis am os do apoio de t odos para t ornar e s t e proj e ct o ainda m aior ... cont am os com a t ua aj uda

re v is t aprogram ar

<52>

Rui M aia

Enf im , concl uo o " A Com unidade " de s t a e dio de s orris o e s t am pado na cara pe l o f act o do P ort ugal -a-P rogram ar cont inuar a f aze r s uce s s o por e s t e pas f ora, m uit o de v ido ao t rabal h o e col aborao de t odos os m ode radore s do f rum , adm inis t radore s dos pl os e aos ut il izadore s q ue t m de m ons t rado v ont ade e capacidade de t rabal h o. Es pe ro q ue o s e gundo t rim e s t re do ano t raga m ais pros pe ridade e q ue os re s ul t ados do t rabal h o da com unidade agrade m a t odos os program adore s nacionais .