e dit orial

Ev ução ol
Est proj ct cont e e o inua e m e v ução e ne st e dição isso se rá ol a m ais v e lq ue nunca. Um a m udança de v isív isualf al q ue oi go nos e ra pe dido nos com e nt ários sob re as ant riore s e diçõe s. e P ara auxil iar e st a m udança, usám os um program a propriam e nt de st e inado a pub l icaçõe s, o Scrib us. Tam b ém é ope n-source e , e m b ora possua ainda al guns de f it com o na e os, e dição de t xt possib ilou-nos a re v ução gráf e o, it ol ica de st a e dição, para m e lor ou pior de pois sab e re m os, m as gost os h ám dos re sul t ados. Ent t o, o nosso proj ct cont re ant e o inua a cre sce r, t o e m ant núm e ro de part icipant s com o e m cont uiçõe s. Num a re v a e rib ist de st t e ipo, q ue v e das cont uiçõe s dos m e m b ros e da iv rib v dade de st arie as, é se m pre im port e m ant r um grupo ant e act o de re dact s e out iv ore ro grupo de m e m b ros q ue part icipam ocasional e nt . Est ob j ct o t m sido cum prido m e e e iv e at agora, re sul é t ando num a pub l icação se m pre com post por a cont údos v e ariados, re q ue sit ne ce ssário num a áre a t v a o ão ast com o é a da program ação de com put adore s. Espe ram os q ue as al raçõe s e f ct t e e uadas se j am do v osso agrado e prom e t m os cont e inuar a prosse guir os nossos ob j ct os principais: ch e gar a cada v z m ais program adore s e e iv e at rair cada v z m ais ge nt para o nosso m undo. e e

<2>

Sérgio Sant os

not ícias

SH IFT
V re al ai izar-se na Univ rsidade Nov de L oa, e nt os dias 27 e 29 de e a isb re Se t m b ro de 2006, o Congre sso " if – Social e Sh t and H um an Ide as f Te ch nol or ogy" ce nt rado nas t cnol e ogias e m e rge nt s e no se u im pact na v e o ida das pe ssoas e re spe ct as com unidade s. iv Sh if é um a conf rência sob re o pape le as im pl t e icaçõe s da t cnol e ogia na socie dade act , se rv ual iços ce nt rados no ut izador, m ov e nt sociais q ue criam il im os nov re l as açõe s sociais e t cnol e ogia q ue m e lora a nossa v h ida diária. Te m com o púb l ico-alo, e urope us e nt v usiast da t cnol as e ogia, com principal incidência para o púb l port ico uguês e e spanh ol . Te m as propost para e st ano: os e - A re l ação e nt P ssoas e Te cnol re e ogia - Ge st do Conh e cim e nt ão o - O s Bl e as nov f ogs as orm as de part icipação cív ica - L e rdade s e P acidade nos m e ios digit ib riv ais M ais inf orm açõe s: w w w .sh if .pt t

Bugs e ncont rados nos proce ssadore s da Int l e

nov os

Googl aproxim a-se de nov m e rcado e o
Com o re ce nt l e ançam e nt do nov o o se rv iço Googl, q ue possib ila ut izar o e it il dom ínio do ut izador com o dom ínio de e il m ailnas cont Gm ail a e m pre sa nort as , e am e ricana aproxim a as suas sol uçõe s de um pacot de produt idade O f ice . e iv f R e ce b e ndo ainda grande part dos se us e l ucros de se rv iços pub l ários, a Googl j icit e á l ançou div rsos se rv e iços, com o f h as de ol cál o, calndários, conv rsação, q ue cul e e possib ilam it sol uçõe s sim pls e para indiv iduais e pe q ue nas e m pre sas. Em b ora a e m pre sa ainda não t nh a e de cl arado as suas int nçõe s, cada v z m ais e e surge a ide ia q ue a Googl pre t nde e e at ingir um a nov áre a de ne gócio, de st a a v z com sol e uçõe s t al e nt b ase adas e m ot m e pl af at orm as w e b . R e st a-nos e spe rar pe l o q ue pode rá surgir f uram e nt e v rif ut e e icar se se t ornará num a opção v e l ne st iáv e im port e m e rcado. ant

Num docum e nt disponib il o izado h á poucos dias, a Int l inf e orm ou os ut izadore s q ue q ualue r um dos il q proce ssadore s Int l e Core 2 D uo re cém ch e gados, possue m m ais de 60 b ugs ide nt icados. if A pe nas 20 dos 60 b ugs t rão corre cção e a curt o-prazo, o q ue garant q ue e ne nh um dos out ros, se gundo a Int l e , pre j udicará o ut izador e m t rm os de il e ut ização do sist m a, à e xce pção do il e A I39 , q ue pode corrom pê-l o.

<3>

t m a de capa e
çõe s m édicas, para lr sinais e l ricos e éct prov nie nt s de se nsore s (ECG, TAC… e e e ) m e diant o proce ssam e nt de sse sinal e o (t ransf orm adas Z , t ransf orm adas Fourie r, ft il ros… ge rar dados q ue t ) ransm it am inf orm ação út aos P issionais M édicos. il rof Um Microcont ador é um rol circuit o int grado, e m q ue num único disposit o e iv cont ém al guns dos principais com pone nt s e ne ce ssários à re al ização de Sist m as D igit e ais P rogram áv is (m e m ória e o m ais v e ariado t ipo de pe rif éricos). P or sua v z os e Microproce ssadore s, são f undam e nt m e nt al e const uídos por um a AL (arit m e t and it U h ic l ogic unit re gist de dados, TCU (t e and ), os im cont unit e ne ce ssit rol ) am q ue a m e m ória e os pe rif éricos se j am adicionados e xt rnam e nt , com unicando com o CP à e e U cust de t a rês b arram e nt (dat addre ss e os a, cont ). rol A v age m de pode r t r um grande ant e núm e ro de pe rif éricos disponív is de nt e ro de um ch ip, t orna os m icrocont adore s rol m uit at o ract os e m proj ct e lct iv e os e rónicos. Ne st e xe m pl se rá usado o P 16F877 e o IC q ue é um M icrocont ador de se nv v rol olido pe l M icroch ip Te ch onol a ogy.

M icrocont adore s rol
Est e art igo t m com o ob j ct os a e e iv apre se nt ação de M icrocont adore s e a rol de pe ndência q ue h oj e m dia a e lct e e rónica no ge ral(R ob ót ica, D om ót ica, Elct e rónica Indust /R e side ncial rial , Te lcom unicaçõe s… t m dos m e sm os. e ) e O s m icrocont adore s são unidade s q ue rol pode m se r program as e m l inguage ns de al nív l com o por e xe m pl C. Exist m t o e , o e l inguage ns de m ais b aixo nív l(asse m b l e y), e m b ora se j m ais dif a ícilde de scre v r um e al gorit o, do pont de v a do proj ct a m o ist e ist do circuit Est program ação conf re aos o. a e circuit os digit ais const uídos it por, m icrocont adore s/m icroproce ssadore s, rol um a aut onom ia e int l e igência, q ue de out ra m ane ira se ria m uit dif . Graças a e st o ícil a “int l e igência” com e çaram a se r usados e m circuit q ue re q ue re m al a aut os gum onom ia e capacidade de de cisão m e diant f ore s e act e xt rnos. e Est as e norm e s v age ns ant originaram o apare cim e nt de circuit o os “int l nt s” e capaze s de proce ssar e e ige e re l acionar a m ais v ariada inf orm ação. Num sim pls aut óv l a ce nt ina e om e , ral (m icrocont adore s e m parall é capaz rol e o) de ao m e sm o t m po cont ar: a e rol com b ust ão, a e ne rgia consum ida, o ABS, o ESP e as m ais v ariadas f unçõe s. O uso de m icrocont adore s num R ob ô conf re -le rol e h a capacidade para se de sv de ob j ct iar e os, re conh e ce r a v oz e out ros sons, f r aze m ov e nt q ue v m um ob j ct o. Um im os ise e iv m icrocont ador pode se r usado e m apl rol ica-

Est M icrocont ador t m disponív is: e rol e e
- Tim e rs/Count r com P scalr e re e - M ódul de com paração, P m , capt os w ura - AD C de 10 b it s - Synch ronous Se rial ort(SSP com SP e I2C P ) I - Usart - P as I/O ort - ...

<4>

t m a de capa e
Q uando se com pra um P o cont údo da IC, e sua m e m ória EP O M S v m v R e azia. Se rá ne ce ssário re corre r a um “P rogram ador” (e x: P icSTAR T da M icroch ip… af ), im de e nv para a EP O M o código do b oot iar R l oade r. O b oot oade r é o program a q ue -l corre im e diat e nt após o " se t do P am e re " IC. Q uando corre , v t st a l a série e ai e ar inh v rif e icar se e st al á gum program a " out do ro l ado da l a" a t nt cont ar com e l. inh e ar act e Caso e xist a com unicação pe l l a a inh série /usb com o P rogram ador e nt e sse ão código se rá e scrit na m e m ória EP O M . o R Est t e ipo de sof w are (M P AB e nt out t L re ros) é disponib il izado pe l f ricant s a t os ab e roco de al guns e uros t al com o os program adore s, m as e xist m al rnat as e t e iv t o para program adore s com o para o ant sof w are , nom e adam e nt o P . t e ICP A m e m ória do P irá e st div IC ar idida. D uas de ssas div isõe s dize m re spe it à m e m ória o onde e st o b oot oade r e a out onde irá á -l ra se r arm aze nada o código re sponsáv l l e pe o f uncionam e nt do P t com o dados q ue o IC al se j guardados durant o m e sm o. am e P ara um a m e lor com pre e nsão do código h de se nv v olido é aconse láv l consul o h e t ar D at e e tdo P e m causa. ash IC Mais um a v z para sim plicar o raciocínio e if v os assum ir q ue se e st am ão a re al izar de v -driv rs para o cont o de um ice e rol proce sso t érm ico. Assim a t m pe rat e ura se rá dada por um Te rm opar. O s Te rm opare s ne ce ssit am de um a com pe nsação da sua j unção f ria, aq ui irá-se assum ir q ue e l é a f it por h ardw are e q ue à e nt e a rada do P IC ch e ga um sinal anal ógico com v ore s e nt al re 0e 5V . P ara cont ar a re sist rol ência irá-se re corre r a um P M (P se w idt m odul ion) com W ul h at dut y-cycl v e ariáv l e sincronizado com a e re de . P ara sim plicar a lit if e ura, não se irá f r aze re f rência a t e odos os b it dos re gist de s os conf iguração, para t suge re -se a consul al t a do dat e e t af de v rif ash im e icar o signif icado dos b it de cada re gist e m causa. s o
#DEVICE DRIVERS - PAP #include <pic.h> #include <stdlib.h> #include "sci.h" //////////CONSTANTES////////// #define TermCh 0 //canal termopar #define MEDIA 6 //N de leituras da ADC #define T1_10MS 0xC350 //t1 value at 10ms

D EV ICE-D R IV S ER
Ne st art e igo se rão ab ordados os principais de v ice driv rs para um P e IC. Est s de v e ice driv rs se rão a b ase para f uros proj ct e ut e os, de sde os m ais sim pls at aos m ais e é com plxos. P e xe m pl no cont o de e or o, rol t m pe rat e ura de um proce sso t érm ico, os de v -driv s t rão q ue : ice e e - Faze r lit e ura da t m pe rat e ura indicada pe l o se nsor (t rm opar) e -L igar e de sl a re sist igar ência de aq ue cim e nt o - L r e e scre v r de int rf s com o ut izador e e e ace il (e x: t cl do P displ ) e ado C, ay… Assum indo q ue o P j t m de v IC á e idam e nt e o b oot oade r conf -l igurado, passa-se ao de se nv v e nt do Sof w are q ue se rá olim o t de se nv v olido e m C e post riorm e nt e e com pil (M P AB… no f ado L ) orm at Int l e x. o e -H

Todos os re gist os e port os do P são IC t ados com o v rat ariáv is, f e uncional idade pe rm it pe l f e iro pic.h , pois e st indica ida o ich e ao com pil ador q uais os re gist do P e e m os IC q ue e nde re ço e b ancos de m e m ória e st ão. O f e iro sci.h é disponib il ich izado pe l a Microch ip e é onde e st ão de scrit os os prot ipos ót das f unçõe s usadas nas com unicaçõe s pe l port série (R S-232). a a A prim e ira t f a re al are a izar se rá conf igurar os port os I/O (P R T_X e O TR IS_X), e spe cif icando se são port de saída de os dados ou de e nt rada. O s port usados com o os

<5>

t m a de capa e
dos se nsore s é t v a q ue v de sde a ão ast ai m e dicina at à indúst é ria aut óv l O s om e . grande s av anços ne st áre as de v m -se à as e const e e v ução e div rsif ant ol e icação dos se nsore s. M as a m aioria de ls produz sinais e de am plude s it m uit o b aixas. Se rá ne ce ssário o se u corre ct o acondicionam e nt para q ue e st s possam o e se r proce ssados e usados por M icroproce ssadore s. É ne st f a ase q ue e nt ram as AD Cs (Anal ogic t D igit o al Conv rt r) e e pois conv rt m e e sinais anal ógicos e m sinais digit ais. O s P ICs t êm AD Cs inb ut idas, o q ue f it e m m uit o acila o proj ct de h ardw are (cust e o o, e spaço, consum o pot ência … )
void adc_read(unsigned char channel) // Lê uma entrada analóogica { ADCON0 = (channel << 3) + 0x81; //Enable ADC No canal Cannel //Acquisition time = 19.72uS delay_uS(22); /*Espera 22us (definida em delay.h) para carregar completamente Chold e depende da impedância da fonte do sinal.*/ ADGO = 1; }

e nt rada das AD C, int rrupt de v m se r e s e conf igurados com o e nt radas, ou se j os b it a, s dos re gist de v m f os e icar com o v or de 1. al A m icroch ip disponib il um conj o de iza unt f unçõe s para uso e inicial ização da USAR T.
// Function Prototypes: void Sci_Init(); void Sci_PutChar(unsigned char); unsigned char Sci_GetChar(void); unsigned char Sci_GetFERR(void); unsigned char Sci_CheckOERR(void); void Sci_PutStr(const char* ); void Sci_PutNum (unsigned int num, unsigned char n, unsigned char comma);

Est as f unçõe s pode m se r usadas e m q ualue r part do código, à e xce pção da q e Sci_Init f , unção para re sponsáv l pe l e a inicial ização da USAR T. Est f a unção t m e q ue se r inv ocada ant s de q ualue r um a e q das out ras, v o t ist odas as out ras f re m aze uso da USAR T. void Sci_Init() // 19.2kbps { BRGH = 1; /*high baud rate*/ SPBRG = 64; /*set the baud rate*/ SYNC = 0; /*asynchronous*/ SPEN = 1; /*enable serial port pins*/ CREN = 1; /*enable reception*/ SREN = 0; /*no effect*/ TXIE = 0; /*disable tx interrupts*/ RCIE = 0; /*disable rx interrupts*/ TX9 = 0; /*8-bit transmission*/ RX9 = 0; /*8-bit reception*/ TRISC7 = 1; /*RX*/ TRISC6 = 0; /*TX*/ TXEN = 1; /*enable the transmitter*/ } Um a das part s m ais im port e s é a e ant ob t nção de dados e xt rnos, prov nie nt s e e e e de se nsore s (t m pe rat e ura, pre ssão, h um idade , al ongam e nt os, posição, pie zoe l ricos, q uím icos … A apl éct ). icação

P ara dim inuir os e rros ine re nt s à m e dição, e norm al e nt m e f az-se um a m édia de conse cut as lit iv e uras da AD C. Supondo q ue o sinalprov nie nt do t rm opar j e e e á e st á de v idam e nt e acondicionado e dim e nsionado e nt um a possív lf ão e unção para aq uisição de dados da AD C se rá:

<6>

t m a de capa e
Assim , é ne ce ssário um de t ct e or de passage ns por ze ro, circuit o e sse im plm e nt e ado à cust de um sim pls a e t ransíst Est e v nt pode se r idênt or. e e o ico a m uit out os ros, t com o, o e nch im e nt de ais o um a f a de e spe ra de um b uf e r de um il f rout r, cont o de pe rif e rol éricos num P … C O cont o do dut cycl do P M se rá rol y e W v ariáv l e (0.01% a 9 9 ,9 9 % ) e de pe nde nt da e t m pe rat e ura (ne st caso). O v or do dut e al y cycl e st e ará de pe nde nt de um al e gorit o m de cont o (ram pa, P P … P rol I, I-D ). ara q ue se possam usar e st s al e gorit os é ne ce ssário m conh e ce r a dinâm ica do sinal(ov rsh oot e , t m po sub ida, t m po e st e lcim e nt ), e e ab e o… pois os act uadore s t êm nat zas f ure ísicas dist as e re age m de m ane iras dif re nt s. int e e Assim de nt do program a, com os dados ro ob t idos das conv rsõe s da AD C, cal a-se o e cul v or corre ct al o, para q ue o act uador ob e de ça aos re q uisit os. Ent um a possív l ina de at ndim e nt ão e rot e o às int rrupçõe s, f ndo uso do m ódul de e aze o P M e xist nt no P se rá: W e e IC,
… time = T1_10MSdutycycle*(T1_10MS/100); // duty_cycle em percentagem … void interrupt isr (void) { (1) if (INTF) { (2) TMR1L =0; (3) TMR1H =0; (4) CCP1CON=0b00000000; (5) CCP1CON=0b00001000; (6) TMR1ON=1; (7) CCPR1H= time>>8; (8) CCPR1L= time; (9) INTF=0; } (10)else if (CCP1IF) { (11) TMR1ON=0; (12) CCP1IF=0; } }

void read_term(void) { unsigned char i; adc_val=0; ADCON1=0x00; //left justified

for(i=0;i<MEDIA;i++) { adc_read(TermCh); while(ADGO); //espera pela conclusão da conversão adc_val +=ADRESH; // formata o resultado } adc_val/=MEDIA; //return value }

No caso do P 16f IC 877 e xist m 8 canais e para AD C (AN0..AN7). A AD C usada ne st e caso é de 8 b it = 2^8 = 256. Supondo q ue s se t m um sinalanal e ógico, à e nt rada da AD C, v ariáv l nt 0 e 5 v t garant e e re ol s, idos pe l acondicionam e nt do sinal e nt o o , ão para 0Vt m -se adc_v = 0 e para 5Vt m -se e al e adc_v = 255. Est s v ore s t rão q ue se r al e al e t ados, se f rat or ne ce ssário, para q ue t nh am um a corre spondência com a e grande za m e dida. No caso de se e st a act ar uar sob re um a re sist ência, e nt ão o P M t rá q ue e st W e ar sincronizado com a t nsão de re de . Est e e P M t rá um dut W e y-cycl v e ariáv l e e proporcional ao t m po de act e uação da re sist ência. A t écnica do P M é m uit W o pode rosa para cont ar rol circuit os anal ógicos (m ot s… at és de circuit ore ) rav os digit (P ). ais IC… P ara q ue e xist sincronização do P M a W com a re de (a m e nos de uns nanosse gundos de dif re nça) é ne ce ssário e q ue “o P saib a q uando é q ue e xist um a IC” e passage m por ze ro da t nsão de re de . e

<7>

t m a de capa e
(1) Te st a orige m da int rrupção. Com o a a e int rrupção e st a ocorre r no pino INT e á e nt ão a cada e v nt ge rado pe l Z CD e o o (ze ro cross de t ct e or) irá se r ge rada um a int rrupção. e (2)(3) Inicial o t e r1 a ze ro. iza im (4) Ne ce ssário para f r o re se t ao pino ccp, aze pois é a única m ane ira de col ocar o pino a ze ro após o int rrupt e . (5) Conf igura o t e r 1 a f im uncionar e m com pare m ode e a cada m at o pino ccp é ch act ado (5v iv ). (6) Act a o t e r1 (início de cont m ). iv im age (7)(8) V or a se r com parado com o t e r 1 al im ao q ual rá ge rado um m at se ch (9 ) L pa o b it q ue indica a orige m do im int rrupt e . (10)(11)(12) No caso de ausência de um e v nt no pino INT, e v a-se q ue o ccp e st j e o it e a inde f inidam e nt act o. e iv -P ara a m e dida de um a dist ância a q ue um rob ô e st de um ob j ct pode -se usar ul á e o, t rasons. Conh e cida a vl e ocidade de propagação (de pe nde nt das condiçõe s do e m e io), pode -se cal ar a dist cul ância, sab e ndo o t m po q ue o sinalde m orou a at e ingir o ob j ct e a v t (re fe xão). P e o ol ar l ara o cál o cul de sse t m po pode -se , após o l e ançam e nt do o ul t ra-som , iniciar a cont m num t e r e age im q uando se re ce b e r a re fe xão e nt l ão o de t ct e or irá ge rar um a int rrupção. e Conh e cido e st t m po o rob ô sab e rá a e e dist ância at ao ob j ct e t ará as de v é e o om idas pre cauçõe s. - Nos aut óv is o se gre do da re l om e ação pe rf orm ance /e conom ia, e st no corre ct á o cont o rol do com b ust e l usado ív na com b ust ão. O cál o da q uant cul idade usada, é de pe nde nt de m uit f ore s, com o a e os act conce nt ração de com b ust e lde spe rdiçado ív durant a com b ust e ão. Esse de spe rdício pode rá se r m e nsuráv là saída do m ot e or. Assim , graças a um se nsor q uím ico q ue m e ça a q uant idade de com b ust e l pode r-se -á ív , opt izar a com b ust im ão. Est opt ização a im se rá f it pe l ce nt ina, q ue e m b ora se j e a a ral a um a unidade com plxa, v o t r q ue e ist e cont ar v rol ários m e canism os (ABS, ESP … , ), pode se r v a ist com o v ários m icroproce ssadore s e m parall e o…

Concl usão
Tirando os porm e nore s da int rf e ace com o ut izador, e st s de v -driv rs, pode rão se r il e ice e usados e m m uit apl as icaçõe s:

<8>

R icardo R och a

a program ar
4 5 6 7 8 9 10 function printNome(){ print($this->nome); } } $obj = new User(); $obj->printNome(); ?>

Cl s asse
Ne st art e igo v os ab ordar as t am ão t m idas cl s de ph p, b e m com o e asse os se us const ore s, de st ore s e rut rut h e rança. V os t nt de m onst am e ar rar de um a f orm a sim pls e com plt e e a com o criar e ut izar as cl s e m il asse ph p (v rsão 5). e
Com e çam os por criar a nossa cl ass, para isso v os e scre v r o se guint código. am e e
1 2 3 4 5 6 7 8 9 <?php class User{ public $nome = "guest"; function printNome(){ print($this->nome); } } ?>

Com o pode m os v r na l a 8 v se r criado e inh ai at és do com ando ne w um ob j ct de rav e o nom e “ob j e st nom e pode se r q ualue r ”, e q um t com o se t asse de um a v al rat ariáv l e norm al Na l a 9 se rá pe dido ao ob j ct . inh e o “ob j q ue e xe cut o m ét ” e odo print Nom e () de f inido na cl “Use r”, e st pe dido é f it ass e e o at és da se guint sint rav e axe O b j ct -> e o Mét odo. Agora q ue j sab e m os com o criar um a cl á ass sim pls v os agora v r com o f e am e uncionam e para q ue se rv m os const ore s e e rut de st ore s de cl s. rut asse P isso v os usar o se guint código. ara am e
1 <?php 2 class User{ 3 public $nome; 4 public $email; 5 public $pass; 6 7 function __construct($nome, $email, $pass){ 8 $this->nome = $nome; 9 $this->email = $email; 10 $this->pass = $pass; 11 } 12 function getNome(){ 13 return $this->nome; 14 } 15 function printNome(){ 16 print($this->nome); 17 } 18 function getEmail(){ 19 return $this->email; 20 }

V os agora anal am isar o q ue f f it na oi e o, l a 2 f de cl inh oi arada um a cl de nom e ass “Use r”, e ssa cl ass cont ém um a v ariáv l e “nom e ”, com o v or “gue st com o se pode al ” v r na l a 3, na l a 5 é de f e inh inh inida a f unção print Nom e () q ue ao se r ch am ada irá im prim ir o v or da v al ariáv l“nom e ”. A e re f rência $ h is é ut izada para dize r q ue a e t il v ariáv la usar se rá a v e ariáv lde f e inida na cl m ais á f nt v os v r m e lor e st ass, re e am e h a re f rência. e Agora v j os com o usar a cl e am ass q ue criam os, para isso adicionam os o se guint e código f ora da cl at nção q ue o código ass, e adicionado não pre cisa de se r col ocado de nt do f e iro da cl ro ich ass, pode e at é de v se r col e ocado nout ro f e iro e ich im port ando a cl at és do incl . ass rav ude
1 2 3 <?php class User{ public $nome = "guest";

21 function getPass(){ 22 return $this->pass; 23 } 24 } 25 26 $obj=new User("guest", "guest@pap.pt", "123456");

<9 >

a program ar
27 28 29 30 31 $user = $obj->getNome(); $mail = $obj->getMail(); $pass = $obj->getPass(); } ?> O ut part im port e é a h e rança. Um a ra e ant cl asse pode h e rdar m ét odos e v ariáv is de e um a out cl ra asse usando a pal ra e xt nds av e na de cl aração com o pode m os v r a b aixo. e Um a cl asse ape nas pode h e rdar de um a out cl ra assa. Não é possív l e r um a cl e t asse a h e rdar de v árias cl s, m as é possív lt r asse e e v árias cl s a h e rdar um a só cl . O s asse asse ob j ct h e rdados pode m se r re de f e os inidos ou ut izados na sua f il orm a original at és da , rav ut ização da cl il ausul pare nt para f a :: unçõe s e se l para v f :: ariáv is. Um e xe m pl e o:
<?php class ClassPrincipal{ public $nome = "guest"; function printNome(){ print($this->nome); } } class SubClass extends ClassPrincipal{ public $email = "guest@pap.pt"; function printAll(){ print($this->email); parent::printNome(); } function printNome(){ parent::printNome(); } } $obj = new SubClass(); $obj->printAll(); $obj->printNome(); ?>

Com o pode m os v r é de f e inida um a cl ass “Use r”, com as v ariáv is “nom e ”, “e m ail e e ” “pass”. Foram t b ém de f am inidos os m ét odos ge t Nom e (), ge t ail e ge t ass() q ue Em () P re t orna cada um um a v ariáv l da cl e ass. Agora a nov idade , a f unção __const ruct (), l a 7. Est f inh a unção de v se r nom e ada da e f orm a com o se e ncont aq ui pre se nt . ra e A f unção __const ruct () é e xe cut ada aut at om icam e nt q uando um ob j ct de e e o cl ass é criado, t odo o código pre se nt e de nt de st f ro a unção se rá e xe cut ado q uando f criado o ob j ct ne st caso o m ét or e o, e odo __const ruct f de f () oi inido para re ce b e r t rês argum e nt os “nom e ”,”e m ail e “pass” e ” at uir e sse s v ore s às v rib al ariáv is de cl e ass de f inidas ant riorm e nt . Com o pode m os e e v r nas l as 8, 9 e 10 é ut izada a e inh il re f rência $ h is e o q ue o $ h is v f r e m e t t ai aze P uguês é dize r q ue a v ort ariáv l e nom e para a q ual l apont é a v e e a ariáv l cl e não e de ass as v ariáv is q ue f e oram dadas com o argum e nt os. Basicam e nt o $ h is de v se r e t e ut izado se m pre q ue nos re f rim os a um a il e v ariáv l const e ou f e , ant unção de f inidas na cl ass. Nas l as 26 a 29 pode m os v r com o inh e ut izar e st cl prim e iro criam os o ob j ct il a ass, e o com os v ore s dados ou se j na l a 26 v al a inh ai se r criado um ob j ct e m q ue as v e o ariáv is e “nom e ”, “e m ail e “pass” v t r os v ore s ” ão e al “gue st “gue st ”, @pap.pt e “123456”, l as ” inh se guint s v m os com o ut izar os m ét e e il odos para re t ornar os v ore s das v al ariáv is de e cl ass. P ara al ém da f unção __const ruct t m os () e t b ém a f am unção __de st ruct (), q ue ao cont rário da f unção __const ruct e st é (), a e xe cut ada q uando o ob j ct é de st e o ruído, ou se j q uando é “apagado”, não v os e nt a am rar e m m aior de t h e v o se r um m ét al ist odo de b aixa im port ância.

Foram de f inidas duas cl s a cl asse asse “Cl rincipal e a cl assP ” asse “Sub Cl ass”. A cl asse “Sub Cl t m ace sso a t ass” e odos os ob j ct da e os cl asse “Cl rincipal A f assP ”. unção print l al () ut iza a f il unção print Nom e () de f inida e m “Cl rincipal assim print l para al de assP ” Al (), ém im prim ir o v or da v al ariáv l “m ail v e ”, ai t b ém im prim ir o v or da v am al ariáv l e “nom e ” com o e st de f á inido na “Cl rincipal assP ”. P m os t b ém v r um e xe m pl de ode am e o sob re carre gam e nt de f o unçõe s e m q ue se cria um a f unção com o m e sm o nom e do de f inido na “Cl rincipal e q ue v assP ” ai e xe cut a print ar Nom e () da “Cl rincipal assP ”.

<10>

Fáb io Corre ia

a program ar
require 'gtk2' Gtk.init window = Gtk::Window.new( Gtk::Window::TOPLEVEL ) window.show Gtk.main

R ub y + GTK 2
Int rodução à criação de GUIs
Ne st art e igo ire m os dar um a pe q ue na int rodução à criação de GUIs, usando R ub y e a b ib l e ca iot GTK 2.
R ub y é um a l inguage m de script ing ope nsource int rpre t e ada q ue , e m b ora pouco usada, possui um grande pot ncial P e . ossui al gum as se m e lanças com P h on e J a, h yt av se ndo orie nt ada a ob j ct e os. Ganh ou grande not il ab idade at és do R ub y on rav R ail um a f s, ram e w ork de st inada à criação de pl af at orm as w e b , b ase adas e m b ase de dados. Usare m os GTK 2 para a criação do GUI, b ib l e ca b ase do am b ie nt gráf iot e ico Gnom e , dos sist m as e ope rat os iv GNU/L inux. M as a b ib l e ca pode se r iot inst ada nout al ros sist m as, com o o e W indow s. P ara inst ar e st b ib l e ca al a iot conv ém se guir as inst ruçõe s da página of icial h t p://rub y-gnom e 2.source f : t orge .j p. Exist m v e ários pacot s para dif re nt s e e e dist uiçõe s GNU/L rib inux e a possib il idade de com pil at és do código-f e . ar rav ont Escusado se rá dize r q ue é ne ce ssária a inst ação prév de R ub y, j incl al ia á uída e m al gum as dist uiçõe s. rib P e iro ire m os criar ape nas um a j l rim ane a, com t odas as opçõe s norm ais, com o re dim e nsionar m inim izar, m axim izar, e m q ue ape nas f ch ar a j l não é possív l e ane a e , se m f izar o proce sso. inal

Bast copiar o código acim a, guardar o a f e iro com o gt .rb , por e xe m pl e ich k o, e scre v r na l a de com andos 'rub y e inh gt .rb '. Se t k udo corre r b e m , pode rão v r e um a j l de 200x200 de t anh o. Agora ane a am a e xpl icação de t h ada. al

require 'gtk2'

Est l a irá carre gar a b ib l e ca rub ya inh iot GTK 2, para pode rm os usar os se us m ét odos.
Gtk.init

Est com ando irá inicial a AP de m odo e izar I, a pre pará-l para se r usada. A part de a ir agora pode m os com e çar a criar os ob j ct e os q ue irão com por o GUI.
window = Gtk::Window.new( Gtk::Window::TOPLEVEL ) window.show

Aq ui é criada a j l principal sob o ane a , nom e de w indow . O argum e nt passado à o f unção, Gt ::W indow ::TO P EV , indica k L EL q ue a j l criada irá usar as ane a caract ríst e icas norm ais das j l do ane as am b ie nt gráf e ico, b ordas, de coraçõe s, ... O com ando se guint irá m ost e rar a j l no ane a e crã.

<11>

a program ar
Gtk.main

At uam um nom e ao program a e corram rib no. O re sul t ado de v rá se r se m e lant a e st : e h e e

Est ch am ada irá indicará q ue o program a a irá e spe rar agora e re cole r t h odos os e v nt q ue ocorre re m , com o o carre gar e os de um b ot o arrast da j l ... ão, ar ane a, No e xe m pl se guint , ire m os j criar um o e á b ot ão, adicioná-l à nossa j l e o ane a e xe cut um com ando cada v z q ue e st ar e e f pre ssionado. O com ando se rá e scre v r or e “O l na l a de com andos. O program a á!” inh passará t b ém a e nce rrar se m prob lm as. am e
require 'gtk2' def delete_event( widget ) return false end def destroy( widget ) Gtk.main_quit end Gtk.init window = Gtk::Window.new( Gtk::Window::TOPLEVEL ) window.set_default_size( 200, 200 ) window.signal_connect( "delete_event" ) do delete_event( window ) end window.signal_connect( "destroy" ) do destroy( window ) end button = Gtk::Button.new( "Olá!" ) window.add( button ) button.signal_connect( "clicked" ) do puts "Olá!" end button.show window.show Gtk.main

def delete_event( widget ) return false end def destroy( widget ) Gtk.main_quit end

Est as duas f unçõe s irão pe rm it ir o e nce rram e nt e de st o ruição da j l ane a. Ape nas ne ce ssit am de sab e r q ue a f unção de lt _e v nt de v rá re t e e e e ornar f se , de al m odo a proce de r-se à de st ruição da j l ane a. Est f a unção pode rá se r usada para e v ar it q ue a j l f ch e l ane a e ogo, e pe rgunt ao ar ut izador se de se j m e sm o sair. il a
window.set_default_size( 200, 200 )

Est com ando irá de f e inir o t anh o da am j l para 200 por 200 pixe l Est ane a s. e com ando é ne ce ssário de st v z porq ue , a e se m e st , a j l iria t ar o t anh o e ane a om am m ínim o do b ot q ue ire m os adicionar. ão
window.signal_connect( "delete_event" ) do delete_event( window ) end window.signal_connect( "destroy" ) do destroy( window ) end

A f unção signal _conne ct pe rm it capt e urar um e v nt q ue t nh a ocorrido e m al e o e gum ob j ct Ne st caso o ob j ct o é capt e o. e e iv urar os e v nt de f ch o e de st e os e ruição da j l e ane a ch am ar as f unçõe s ant riorm e nt criadas. e e

<12>

a program ar

button = Gtk::Button.new( "Olá!" ) window.add( button ) window.set_default_size( 200, 200 )

Criam os um ob j ct do t e o ipo But on, com a t e t ue t de O l O com ando a se guir iq a á!. adiciona o b ot criado à nossa j l ão ane a.
button.signal_connect( "clicked" ) do puts "Olá!" end

window.title = "Hello World" window.border_width = 5 window.signal_connect( "delete_event" ) do delete_event( window ) end window.signal_connect( "destroy" ) do destroy( window ) end box = Gtk::VBox.new( false, 0 )

Usam os nov e nt am e a f unção signal _conne ct m as de st v z com o nosso , a e b ot ão, para v rif e icarm os q uando e st é e pre ssionado. Se m pre q ue f pre ssionado, or o com ando put irá e scre v r na l a de s e inh com andos O l á!.
button.show window.show Gtk.main

window.add( box ) button = Gtk::Button.new( "Cumprimentar" ) text = Gtk::Label.new( "" ) button.signal_connect( "clicked" ) do text.label = "Olá!" end

Final e nt , m ost m e ram os os dois ob j ct e os criados no e crã e e spe ram os para q ue ocorram os e v nt e spe rados. e os

P ara t rm inar, ne st úl o e xe m pl irá e e t im o de m onst rar o uso de caixas para cont r e e organizar div rsos ob j ct e o uso de um e e os nov t o ipo de ob j ct o L e l e o, ab .
require 'gtk2' def delete_event( widget ) return false end def destroy( widget ) Gtk.main_quit end Gtk.init window = Gtk::Window.new( Gtk::Window::TOPLEVEL )

box.pack_start( button, true, true, 5 ) box.pack_start( text, true, true, 5 ) button.show text.show box.show window.show Gtk.main

D e st a v z de f e inim os m ais al gum as proprie dade s da j ane l q ue são út is e m a, e m uit os casos. O re sul t ado de v rá se r e se m e lant a e st : h e e

<13>

a program ar
box.pack_start( button, true, true, 5 ) box.pack_start( text, true, true, 5 )

window.title = "Hello World" window.border_width = 5

O prim e iro com ando de f ine o nom e da j l q ue irá apare ce r na b arra de t ul ane a, ít o. O se gundo com ando de f ine um a b orda int rna de 5 pixe is, ou se j a dist e a, ância a q ue os ob j ct se de v rão e ncont e os e rar da b orda e xt rior da j l e ane a.
box = Gtk::VBox.new( false, 0 ) window.add( box )

Agora adicionam os o b ot e a e t ue t à ão iq a caixa, usando a f unção pack _st . Est art a f unção v adicionando os ob j ct um a ai e os se guir ao out pre e nch e ndo a caixa, ao ro, cont rário de pack _e nd, q ue f o opost O az o. prim e iro argum e nt indica o ob j ct a o e o adicionar. O se gundo argum e nt indica se o os ob j ct de v rão e xpandir-se , de m odo e os e a q ue a caixa ocupe o m áxim o de e spaço possív lO t rce iro argum e nt f e . e o unciona se o se gundo f v rdade iro, e de f or e ine se o e spaço ganh o pe l e xpansão da caixa a de v rá se r ocupado pe l ob j ct e os e os, ou ape nas por e spaçam e nt o. O q uart e o úl o argum e nt de f t im o ine o e spaçam e nt o q ue o ob j ct de v rá t r, e m pixe l à v t e o e e s, ol a de l, de nt da caixa. e ro E aq ui t rm ina e st int e a rodução à criação de GUIs usando o GTK 2. Se f icaram int re ssados pe l e xe m pl q ue v e os os iram , pode rão ir ao sit of e icial (h t p://rub yt gnom e 2.source f orge .j p) e procurar m ais inf orm açõe s sob re dif re nt s ob j ct e os e e e os se us at ut Est é, se m dúv rib os. a ida, um a das m e lore s e m ais sim pls b ib l e ca para a h e iot criação de GUIs.

Criam os um ob j ct do t e o ipo V Box, ou se j a, um a caixa v rt . Est t e ical e ipo de caixas organiza os ob j ct e os q ue cont êm v rt m e nt , e nq uant as H Box o f m e ical e o aze h orizont m e nt . O prim e iro argum e nt al e o de f ine se o e spaço q ue cada ob j ct irá e o ocupar de v rá se r h om ogéne o ou não, e com os re st e s ob j ct ant e os da caixa. O se gundo argum e nt de f o ine o e spaçam e nt o q ue os ob j ct irão t r e nt si, e m pixe l e os e re s. O se gundo com ando adiciona a caixa à j l Assim a j l pode rá cont r ane a. ane a e ob j ct de nt da caixa. e os ro
text = Gtk::Label.new( "" ) button.signal_connect( "clicked" ) do text.label = "Olá!" end

Criam os o ob j ct de t e o ipo L e l se m nada ab , e scrit com o pode m v r pe l argum e nt o, e o o f orne cido. D e pois al ram os o com ando q ue t e ocorre q uando o b ot ão é pre m ido, para e scre v r al na e t ue t q ue criám os: O l e go iq a á!.

<14>

Sérgio Sant os

a program ar

O s re cursos b ásicos para q ue m q ue r program ar e m J aScript são um e dit de av or t xt sim pls para e scre v r o código e um e o e e b row se r para o t st e ar.

J aScript av
Int rodução
J aScript é um a l av inguage m m uit sim pls o e e de f ácil apre ndizage m . P ossui um a sint axe (f orm a de e scrit se m e lant ao a) h e J a, C, C+ + , P P Foi criada para t r um a av H . e ut ização w e b b ase d por Bre ndan Eich da il Ne t scape e m 19 9 5, com o um a e xt nsão e para o b row se r Nav igat v or 2.0, com o principal propósit o de pe rm it ir um a int ract idade e iv supe rior à q ue se conse guia com o H TM L e para at nde r e principal e nt às se guint s ne ce ssidade s: m e e - V idação de f al orm ul ários e m cl ntside ; ie - Int ração com a página. Assim , f f it e oi e a com o um a l inguage m de script . Exist m e v árias im plm e nt e açõe s J aScript com l iras dif re nças e nt av , ige e re o st andard de f inido pe l ECM A, a im plm e nt e ação da Ne t scape e im plm e nt e ação da M icrosof . t de si: a a

O J aScript é um a l av inguage m e m b e b ida no se io do H TM L é orie nt , ada a ob j ct e e os a e v nt q ue ace de do D O M do b row se r. e os É um a l inguage m inde pe nde nt e da pl af at orm a onde corre . É um a l inguage m q ue não é com pil e é int rpre t ada e ada pe l o b row se r, b ase ando-se e m ob j ct e os.

P e ncial ot idade s do J aScript a t r av e e m cont a:
- ge rar código H TM L ; - re agir conf orm e as acçõe s do v ant ; isit e - ge rar cont údos dinâm icos; e - v idar f al orm ul ários; - criar e f it gráf e os icos.

V age ns ant J aScript av :

da

ut ização il

do

-f ácil apre ndizage m ; - não e xige re cursos se rv r side ; e - é rápida por se r int rpre t e ada no b row se r; - e xist m m uit re cursos na Int rne t e os e .

D e sv age ns ant J aScript av :

da

ut ização il

do

A principalcaract ríst do J aScript é a e ica av f orm a com o int rage com o b row se r, e pode ndo ace de r a ob j ct e os. Assim , para um a b oa program ação e m J aScript é av ne ce ssário conh e ce r o D O M (D ocum e nt O b j ct Mode lde cada b row se r. D e v aos e ) ido b row se rs t re m e DO M dif re nt s e e é ne ce ssário conh e cê-l os e spe cif icam e nt , e daí v m as div rsas im plm e nt e e e açõe s do J aScript av . Á sua união com o CSS ch am a-se de D H TML assim usando o J aScript é , av possív l odif e m icar dinam icam e nt os e st os e il das páginas. A l inguage m Act ionScript da Macrom e dia b ase ia-se no st andard do J aScriptcriado pe l ECMA. av a

- o código pode se r f m e nt copiado pois acil e f e xpost ica o; - não é um a b oa f rram e nt para int ragir e a e com b ase de dados; - é m e nos v rsát q ue out e il ras l inguage ns ge néricas.

Est ura dos rut J aScript av

program as

em

O J aScript é norm al e nt inse rido e m av m e f e iros H TM L e é col ich ocado de nt das ro m arcas <script </script > >. O código t m de e st ou e nt as t e ar re ags <h e ad> </h e ad> ou e nt as t re ags <b ody> </b ody>.

<15>

a program ar Q ue st s de Sint õe axe
O J aScript é se nsív l a m aiúscul e av e as m inúscul de st f as, a orm a e scre v r 'Nom e ' e e 'nom e ' não é a m e sm a coisa e v se r l ão idas com o inde pe nde nt s um a da out e ra. O s e spaços não pre e nch idos são ignorados, por isso de ixar e spaçam e nt é ape nas um a o q ue st de e nt ndim e nt pois o J aScript ão e o av não v not dif re nças. ai ar e Todas as inst ruçõe s de v m t rm inar com e e um pont e v o írgul (; a ). É aconse láv l de sde o início a col h e ocar com e nt ários no código para o t ornar de m ais f ácil lit e ura e e dição. P ara inse rir com e nt ários pode e scre v r e nt e re os de l it im adore s '/*' e '*/' ou e nt ão '//' e e scre v r at ao f e é im da l a, t nh a e m inh e at nção q ue os com e nt e ários v ão se r ignorados pe l J aScript por isso não o av , conv ém col ocar código de nt ro de um com e nt ário pois e st não se rá l e ido. Se pre t nde q ue o script q ue e st e r a e iv de se nv v r e m ole J aScript só av se j a apre se nt ado na página caso o b row se r e m q ue st e st j b e m conf ão e a igurado e suport e J aScript col ue o se u código de nt de av oq ro '<!--' e '-->', com o m ost o e xe m pl ra o:
<html> <head> <title>Inserir código seguro</title> </head> <body> <script type="text/javascript"> <!-document.write("bla bla bla") //escreve bla bla bla na página --> </script> </body> </html>

se guir as se guint s re gras: e 1 - a e xt nsão do f e iro t m de se r .j e ich e s 2 - de v se r inv e ocado a part de um ir f e iro H TM Lcom a se guint f ich e orm a <script src= " oTal e rno.j ></script Ext s" > 3 - de nt do f e iro e xt rno não se de v ro ich e e incl a t <script ne m a t </script uir ag > ag > D e st f a orm a um f e iro e xt rno de v t r ich e e e e st f a orm at ação:
document.write("bla bla bla")

Tipos de dados
Exist m v e árias possib il idade s de t ipos de dados e m J aScript e nt e ls de st av re e acam se os num éricos, os l ógicos, as st rings, o nul e o unde f d. O s num éricos com o o l ine nom e indica pode m arm aze nar v ore s al int iros e com pont fut e o l uant e pode m e f r part de ope raçõe s de arit m ét aze e e ica com o a som a, a sub t racção, a m ul icação t ipl e a div isão. O s v ore s l al ógicos ape nas pode m arm aze nar dois v ore s o t al rue (v rdade iro) e o f se (f so). O s v ore s e al al al st rings são cade ias de caract re s, o m aior e núm e ro q ue um a st ring pode cont r e de pe nde do b row se r e m q ue st ãoe os v ore s st al rings são de l it im ados por apóst e (') ou por aspas(" V ore s nul rof ). al l são v ore s e spe ciais, re pre se nt um al a ob j ct nul não de v se r conf e o o, e undido com um a v ariáv lnão inicial e izada, pois o v or nul e xist e e xist e m m e m ória. O al l e e v or unde f d signif al ine ica q ue a v ariáv l e não f oi criada, inicial e nt t m e odas as v ariáv is se e ncont e ram ne st e st e ado.

M ode l o de D ocum e nt o

O b j ct e os

do

Fich e iros Ext rnos e
Q uando é pre t ndido ut izar um código e il por v árias páginas ou, por um a q ue st de ão organização, é possív l e conv nie nt e e e col ocá-l num f e iro e xt rno q ue de v o ich e e

O D O M (D ocum e nt O b j ct M ode l de um a e ) página é um a re pre se nt ação h ie rárq uica, em f orm at de árv . D e st f o ore a orm a, a raíz é a j l do b row se r, daí ram if ane a ica-se e m parágraf os, t e l ab as, f orm ul ários, e nt re out ros. O J aScript pe rm it ace de r de um a f av e orm a dinâm ica aos v ários ram os, lndo-os e , se e ne ce ssário, al rando os se us v ore s. t e al

<16>

a program ar
Exist m v e ários st andards dos D O M, o da W 3C, o da Ne t scape e o do Int rne t e Expl r. O D O M do IE im plm e nt as ore e a re com e ndaçõe s do W 3C m as é m ais v o ast q ue e st . e As f unçõe s só são e xe cut adas no m om e nt o e m q ue e st são inv as ocadas, por isso as f unçõe s pre se nt s no e xe m pl 3 só são e o e xe cut adas no onl oad do b ody e no onunl do b ody re spe civ e nt . oad am e

Ev nt e os
O Jav aScript é um a l inguage m orie nt ada principal e nt a e v nt m e e os e ob j ct e os. O s e v nt e os pode m se r produzidos de duas f orm as: pe l sist m a ou pe l ut izador. P l o e o il e o sist m a q uando re sul e t am do f o de act carre gar ou de scarre gar um a página, pe l o ut izador na m e dida e m q ue pode int ragir il e com as suas acçõe s, at és de sob re por o rav rat ou carre gar num b ot o ão, e st s são os e e xe m pl m ais com uns ape sar de e xist m os ire m uit m ais. os

Ev nt de ut izador e os il
O s e v nt e os pode m se r ut izados para il int ragir com o ut izador, de st f e il a orm a só são inv ocados por acção de st , assim é e possív lt e ornar a página m ais at ract a e iv m ode l ada para cada ut izador pois não il apre se nt t a udo m as só o q ue o ut izador il pre t nde . e
<head> <script language="Javascript"> function skin1() { document.bgColor='red'; } function skin2() { document.bgColor='green'; } function skin3() { document.bgColor='yellow'; } function skin4() { document.bgColor='#FFFFCC'; } </script> </head> <body> <form name="cores"> <input type="radio" name="campo" onclick="skin1();">Fundo vermelho<br> <input type="radio" name="campo" onclick="skin2();">Fundo verde<br> <input type="radio" name="campo" onclick="skin3();">Fundo amarelo<br> <input type="radio" name="campo" onclick="skin4();">Fundo amarelo<br> </form> </body>

Ev nt do Sist m a e os e
Um e xe m pl de re spost a e v nt do sist m a: o a e os e
<html><head> <script language="JavaScript"> <!-function entra(){ window.alert("Bem vindo"); } function sai(){ window.alert("Volte sempre"); } --> </script> </head> <body onload="entra();" onunload="sai();"> <p>Texto da página...</p> </body></head>

No <h e ad> de f m -se duas inst ine ruçõe s, a " nt e ra()" e a " sai()" Na prim e ira f . unção (f unct ion), " nt e ra()" f surgir um a j l , az ane a de av no ce nt do e crã q uando a página iso ro é carre gada q ue m ost um a m e nsage m , ra " m v Be indo, e xe m pl de um a re accao a um o e v nt do sist m a" Na se gunda f e o e . unção (f unct ion), " sai()" f surgir um a j l de , az ane a av iso q uando se sai da página com a m e nsage m " ol se m pre " V t e .

<17>

a program ar
Ne st e xe m pl o v ant da página pode e o isit e e scole r q ue cor q ue r dar ao b ack ground. h No e nt o se o ut izador sair da página a ant il sua e scola se rá pe rdida. D e st f h a orm a é m ost rado um a f orm a de o J aScript av int ragir com o v ant . e isit e

D e cl arar um a v ariáv l é m uit sim pls, e o e com o pode rá v r no e xe m pl se guint . e o e

V ariáv is e
V ariáv l um a posição de m e m ória onde é e é possív larm aze nar ce rt inf e as orm açõe s. As v ariáv is são re pre se nt e adas por nom e s de nom inados ide nt icadore s q ue t if êm um a e st ura de f rut inida: 1. D e v m iniciar ob rigat e oriam e nt por um a e lt ou pe l sím b ol " " e ra o o $; 2. A part daí al de lt ir ém e ras, " " pode $ cont r dígit e os(0 at 9 ). é D e se guida v se r m ost ai rado um e xe m pl o de m anipul ação de v ariáv is: e
<html><head></head> <body> <script type="text/javascript"> var mensagem="Aqui está a mensagem"; //define a variável mensagem document.write(mensagem); document.write( "<p>"+mensagem+"</p>"); </script></body></html>

var nome; var idade; var pais="Portugal";

Com o pode ob se rv no e xe m pl ant rior ar o e de cl arar um a v ariáv l b ast e sim pls. e é ant e

Tipos de V ariáv is e
Em J aScript não é ne ce ssário indicar o av t ipo de v ariáv l e com a q ual v t alar se ai rab h de v ido às v ariáv is e m J aScript pode re m e av arm aze nar dif re nt s t e e ipos de dados.

Concl usão
Ne st prim e ira part do art a e igo de J aScript av f oram ab ordados t m as b ásicos e iniciais da e program ação com J aScript No e nt o, av . ant não f icam os por aq ui pois de v ido à grande e xt nsão do art e igo, e st v se r div e ai idido e m duas part s um a de l A prim e ira part é a e as. e q ue acab aram de lr, a se gunda part sairá e e na próxim a e dição da re v a, na q ual ist v os am ab ordar ope radore s, f unçõe s, inst ruçõe s condicionais (if , sw it ), ch inst ruçõe s it rat as (f e iv or, w h il, do-w h il, e e cont inue , b rak e ), program ação orie nt ada a ob j ct (P O ) e v ct s. e os O e ore

D e cl aração de V ariáv is e
É possív lde cl e arar um a v ariáv lde duas e f orm as m as só ire m os ab ordar um a de l a as, m ais ut izada, q ue consist e m ut izar um a il e il pal ra re se rv av ada " ar" Um a v v . ariáv lq ue e não t nh a sido inicial e izada, possui o v or al de " unde f d" e t nh a e m at nção q ue o ine , e e J aScript é se nsív l a m aiúscul e av e as m inúscul ou se j lt as, a, e ras m inúscul e as m aiúscul as são dif re nt s, e e port o, ant unde f d e nulde v m se r e scrit se m pre ine l e os e m lt m inúscul Se um a v e ra as. ariáv l é e de cl arada ape nas, com o com ando " ar" o v , se u cont údo é " e unde f d" ou NaN (Not a ine Num b e r), caso e st j e a num cont xt e o num érico.

<18>

J oão P re ira e

t orial ut

Ex:
Dim nomeArray(,) As String

V isual Basic.NET 3ª P e art
Arrays
Um array é conh e cido com o um a l a, no ist caso de se r uni-dim e nsionalou um a m at , riz no caso de se r b i-dim e nsionale é um a das , m ais im port e s e st uras de dados e ant rut t b ém um a das m ais sim pls. Um array é am e const uído por um nom e e por um it núm e ro, de nom inado de índice . Em V B.NET, a prim e ira posição do array é se m pre no índice 0, ao cont rário do q ue acont cia no V e B6, podia-se de f inir se a posição 0 ou 1 se ria a inicial . - nom e Array(índice ) - nom e Array(0) – P e ira posição rim - nom e Array(Ub ound(nom e Array)) – Úl a posição t im

OU
Dim nomeArray(10, 10) As String 'Array com duas dimensões de 10x10'

- Mul t i-dim e nsional
D im nom e Array(num e ro t al e lm e nt ot de e os – 1, num e ro t al e lm e nt – 1, num e ro ot de e os t al e lm e nt – 1, e t as Tipo de D ados ot de e os c) (num e ro t al e lm e nt – 1) – t rá q ue ot de e os e se r o v or t alde e lm e nt m e nos 1, al ot e os razão pe l q ualé indicada com o prim e ira a posição, a posição 0. Um array de cl arado com o nom e Array(9 ) irá suport ar 10 posiçõe s, ou se j de 0 a 9 . a, Q uando t alam os com arrays, por v ze s rab h e v m o-nos ob rigados a re dim e nsiona-l pois e o, não pode m os de f inir um a dim e nsão f ixa para o m e sm o. P ara f rm os e st aze a ope ração, ut izam os o R e D im . O R e D im é il usado para al rar o t anh o de cada t e am dim e nsão do array, m as nunca pode al rar t e o núm e ro de dim e nsõe s ou t ipo de dados do m e sm o. O q ue o R e D im f é apagar o az array act uale criar um nov array com as o de f iniçõe s indicadas no R e D im .
Dim nomeArray(10, 10) As String 'Array com duas dimensões de 10x10' ReDim nomeArray(10, 15) 'Redimensiona o array para 15 elementos na 2ª dimensão'

D e cl aração de arrays
- Uni-dim e nsional
D im nom e Array(num e ro t al ot de e lm e nt – 1) as Tipo de D ados e os

Ex:

Dim nomeArray(3) As String 'Declara o array com 4 elementos'

OU
Dim nomeArray() As String = {"elemento1", "elemento2", "elemento3", "elemento4"} 'Declara o array e atribui valores'

- Bi-dim e nsional
D im nom e Array(num e ro t al ot de e lm e nt – 1, num e ro t al e lm e nt e os ot de e os – 1) as Tipo de D ados

Com o o array act ual é apagado, t oda a inf orm ação cont ida é igual e nt e l inada. m e im P ara pode rm os m ant r e ssa inf e orm ação, t rm os de usar j am e nt com o R e D im , o e unt e P se rv . Um re e dos inconv nie nt s na e e ut ização do P se rv , é q ue ape nas pode rá il re e se r al rada a ul a dim e nsão do array, t e t im t ndo q ue m ant r o núm e ro de e lm e nt e e e os das out ras.

<19 >

t orial ut
Cre at Inst e ance
ReDim Preserve nomeArray(15, 10) 'Redimensiona o array para 15 elementos na 1ª dimensão e mantem a informação armazenada'

Inicial um a nov inst iza a ância da cl asse array.

Eq ual (h e rdado de O b j ct s e )

O s arrays possue m com o q ualue r out q ra cl asse do V B.NET um conj o de m ét unt odos e proprie dade s.

D e t rm ina se duas inst e âncias de ob j ct e os são iguais.

Ge t e ngt L h

P roprie dade s
IsFixe dSize
Indica se o array t m um t anh o f e am ixo.

O b t o num e ro de e lm e nt de um a ém e os dim e nsão e spe cif icada de um array.

Ge t ow e rBound L

O b t o m e nor índice inf rior da ém e dim e nsão e spe cif icada e m um array.

IsR e adO nl y
Indica se o array é som e nt lit e e ura (re adonl y).

Ge t Type (h e rdado de O b j ct e ) Ge t Uppe rBound (Eq uiv e ao al UBound do V B6)

O b t o t da inst ém ipo ância act . ual

IsSynch ronize d
Indica se o ace sso ao array é sincronizado (t re ad-saf ). h e

O b t o índice supe rior da dim e nsão ém e spe cif icada num array.

L ngt e h
O b t o t al e lm e nt e m t ém ot de e os odas as dim e nsõe s do array.

Ge t al V ue
O b t o v or de um e lm e nt de f ém al e o inido no array.

R ank
O b t o núm e ro de dim e nsõe s do array. ém

Inde xO f
Re t orna o índice da prim e ira ocorrência de um v or e m um array de um a dim e nsão. al

SyncR oot
O b t um ob j ct q ue pode se r usado ém e o para sincronizar o ace sso ao array.

Init ize ial
Inicia cada e lm e nt de um array e o ch am ando o const or padrão. rut

Mét odos
Clar e
D e f o int rv o dos e lm e nt de um ine e al e os array para ze ro, para f se ou para nul al l .

R e v rse e
Inv rt a orde m dos e lm e nt de um e e e os array de um a dim e nsão.

Se t al V ue
D e f o e lm e nt e spe cif ine e o icado e m um array para um v or de f al inido.

Cl one
Cria um a copia do array.

Sort
O rde na os e lm e nt de um array de um a e os dim e nsão.

Copy
Copia a se cção de um array para out ro array e re al o cast iza ing e o b oxing re q ue rido.

ToSt ring (inh e rit d f e rom O b j ct e )
Re t orna um a st ring q ue re pre se nt o a ob j ct act . e o ual
(inf orm açõe s re t iradas de w w w .m acorat i.ne t t )

CopyTo
Copia t odos os e lm e nt de array de um a e os dim e nsão para out array. ro

<20>

t orial ut Fich e iros
P ara t alarm os com f e iros e m rab h ich V B.NET re corre m os q uase se m pre às cl s do Syst m .IO , e para isso, t m os asse e e q ue f r o im portde st . aze e
Import System.IO

L r um f e iro e ich
Após f rm os o im portdo nam e space IO , aze t m os disponiv is as cl s para a e e asse m anipul ação de f e iros. P f r a lit ich ara aze e ura de um f e iro ire m os re corre r à cl ich asse St am R e ade r. Est cl re a asse possui m ét odos com o o R e adL (pe rm it -nos lr o f e iro ine e e ich l a a l a), o R e adToEnd (pe rm it -nos lr inh inh e e o f e iro do se u inicio at ao f e carre gáich é im l num a v o ariav l ob j ct e nt out e ou e o), re ros.
Imports System.IO Module Module1 Sub Main() Dim strFicheiro As String = "C:\ficheiro.txt" 'Abre o ficheiro' 'Modo = Abertura | Tipo de Acesso = Leitura | Acesso de outros processos = Leitura' Dim fs As New FileStream(strFicheiro, FileMode.Open, FileAccess.Read, FileShare.Read) 'Carrega o stream no StreamReader' Dim sr As New StreamReader(fs) 'Imprime o conteudo do ficheiro no ecra' Console.Write(sr.ReadToEnd) 'Liberta o ficheiro' sr.Close() Console.ReadLine() End Sub End Module

P m anipul os um f e iro, ant s ara arm ich e ne ce ssit os de criar um canal am para e sse m e sm o f e iro, e para isso usam os o ich FilSt am . O FilSt am pe rm it -nos e nt e re e re e ão a criação de sse canale pode rá se r de f , inido o m odo de ab e rt ura do f e iro, ou se j se ich a, irá se r de lit e ura e /ou e scrit a.
Dim ficheiro as New FileStream (Nfich,FileMode,FileAccess,FileShare)

P indicarm os o m odo de ab e rt ara ura do canal il ut izam os o e num e rador FilMode . O e FilMode é const uido pe l se guint s e it os e m e m b ros:

Appe nd
Ab re o f e iro para e scrit e posiciona-se ich a no f do m e sm o. Caso não e xist o f e iro im a ich e nt cria um nov ão o.

Cre at e
Ab re o canal para e scrit ou lit a e ura e e scrit a e apaga o cont údo caso o f e iro e xist e ich a, se não cria um nov o.

Escre v r um f e iro e ich
P ara e scre v r num f e iro ut izam os a e ich il cl asse St am W rit r. Com e st cl re e a asse pode m os e scre v r num f e iro usando e ich v ários t ipos de codif icação (UTF-8, ASCII, UNICO D E, e t c). O s m ét odos W rit e e W rit l são os ut izados para a e scrit e ine il a e m f e iros. O Fl e o Cl são t b ém ich ush ose am m ét odos im port e s ant da cl asse St am W rit r. Com o os dados e st re e ão arm aze nados em b uf e rs f e não dire ct e nt no f e iro, de v -se inv am e ich e ocar o m ét odo fush para q ue se j e scrit no l a os f e iro, ou e nt o m ét ich ão odo Cl para q ue ose f orçe a e scrit e f ch e a st am . a e re

Cre at Ne w e
Cria um nov f e iro para e scrit o ich a.Caso e xist dá um e rro. a

O pe n
Ab re o f e iro para e scrit ou lit ich a e ura e posiciona-se no inicio do m e sm o. Caso não e xist dá um e rro. a

O pe nO rCre at e
Ab re o f e iro se e l e xist se não cria-o. ich e ir,

Truncat e
Ab re o f e iro e re m ov t ich e odo o cont udo. e

<21>

t orial ut

Imports System.IO Module Module1 Sub Main() Dim texto As String 'chama a funcao para ler o ficheiro' ler_ficheiro() Console.WriteLine() Console.WriteLine() Console.WriteLine("Insira um texto para adicionar ao ficheiro:") texto = Console.ReadLine Console.Clear() 'chama a funcao para escrever no ficheiro o texto inserido' escrever_ficheiro(texto) 'imprime no ecra o ficheiro ja actualizado' ler_ficheiro() Console.ReadLine() End Sub Private Sub ler_ficheiro() Dim strFicheiro As String = "C:\ficheiro.txt" 'Abre o ficheiro indicado na variavel com os atributos' 'Modo = Abertura | Tipo de Acesso = Leitura | Acesso de outros processos = Leitura' Dim fs As New FileStream(strFicheiro, FileMode.Open, FileAccess.Read, FileShare.Read) 'Carrega o stream no StreamReader' Dim sr As New StreamReader(fs) 'Imprime o conteudo do ficheiro no ecra' Console.Write(sr.ReadToEnd) 'Liberta o ficheiro' sr.Close() Console.WriteLine() End Sub

Private Sub escrever_ficheiro(ByVal texto As String) Dim strFicheiro As String = "C:\ficheiro.txt" 'Abre o ficheiro indicado na variavel com os atributos' 'Modo = Adicionar | Tipo de Acesso = Escrita | Acesso de outros processos = Leitura' Dim fs As New FileStream(strFicheiro, FileMode.Append, FileAccess.Write, FileShare.Read) 'Carrega o stream no StreamReader' Dim sw As New StreamWriter(fs) 'Escreve no ficheiro o texto inserido pelo utilizador' sw.WriteLine() sw.Write(texto) sw.Close() End Sub End Module

<22>

Tiago Sal gado & M arce l M art o ins

Na próxim a e dição ire m os cont inuar e st e t orial O t m a da próxim a e dição ut . e cont inuará a se r m anipul ação de f e iros e m V ich isual Basic.NET. Irão se r ab ordadas nov cl s com o D ire ct as asse ory, D ire ct oryInf o, FilInf e o, FilA t rib ut s, e t e P h , et at c... q ue v os irão pe rm it um ir m aior cont o e int racção sob re os rol e v ossos f e iros. Não pe rcam a próxim a ich e dição...

gnu/l inux
ut izador, o único dire ct il ório no q ual um ut izador norm al e m pe rm issõe s t ais, v o il t ot ist q ue le pe rt nce , t ndo a m aioria dos out h e e ros dire ct órios pe rm issõe s re st iv à e scrit e rit as a, de st f a orm a à al ração ou re m oção. t e O sist m a de e pe rm issõe s de m onst rado num a t e l ab a: pode se r

Se gurança e m sist m as GNU/L e inux
Int rodução
M uit ge nt pe rgunt a si m e sm a porq ue é a e a q ue “aq ue ls t e ipos dize m q ue GNU/L inux é m ais se guro? Ne st art ”. e igo pre t ndo q ue e pe ssoas q ue nunca usaram GNU/L inux e q ue t nh am dúv e idas e m re l ação à se gurança de st sist m a, as e scl çam . e e are

A t e l de m onst e xe m plica o sist m a de ab a ra if e pe rm issõe s. O 0 signif de sl ica igado/pe rm issão não act a, o 1 l iv igado/pe rm issão act a. O 'r' iv sim b ol a lit iza e ura, o 'w ' a e scrit e o 'x' a a e xe cução. Est as pe rm issõe s corre sponde m a t rês grupos de 3 b it cada b it corre sponde ndo à s, lit e ura, e scrit e e xe cução e t a rês grupos, de sse s t ais t rês b it re f rindo-se ao dono s, e (do f e iro), ao grupo, e aos “out ich ros”. P ara se pe rce b e r m e lor o sist m a de pe rm issõe s h e conv ém se parar cada grupo de t rês b it s indiv idual e nt . m e D e st a f orm a, se q uisésse m os t r um f e iro com pe rm issõe s e ich t ais para o dono do f e iro, e pe rm issão ot ich de lit e ura e de e xe cução t o para o Grupo ant com o para os out t ria-m os al com o: ros e go

P rm issõe s e
O cont o de se gurança m ais b ásico do rol sist m a, m as ainda assim b ast e e f e ant icaz, é f it ao nív ldo sist m a de pe rm issõe s. e o e e Est as consist m e num a e st ura rut h ie rárq uica, na q ual h á v ários t ipos de ut izadore s il com v ários t ipos de pe rm issõe s, pode ndo e st se r de f as inidas conf orm e o de se j ado. P ode m os dar pe rm issõe s para o v izinh o do l ado v r os e m e us f e iros, ich m as t b ém am dar pe rm issõe s para out ro v izinh o não v r e nada. Ist é m uit im port e e é e st um a o o ant a das razõe s pe l q ual um v a írus não se e spala f m e nt e m GNU/L h acil e inux (t al com o e m M ac, q ue t m o m e sm o sist m a, e e am b os b ase ados no Unix). P ara um e v nt e ualv írus at acar um de st s e sist m as com v a a f r q ualue r t e ist aze q ipo de e st rago, t ria q ue se r o próprio ut izador a e il e xe cut o v ar írus, e ainda assim (caso e m m odo não-root o único e st ) rago q ue de v ria re sul e t ar da e xe cução se ria a possív l rda dos f e iros da H O M E do e pe ich

P ara q ue se j m ais f , apre se nt os a ácil am t b ém um a t e l de conv rsão de am ab a e b inário para de cim al :
b inário 000 001 010 011 100 101 110 111 de cim al 0 1 2 3 4 5 6 7

<23>

gnu/l inux
P ant de st f ort o, a orm a se q uise sse m os de f inir o t f e iro com as pe rm issõe s j re f ridas, al ich á e usaríam os o com ando ch m od, q ue é o q ue de f as pe rm issõe s, da se guint m ane ira: ine e
# chmod 755 ficheiro.txt

Com o se pode const ar, usou-se o ch m od at 755, se ndo e st núm e ro a agl inação da e ut conv rsão para de cim al das pe rm issõe s e de m onst radas acim a. O ut ra m ane ira, t v z m ais sim pls de ale e e xe m plicar o proce sso é dando v ore s aos if al t ipos de pe rm issão. D e st m odo, o r v e 4, o e al w v e 2 e , por f , o x v e 1. Se q uise rm os al im al dar pe rm issõe s t ais t re m os r+ w + x = 4 + 2 ot e + 1 = 7, se ndo e st o núm e ro q ue e ut izare m os, para o ut izador e m q ue st il il ão. Caso q ue iram os apl icar a pe rm issão a um a past e a t a odos os se us sub -f e iros, ich ut izare m os a e xt nsão -R . P e xe m pl il e or o:
# chmod -R 777 ~/

se r pe rm it idos ape nas a m áq uinas de conf iança, um a v z q ue são pot ncial e nt e e m e inse guros pode ndo se r usados, não só para at acar a m áq uina, com o t b ém com o pont am e para at acar out ros. O h ack e r pode usar a m áq uina da v im a para se prot ge r e l ít e ançar o at ue a part dout m áq uina. aq ir ra

D icas
-Não t r um a cont com um a passw ord q ue e a se j adiv ada f m e nt . P a inh acil e assw ord’s de sse t ipo são por e xe m pl a dat de nascim e nt o o a o, nom e , “123456”… -Nunca f orne ce r passw ord’s a out pe ssoas. ras -Inst a, se m pre q ue h ouv r, act izaçõe s de al e ual se gurança. P v ze s h á b ug’s e m dist uiçõe s or e rib q ue pode m se r f ais. Fe l e nt at izm e a com unidade da grande part das dist e ros é b ast e ant rápida a e ncont os rá-l e a disponib il pat ’s de act ização. izar ch ual -L it o núm e ro de proce ssos na m áq uina. im a -P e ge r cont Fork Bom b s. Um a Fork Bom b rot ra é um a f orm a de e xe cut um D oS (D e nialof ar Se rv ), um at ue q ue sob re carre ga o ice aq sist m a e q ue f e az a m aq uina andar e xt m am e nt lnt É díf re e e a. icil e xe cut e sse ar at ue se t e r um a f w al b e m conf aq iv ire l igurada um a v z q ue não e nt e ram no pc, m as “m ais v e al pre v nir q ue re m e diar”…Um a Fork Bom b cria e m uit os proce ssos at a m aq uina crash ar é com plt e nt . P e am e ara se prot ge re m t e êm de de f inir no f e iro l it ich im s.conf q ue e st e m ig á /e t c/se curit o núm e ro m áxim os de proce ssos y/ q ue a m áq uina pode corre r. Adicione m as se guint s l as: e inh
username soft nproc 100 username hard nproc 150

Not as:
- O ~ / re f re -se à h om e do ut izador. e il - Todos os com ando t de se r e xe cut êm ados “as root caso os f e iros aos q uais se v ”, ich ai e dit a t e l de pe rm issõe s não t nh am ar ab a e pe rm issõe s t ais para o use r e m q ue st ot ão.

A f w al ire l
Um a f w al GNU/L ire l inux v isa prot ge r o e com put ador cont ra ace ssos inde se j ados, t e go inde se j ráf ado, prot ge r os se rv e iços q ue e st j e am a corre r e f t pacot s. A f w al il rar e ire l m ais usada é a ipt ls , m ais conh e cida ab e pe l se u GUI f st e r, q ue f int o ire art oi roduzida no k e rne l2.4 e m sub t uição da ipch ains. A it f w al não f ire l unciona por si m e sm a. Não é inst ar e e spe rar t r t al e udo conf igurado. É ne ce ssário criar as re gras ne ce ssárias para o sist m a. e Ent ão, o q ue prot ge r? O m e lor a f r é e h aze ab rir ape nas o ne ce ssário. O u se j t r um a a e conf iguração re st iv rit a. É aconse lado h b l ue ar as port ab aixo de 1024 porq ue oq as e st e xe cut as am se rv iços q ue ut izam o m odo il de root O s se rv . iços com o rl ogin, t l t f p, e ne , t NFS, D NS, L AP SMTP R CP X-W indow de v m D , , , e

-Conf igure a f w al de um m odo re st iv ire l rit o, ape nas para o ne ce ssário. D e st m odo e st e ará a dar um grande passo na sua prot cção. e

<24>

J l am os oe R

Ist pre v o ine os ut izadore s de t re m m ais de il e 150 proce ssos a corre r e m ost um av se ra iso 100 proce ssos e st e re m a corre r. É ape nas um iv e xe m pl o, pode rão de f inir consoant e as ne ce ssidade s das v ossas m áq uinas.

&

M igual ais P

gnu/l inux
b in/ de v h om e / l + f / ost ound/ proc/ sb in/ usr/ b oot e t l / m nt root t p/ v / c/ ib / / m ar/
Se gue -se a e xpl icação de para q ue se rv m e cada um de st s dire ct e órios:

/b in

Sist m a de e dire ct órios
Int rodução
Um a das prim e iras dif re nças q ue sal a e t a v a para q ue m com e ça a usar L ist inux é a e st ura de dire ct rut órios do L inux, q ue nada t m a v r com o W indow s. P e e ode pare ce r um pouco alat e ório, m as na re al idade e xist um a l e ógica e f unção para cada dire ct ório. Assim , o ob j ct o de st t xt é e iv e e o apre se nt e f il ar am iarizar com o sist m a e L inux.

Ab re v ura para “Binarie s” iat - Binários. Cont ém a m aioria dos e xe cut e is m ais áv com uns q ue se rão usados pe l os ut izadore s, adm inist il radore s e sist m a e Norm al e nt cont m e ém as sh e l com o b ash , l s csh , assim com o com andos, por e xe m pl o: su, t ou unam e . ar

/sb in
Ab re v ura para “Syst m Binarie s” iat e Binários do Sist m a. É se m e lant ao /b in, e h e m as cont ém ape nas program as e sse nciais ao sist m a, com o adm inist e ração e m anut nção e é e sse ncial para o se u e arranq ue .

/b oot
Cont ém os f e iros de arranq ue e o k e rne l ich do L inux, q ue são ace didos ant s do re st e o do sist m a e st m ont e ar ado, e part dos e b ootoade rs (L O e GR UB). l IL

O Sist m a e
A prim e ira coisa q ue é pre ciso pe rce b e r é q ue e m L inux os discos e part içõe s não apare ce m ne ce ssariam e nt com o unidade s e dif re nt s, com o o C:, D :, do W indow s. e e Tudo f part de um único dire ct az e ório, ch am ado de “root re pre se nt ”, ado por “/”, e m q ue t udo f ica ace ssív l a part de e ir v ários sub -dire ct órios. (Não conf undir com o ut izador 'R oot q ue é o Adm inist il ' rador) Um aspe ct sob re o sist m a L o e inux q ue é int re ssant sab e r, é q ue t e e udo num sist m a L e inux é um f e iro, se não é um ich f e iro, e nt é um proce sso. ich ão Se assim é, e nt o q ue é um D ire ct ão ório? São f e iros com l as de out ich ist ros f e iros. ich Nav gando no sist m a de f e iros do e e ich L inux, no “/” pode m os e ncont rar os se guint s dire ct e órios:

/de v
Cont ém os f e iros q ue re pre se nt ich am o h ardw are pre se nt e na m áq uina. Encont ram -se f e iros com o h da1, h da2, ich cdrom , e t q ue re pre se nt c. am disposit os iv re conh e cidos e inst ados no L al inux.

/e t c
Cont ém a m aioria de t odos os f e iros de ich conf iguração e m anipul ação do sist m a e L inux. Ne l pode m e ncont por e xe m pl e rar o f e iros de conf ich iguração de program as, do sist m a gráf X11, script de arranq ue . e ico s

/h om e
Cont ém as past de cada ut izador (H om e as il D ire ct ory). O s ut izadore s com uns só il conse gue m ace de r à sua própria past (a a não se r q ue le s e spe cif ue m out t h iq ro ipo de ace ssos). D e nt ro de cada past de a ut izador t b ém se e ncont il am ram os

<25>

gnu/l inux
f e iros de conf ich iguração re spe ct os para iv cada um . P ode se r com parado ao " ocum e nt and Se t ings” do W indow s D s t

/t p m
Est dire ct e ório arm aze na os f e iros ich t m porários. É l po durant o arranq ue e e im e sh ut dow n do se u sist m a, e Não é aconse láv l guardar aq ui h e f e iros ich im port e s. ant

/l ib
Cont ém as b ib l e cas b ásicas do sist m a iot e q ue pode m se r com part h adas por il div rsos program as. Est dire ct e e ório pode se r com parado ao dire ct ório Syst m 32 ou e Syst m do W indow s. e

/usr
Ab re v ura para “Unix Syst m R e sourse s” iat e Cont ém t odos os com andos, b ib l e cas, iot program as, páginas de m anuais e out ros f e iros e st icos q ue são ne ce ssários para ich át of uncionam e nt norm al sist m a. o do e

/l + f ost ound
D e pois de um “crash ” do sist m a, com o por e e xe m pl f t de e ne rgia, o L o al a inux irá t nt e ar re cupe rar o q ue e st corrom pido no á próxim o arranq ue . Caso um f e iro e st j ich e a corrom pido, e l se rá col e ocado ne st e dire ct ório.

Al gum s sub -dire ct órios:
/usr/doc - Cont ém
docum e nt ação do L inux grande part e da

/m nt
Ab re v ura para " ount point (pont de iat m " o m ont age m ). Cont ém a m aioria das m ont age ns do sist m a ope ract o. É aq ui e iv q ue irá t r ace sso aos Cdrom s, Usb s, e P içõe s, e t Em al art c. gum as dist uiçõe s, rib ce rt unidade s com o Usb s e cart s de as õe m e m ória são m ont ados e m /m e dia. P ode criar os m ount point q ue pre cisar, pois s não e xist m l it e im açõe s nos m ountpoint s.

/usr/src/l inux - Cont o código f e do ém ont
K e rne l .

/usr/b in - Cont out f e iros b inários ém ros ich
re f re nt s aos ut izadore s, m as q ue não e e il são e sse nciais.

/v ar
Cont ém f e iros q ue possue m dados ich v ariáv is, com o f e iros de l e ich ogs, f e iros ich de conf iguração de corre io e lct e rónico, de im pre ssão, e nt out re ros.

/opt
Est e dire ct ório cont ém program as opcionais, com o por e xe m pl K D E. Cada o sof w are t rá a sua própria past t e a.

/proc
É um pse udo-dire ct ório q ue f orne ce inf orm açõe s sob re o k e rne l e sob re os proce ssos q ue e st act os no m om e nt ão iv o, al de inf ém orm açõe s sob re a ut ização de il al guns disposit os e do sist m a. iv e Cada sub -past re pre se nt um proce sso. a a Al guns program as com o 'ps' ou 't op' ace de m a e st past para re cole r a a h inf orm ação do sist m a e m e v z de e com unicar dire ct e nt com o k e rne l am e .

Concl usão
Est t xt é um a apre se nt e e o ação sim pls do e Sist m a de D ire ct e órios do L inux, m as um conh e cim e nt o ne ce ssário para pode r aprov it o pot ncial q ue e st sist m a e ar e e e of re ce . e A m e lor m ane ira de pe rce b e r e apre nde r h é usar.

/root
Est é o H om e D ire ct e ory do ut izador root il ( Adm inist rador ), onde só e l t m ace sso. e e

<26>

M arco Sila v

proj ct e o
Finda a int rodução, v se r ab ordados dois ão t m as da arq uit ct e e ura do O rion's Be l t .

Sist m a de R e cursos e
h t p://orionsb e l t t .zi-yu.com

Int rodução
O O rion's Be l é um j t ogo w e b -b ase d e l orado por dois port ab ugue se s com o t alo f rab h inalde b ach are l o. Est e scrit at á o e m C# e f unciona e m cim a de ASP .NET. Est e j ogo t m e v árias caract ríst e icas se m e lant s a out h e ros j ogos do géne ro m ais conh e cidos: O gam e e D ark gal axy. No OB o j ogador com e ça com um h om e pl t e pode part à conq uist de out ane ir a ros pl t pe l gal ane as a áxia. A ge st de pl t ão ane as é um dos aspe ct m ais im port e s do os ant j ogo, se ndo ne ce ssária a const rucção de e dif ícios, e l oração de pe sq uisas, e t ab c, para e v uir t o t cnol ol ant e ogicam e nt com o e e cnom icam e nt . e O aspe ct q ue dif re ncia o O B dos out o e ros j ogos do géne ro é o m ode l de com b at . o e Todos os com b at s são re al e izados num t uliro com as unidade s produzidas nos ab e pl t ane as. Est m ot e or de com b at e st e á im plm e nt e ado e m J aScript av . Cada unidade t m um conj o de e unt caract ríst e icas com o: at ue , de f sa, dano, aq e v ida, al cance e t ipo de m ov e nt im o. Al gum as unidade s t êm ainda caract ríst e icas e spe ciais com o: at ue aq ricoch e t , at ue cat e aq apul at ue t o, t a, aq ripl b ónus de at ue /de f sa e m ce rt t aq e os ipos de t rre no ou cont ce rt t e ra os ipos de unidade s. Todas e st caract ríst as e icas f m com q ue aze o com b at se j m uit t ico, e um dos e a o áct aspe ct m ais al os iciant s do j e ogo. No O B h á incl e t usív orne ios à part e m e q ue os j ogadore s são f orne cidos com um a arm ada, e t êm de passar um a f ase de grupos e de se guida os pl f Est s ayof s. e t orne ios cont am para um sist m a de e R ank ing b ase ado no EL R ank ing Syst m O e (usado no Xadre z), e pe rm it m sab e r q ue m e são os m e lore s j h ogadore s no t uliro. ab e

O O B cont com um grande núm e ro de a re cursos: 43 e dif ícios, 25 unidade s e 48 pe sq uisas. A f ácilm anunt nção/adição de e re cursos f um dos prim e iros ob j ct os oi e iv para o m ot de j or ogo. P ara e st f f e im oi criado um idiom a XMLcapaz de re pre se nt ar e st inf a orm ação. Est e idiom a XML pe rm it e de scre v r e f m e nt t acil e odas as capacidade s de um q ualue r re curso, se j e l e dif q a e ício, pe sq uisa ou unidade s de com b at . É possív l e e de scre v r o pre ço, as de pe ndências e e caract ríst e icas v árias. O uso de XMLf z com q ue o m ot se j m ais e or a sim pls e al ge nérico. Cont e go udo, h á v árias out v age ns e m se t r usado XMLpara ras ant e de scre v r os re cursos. At és do uso de e rav XSL (idiom a XML q ue t T ransf orm a XML nout ros f orm at os) f oram criadas t m pl e s e at q ue pe gam no XML dos re cursos e o t ransf orm am em páginas do m anual (f orm at w ik i) e t b ém e m f e iros o am ich Jav aScriptpara uso do m ot de com b at . or e

O t uliro de j ab e ogo do O rion's Be l t

<27>

proj ct e o
<resource type="Unit" value="ColonyShip"> <dependencies> <resource-ref type="Building" value="StarPort" /> <resource-ref type="Research" value="AdvancedFlightI" /> </dependencies> <cost> <resource-needed type="gold" value="5000" /> <resource-needed type="mp" value="8000" /> <resource-needed type="energy" value="1000" /> <resource-ref type="Building" value="StarPort" /> <duration value="15" quantity="1" /> </cost> <attributes> <attribute type="TeletransportationCost" value="350"/> </attributes> <oncomplete/> <battle unitType="special"> <attack base="230" range="1" minimumDamage="200" maximumDamage="250"/> <defense base="8000" hitPoints="9200" canStrikeBack="true" /> <movement cost="6" type="all" level="air" /> </battle> </resource>

Base s de D ados

Idiom a do Sist m a de R e cursos e
D e st a f orm a é possív l t r v e e árias im plm e nt e açõe s de pe rsist ência, q ue são e scondidas da re st e l ant ógica de apl icação.

Um a apl icação w e b norm al e nt e st m e á associada a um SGBD (sist m a de ge st de e ão b ase s de dados) com o o MySQ L , P gre SQ L e t O O B suport v ost , c. a ários t ipos de SGBD at és da de sign pat e rn b ridge . rav t Toda a cam ada de ace sso a dados f oi pe nsada com o um a ab st racção ao SGBD usado e m runt e . P im ara at ingir e st f é e im criada um a cl asse b ase ab st ract com as a f uncional idade s e lm e nt s e e are cl s asse de riv adas q ue cont êm e spe cial izaçõe s para cada SGBD . P e xe m pl para pe rsist as or o, ir Al ianças, e xist a cl e asse Al l iance Ut it ily:
public class AllianceUtility { public abstract Alliance Get(int id); public abstract Alliance[] GetAll(); public abstract void Save(Alliance a); ... };

Concl usão
O O B é um proj ct j com al a e o á gum dim e nsão. Cont udo, ce rt e scolas b e m as h pe nsadas no início de de se nv v e nt olim o t ornaram -se grande s e scolas no f uro do h ut j ogo, pois pe rm it m e um a e xce lnt e e f idade de m anunt nção. acil e Conv idam os t odos os int re ssados a e e xpe rim e nt o j ar ogo. O j ogo é div idido e m rondas e , por v t de Se t m b ro, irá com e çar ol a e um a nov ronda. P a ara e st nov ronda a a e st ão pl adas ane al as gum nov idade s int re ssant s: possib il e e idade de const rução de D e at St h ars, e st l de com b at são as uas e inspiradas pe l D e at St da Gue rra das a h ar Est l e com b at s com q uat j re as, e ro ogadore s ao m e sm o t m po - t e orne ios com com b at s e 1x1x1x1 ou 2x2. Q ue m t e r m ais curiosidade no j iv ogo pode passar pe l e nde re ço: o h t p://pt ik i.zi-yu.com /inde x.ph p/V os t .w íde Ne st e nde re ço e st e ão v os de dois íde com b at s e um de int e rodução gl al O B. ob ao

Cada cl asse Ut it usa t b ém o de sign ily am pat e rn singlt t e on, para prov nciar um ide único ob j ct e o daq ue l t e ipo, se m pre disponív l É usada um a proprie dade st ic e . at q ue indica q ual o ob j ct q ue t a da e o rat pe rsist ência. É aq ui q ue h á a pont para a e im plm e nt e ação corre nt . O SGBD alo é e v de cidido e m com pil t e at és de e im rav parâm e t no com pil ros ador.

<28>

P dro Sant e os

anál s ise

O pe ra M ini
O m ais f rant para os act rust e uais w e b de pe nde nt s é não pode r consul o e -m ail e t ar ou v ar um a de t rm inada página w e b só isit e porq ue e st l á onge de um pc. H oj e m dia e e xist m out e ras f orm as de ace de r à Int rne t e se m f r uso de um com put aze ador, se pe nsarm os b e m q uase t odos nós possuím os um t lm óv lcom gprs com suport para e e e e apl icaçõe s j a, q ue pe rm it um a l av e igação e st e l de 56k b ps, m as o f o é q ue a áv act m aioria de ls não possue m um b row se r h t l e m re al e nt f m e uncionalou pura e sim plsm e nt , e e não o possue m . P ois agora j e xist um a opção de al á e t a q ual idade para q ue m q ue r t irar t odo o pot ncial da Int rne t associada ao v e e osso t lm óv lpda ou sm art one . E e ngane m -se e e e , ph aq ue ls q ue pe nsam q ue são poucas as e pl af at orm as e t lm óv is suport e e e ados, um a v z q ue a l a de e q uipam e nt é e xt nsa e é e ist os e const e m e nt act izada. P ant e ual osso dize r q ue o m e u 7250i se t ornou um com panh e iro im port e no t m po e m q ue e st e l ant e iv onge da Int rne t e m e pe rm it consul o e -m ail e , iu t ar no gm ail v ar a m inh a página e por v ze s , isit e v ar incl e a página do f isit usiv órum port ugal -aprogram ar.org. Ape sar das páginas se re m de m asiado grande s para q ualue r e crã de um t lm óv l q e e e , o O pe ra Mini conse gue dige rir com pl icadas páginas e t orná-l m uit sim pls de f as o e orm a a f it a sua v acilar isual ização. E ape sar de al as páginas se re m m uit grande s e gum o f icare m m uit com pridas o O pe ra Mini o pe rm it -nos nav gar na página com im e nsa e e f idade , cl acil icar e m l s, f r scrol e ink aze l v isual com porm e nor as im age ns. izar Ent as f rram e nt re e as incl uídas e st ão um h ist órico de páginas v isual izadas, um ge st or de f orit av os, suport aut át e om ico para pe sq uisas no googl e al e guns dicionários, suport para dow nl e oad de im age ns e um ge st de passw ords. or

As re st e s f ant uncional idade s pode m dif rir e da v rsão do O pe ra m ini, um a v z q ue e e e xist m duas a Basic e a Adv e ance d. A Adv ance d possui um a m e lor com pre ssão de h t xt e de im age ns o q ue pe rm it m e lorar e os e h o t m po de carre gam e nt assim com o um e o, int rf e ace m e lorado com suport para icons, h e scrol m ais suav e um re l l e ógio. A Adv ance d conse gue t b ém m e lore s re sul am h t ados a 're nde rizar' páginas grande s criando um a grande página, e nq uant q ue a Basic t m de o e criar v ários se gm e nt de página. os

Com o se não b ast asse e st sof w are é e t f e w are e de f re ácil inst ação b ast al ando ace de r a m ini.ope ra.com com o w ap do v osso t lm óv l e a página indicará os passo e e e ne ce ssários para inst are m o O pe ra Mini, al se lccionando a v rsão corre ct P rão e e a. ode consul a l a de disposit os com pat e is t ar ist iv ív e m h t p://w w w .ope ra.com /product ob il/ t s/m e ope ram ini/ph one s. Te ndo e m cont q ue o O pe ra se m pre f um a oi b row se r int re ssant , não surpre e nde q ue o e e O pe ra Mini siga as passadas do se u irm ão m ais v lo, e e m disposit os m óv is é e h iv e act m e nt o re i. Fica ape nas a f t o ual e al ar suport para fash , porq ue de re st não e l o e xist nada a apont de ne gat o a e st e ar iv e b row se r. Act m e nt o O pe ra e st t b ém a se r ual e á am incl uído e m out ros t ipos de e q uipam e nt os com o consol (Nint ndo W ii e D S), Int rne t as e e Tab lt (Nok ia 770), P ab l Me dia Paye rs e s ort e l (Arch os P MA400), av s e t b ox’s. R e st iõe v a sab e r q ual o l it de st b row se r. é im e e

<29 >

Sérgio M at ias

anál s ise

P rogram ação O rie nt ada a O b j ct e m J A 2 e os AV

L inguage ns W e b

O l ro f a de program ação orie nt iv al ada aos ob j ct usando a l e os inguage m JAV É da A. aut oria de F. Mário Mart ins, prof ssor e associado da Univ rsidade do Minh o e e coorde nador do grupo SIM - Sof w are , t Int racção e Mul édia. e t im Ne st ob ra com e çam por se r ab ordados os a principais conce it os associados à program ação orie nt ada aos ob j ct e os, nom e adam e nt o q ue é um ob j ct o e e o, e ncapsul e nt am o e a dif re nça e nt e re inst âncias e cl s. A m aior part do l ro é, asse e iv cont udo, de dicada à t cnol e ogia JAV se ndo A, ab ordados os aspe ct m ais im port e s q ue os ant e st l a inguage m suport (cl s, h ie rarq uias, a asse e xce pçõe s, int rf , e t e ace c). P ossui m uit os e xe m pl de código onde são apl os icados os conce it os ab ordados, f it acilando a com pre e nsão dos m e sm os. Not a-se t b ém a am pre ocupação de e nsinar t écnicas de program ação q ue pe rm it am q ue o sof w are t de se nv v olido sat aça isf proprie dade s e sse nciais h oj e m dia, com o por e xe m pl a e o m odul aridade e a e xt nsib il e idade . P ce -m e um l ro b ast e indicado para are iv ant q ue m q ue r apre nde r JAV ou para q ue m A procura apre nde r met odol ogias de program ação q ue pe rm it am aum e nt ar a q ual idade das apl icaçõe s q ue de se nv v . ole Não se rá, no e nt o, o l ro m ais indicado ant iv para q ue m j t m al a e xpe riência com á e gum JAV e com P O e m ge ral pois aspe ct A O , os m ais av ançados da l inguage m não são ab ordados.

“L inguage ns W e b ” é um l ro de iniciação à iv program ação orie nt ada à W e b q ue re úne t odas as principais l inguage ns de program ação ut izadas na Int rne t de il e , f orm a concisa e b e m apre se nt ada para possib ilar um a apre ndizage m m ais rápida it e progre ssiv a. Est l ro f e scrit por Alxandre P re ira e iv oi o e e e Carl P os oupa e e dit ado por " diçõe s e Síl o" D at do ano 2004 e possui ce rca ab . a de 450 páginas. As l inguage ns ab ordadas são: H TM L CSS, , J aScript ASP ASP av , , .NET (V B.NET e C#), P Pe J a. H av Fal um pouco sob re cada l a inguage m onde é ab ordada a sua e st ura, a sua sint , rut axe sua f orm at ação e com o a ut izar il corre ct e nt . am e Est ob ra é aconse lada a q ualue r a h q program ador no e nt o é e xce lnt para ant e e program adore s q ue se e st j e am a iniciar pois ut iza um a l il inguage m cl e de f ara ácil e nt ndim e nt com e xe m pl e xpl e o os icados para um a m ais rápida e e f nt icie e apre ndizage m . É f orne cido apoio on-l a e st l ro e m ine e iv h t p://l t inguage ns.m e diat ca.inf e o

R ui Gonçale s v

<30>

J oão P re ira e

int rne t e

O cssv t disponib il aul iza um a l arga galria de w e b sit s de e e q ual idade , organizados por m ês e ano, t odos e ls de grande e q ual idade . É se m dúv ida um e xce lnt sít de consul do e e io t a q ue de m e lor e xist h e no m om e nt o na W eb 2.0. h t p://cssv t t aul .com

P se u l or ado o cssBe aut of re ce y e aos se us ut izadore s il um a galria se m e lant e h e ao do cssv t m as t b ém of rt de aul , am e as e m pre go, art igos de css, h t l m , j ascript e out av ros de grande int re sse e para os w e bde v l rs. e ope h t p://w w w .cssb e aut t y.com

Foi criada e m M arço de st ano – e só agora e de scob rim os – um a pe q ue na página com 12 pe rgunt as f q ue nt s de ut izadore s q ue nunca re e il v iram L inux na sua v ida. Est página criada pe l a o Grupo de L inux da Univ rsidade de Av iro e st e e á disponív l e para consul e m h t p://gl t a t ua.ua.pt inux. /L

M uit se t m f ado no q ue é a W e b 2.0 o e al re al e nt , q ual os b e ne f m e ícios q ue pode re m os t irar disso. P ois b e m , aq ui e st m ais um docum e nt a t nt á o e ar e xpl isso m e sm o. icar h t p://w w w .ore il t t l .com /pub /a/ore il yne l y/ t /ne w s/2005/09 /30/w h at im -is-w e b 20.h t l m

<31>

D anie l Corre ia

b l scre e n ue

e m acs ou v ? im

o se gre do por t do P nt rás e ium 2

m ais um cl ássico...

<32>

com unidade

Um ano passado da criação da com unidade e , com o t odos de v m sab e r, e as coisas v de " e nt e m poupa" ão v o . A com unidade cont j com m ais de 1800 a á ut izadore s re gist il ados e com um a m édia de v as diárias a t isit ocar o al garism o dos m ilare s. H ouv ne st s úl os t m pos a h e e t im e saída de al guns m e m b ros do st f (Sara af Sila, Bruno M ont iro, H ugo V ant ) por v e iol e m ot os prof iv issionais e /ou pe ssoais, m as cont os j com a part am á icipação act a de iv nov pe ssoas com v ade de const as ont ruir e inov (Fe rnando M art ar ins, Sérgio L s, ope J oão M at e J os osé O l e ira). iv

Q ue re s part icipar na re v a ist P O GR AM AR ?Q ue re s int grar R e e st proj ct e scre v r art e e o, e igos e aj udar a t ornar e st re v a num a ist m arco da program ação nacional ? V a ai

w w w .re v a-program ar.inf ist o
para m ais inf orm ação com o part icipar ou e nt cont a-nos por ão act

@port ugal -a-program ar.org
P cisam os do apoio de t re odos para t ornar e st proj ct ainda e e o m aior... cont os com a t aj am ua uda

re v aprogram ar ist

D e nt e m b re v pode rão cont com um a ro e ar nov f rram e nt de apoio, o w ik i do p@p, a e a q ue e st ará pront e ace ssív la t o e odos para e scl ce r de f are orm a m ais prát ica t odas as v ossas dúv idas e t b ém para pode re m dar am as v ossas cont uiçõe s, rib q ue são ob v e nt part f iam e e undam e nt de t al oda a com unidade . Est os t b ém no início da am am criação de um a nov pl af a at orm a de apre ndizage m , b ase ada no m oodl. Ainda e t m os m uit t alo pe l f nt , m as e o rab h a re e possuím os grande s pe rspe ct as para e st iv a pl af at orm a. V ários pe q ue nos proj ct e os t êm v indo a apare ce r de nt da com unidade e são al ro go q ue re al e nt m e re ce a pe na v r. P ant m e e ort o, para conh e ce re m b e m a com unidade , nada m e lor do q ue passar por... h

w w w .port ugal -a-program ar.org

<33>

D av P assil id int go

Sign up to vote on this title
UsefulNot useful