Skip to content

Archive for Janeiro, 2009

19
Jan

Beautiful and Creative Examples of Vibrant Web Designs

Col­ors – it sets the tone (no pun intended) and mes­sage of a web­site. Design­ers often spend hours, even days, research­ing and com­ing up with a har­mo­nious and usable color scheme.

In this col­lec­tion, you’ll find 30 bril­liant (alright – pun intended) web designs with vivid and col­or­ful themes that evoke feel­ings of vivac­ity and dynamism – to inspire your color palette.

Colourpixel

Colourpixel - screen shot.

Matt Dempsey

Matt Dempsey - screen shot.

Fall for Tennessee

Fall for Tennessee - screen shot.

FontShop

FontShop - screen shot.

Dru­pal­Con

DrupalCon - screen shot.

Sourcebits Tan­gled­De­cals

Sourcebits TangledDecals - screen shot.

Matt Mul­len­weg

Matt Mullenweg - screen shot.

CakePHP

CakePHP - screen shot.

The Eng­lish Riv­iera Com­edy Film Festival

The English Riviera Comedy Film Festival - screen shot.

VCU Office of Under­grad­u­ate Admissions

VCU Office of Undergraduate Admissions - screen shot.

Miki Mottes

Miki Mottes - screen shot.

ZenSender

ZenSender - screen shot.

Boompa

Boompa - screen shot.

alisa.mtv.ru

alisa.mtv.ru - screen shot.

Port­fo­lio of Adit Shukla

Portfolio of Adit Shukla - screen shot.

Maria Filó

Maria Filó - screen shot.

Cheese­tique

Cheesetique - screen shot.

DivVoted

DivVoted - screen shot.

erguvanplatin.com

erguvanplatin.com - screen shot.

Design Dis­ease

Design Disease - screen shot.

singularityconcepts.com

singularityconcepts.com - screen shot.

Maca­li­cious

Macalicious - screen shot.

Radu Ceuc?

Radu Ceuc? - screen shot.

cocorino

cocorino - screen shot.

AdaptD.com

AdaptD.com - screen shot.

Sound­splash 08 Eco Reg­gae Festival

Soundsplash 08 Eco Reggae Festival - screen shot.

Sil­ver­back

Silverback - screen shot.

Sitesquared

Sitesquared - screen shot.

Dulles Dodge­ball

Dulles Dodgeball - screen shot.

Emeril’s Hol­i­day to Go

Emeril's Holiday to Go - screen shot.

Fonte:Six Revi­sions

19
Jan

Video of US Airways descent into Hudson River released

Ater­ragem do avião da US Air­ways no rio Hud­son

As primeiras análises feitas às caixas negras do avião que teve de ama­rar no Rio Hud­son, em Nova Iorque, rev­e­lam que o apar­elho terá mesmo embat­ido com aves. Os inves­ti­gadores con­fir­maram que o piloto falou em aves antes de os motores pararem.
14
Jan

PGP Whole Disk Encryption

Proac­tively secure con­fi­den­tial data on disks and remov­able media

Mobile com­put­ers are quickly emerg­ing as the indus­try stan­dard for increas­ing user pro­duc­tiv­ity. How­ever, the portable nature of these devices increases the pos­si­bil­ity of loss or theft. Con­se­quent expo­sure of sen­si­tive data can result in finan­cial loss, legal ram­i­fi­ca­tions, and brand damage.

PGP® Whole Disk Encryp­tion pro­vides enter­prises with com­pre­hen­sive, non­stop disk encryp­tion for Microsoft and Apple Mac OS X, enabling quick, cost-effective pro­tec­tion for data on desk­tops, lap­tops, and remov­able media. The encrypted data is con­tin­u­ously safe­guarded from unau­tho­rized access, pro­vid­ing strong secu­rity for intel­lec­tual prop­erty, cus­tomer and part­ner data, and cor­po­rate brand equity.

  • Easy, auto­matic oper­a­tion–Pro­tects data with­out chang­ing the user experience.
  • Enforced secu­rity poli­cies–Auto­mat­i­cally enforce data pro­tec­tion with cen­trally man­aged policies.
  • Accel­er­ated deploy­ment–Achieves full disk encryp­tion using the exist­ing infrastructure.
  • Reduced oper­a­tional costs–Result from cen­trally automat­ing encryp­tion policies.

Tech­ni­cal Specifications

Sup­ported Oper­at­ing Systems

  • Microsoft Win­dows Vista (all 32-bit and 64-bit ver­sions, includ­ing Ser­vice Pack 1)
  • Microsoft Win­dows XP Pro­fes­sional 32-bit (Ser­vice Pack 1, 2 and 3)
  • Microsoft Win­dows XP Pro­fes­sional 64-bit (Ser­vice Pack 1 and 2)
  • Microsoft Win­dows XP Tablet PC Edi­tion 2005 (requires attached keyboard)
  • Microosft Win­dows XP Home
  • Microsoft Win­dows 2003 Server (Ser­vice Pack 1 and 2)*
  • Microsoft Win­dows 2000 Pro­fes­sional (Ser­vice Pack 4)
  • Mac OS X 10.4.10 and later (Intel-based Macs, sys­tem vol­umes only)
  • Mac OS X 10.4.X and Mac OS X 10.5.X (Intel and PPC plat­forms, non-system vol­umes only)

* Full disk encryp­tion func­tion­al­ity is not sup­ported on Win­dows 2000 Server or 2003 Server.

Sup­ported Disks

  • Desk­top or lap­top disks (par­ti­tions in the case of Win­dows, or the entire disk for Win­dows and Mac OS X)
  • Exter­nal disks, exclud­ing music devices and dig­i­tal cameras
  • USB flash disks
  • Solid-state dri­ves

Local­iza­tion

  • Eng­lish
  • Ger­man
  • Japan­ese

Authen­ti­ca­tion Options

  • OpenPGP RFC 4880 keys
  • X.509 keys

Sym­met­ric Key Algorithms-PGP® Whole Disk Encryption

  • AES 256-bit keys

Cen­tral­ized Man­age­ment Requirements

  • PGP Whole Disk Encryp­tion is cen­trally man­aged by PGP Uni­ver­sal Server which requires a ded­i­cated hard­ware server. For sup­ported hard­ware and other infor­ma­tion, please refer to the PGP Uni­ver­sal Server tech­ni­cal specifications.

Two-Factor Authentication(PGP Whole Disk Encryp­tion for Win­dows Only)

Sup­ported Pre-Boot Authen­ti­ca­tion Smart Cards and USB Tokens

The fol­low­ing smart card read­ers are sup­ported for com­mu­ni­cat­ing to a smart card at pre-boot time. These read­ers can be used with any sup­ported remov­able smart card (it is not nec­es­sary to use the same brand of smart card and reader). Any Chip/Smart Card Inter­face Device (CCID) smart card reader is sup­ported. The fol­low­ing read­ers have been tested by PGP Corporation:

  • OMNIKEY Card­Man 3121 USB for desk­top systems
  • OMNIKEY Card­Man 6121 USB for mobile systems
  • Activ­I­den­tity USB 2.0 reader
  • Reiner SCT Cyber­Jack pinpad
  • Athena ASEDrive IIIe USB reader

PGP Whole Disk Encryp­tion sup­ports the fol­low­ing smart cards for pre-boot authentication:

  • Activ­I­den­tity Activ­Client CAC cards, 2005 models
  • Aladdin eTo­ken 64K, 2048-bit RSA-capable1
  • Aladdin eTo­ken PRO USB Key 32K, 2048-bit RSA-capable1
  • Aladdin eTo­ken PRO with­out 2048-bit capa­bil­ity (older smart cards)1
  • Athena ASEKey Crypto USB Token for Microsoft ILM2
  • Athena ASE­Card Crypto Smart Card for Microsoft ILM2
  • EMC RSA SecurID SID800 Token3
  • Charis­math­ics Cryp­toIden­tity plug ‘n’ crypt Smart Card only stick
  • S-Trust Star­COS smart card4
  • SafeNet iKey 3000

1 Other Aladdin eTo­kens, such as tokens with flash, should work pro­vided they are APDU com­pat­i­ble with the sup­ported tokens. OEM ver­sions of Aladdin eTo­kens, such as those issued by VeriSign, should work pro­vided they are APDU com­pat­i­ble with the sup­ported tokens.
2 Athena tokens are sup­ported only for cre­den­tial stor­age.
3 This token is sup­ported only for cre­den­tial stor­age. SecurID is not sup­ported.
4 S-Trust SECCOS cards are not supported.

Sup­ported Smart Cards and USB Tokens-PGP® Vir­tual Disk and PGP Zip

PGP Whole Disk Encryp­tion rec­og­nizes and works with the following:

  • DoD Com­mon Access Cards (CACs) with the Activ­Card Gold 2.0 profile
  • Athena Smart Card Solu­tions smart cards, includ­ing the ASEKey USB token
  • AET Safe­Sign smart cards, includ­ing ASEKey 1.0
  • Axalto (for­merly Schlum­berger) smart cards, includ­ing the Cryptoflex 32K
  • SafeNet smart cards, includ­ing iKey 2032
  • Aladdin smart cards, includ­ing eTo­ken PRO USB 16K, 32K, and 64K
  • Gem­Plus smart cards, includ­ing Safe­sITe and GemX­presso Pro, using Gem­Safe Libraries 4.2.0–015 (Gold)

PGP Whole Disk Encryp­tion also rec­og­nizes and works with smart cards from other ven­dors if the ven­dor includes a standards-based PKCS-11 library in its soft­ware drivers.

13
Jan

Novo Acordo Ortográfico

Pes­soal­mente sou con­tra este novo acordo ortográ­fico, pois torna o Por­tuguês de Por­tu­gal muito relax­ado e deselegante.

mas afi­nal o que vai mudar?

O alfa­beto por­tuguês pas­sará de 23 para 26 letras, com a inclusão em defin­i­tivo do k (capa ou ), do w (dáblio, dâblio ou duplo vê), y (ípsilon ou i grego).

O uso de maiús­cu­las e minús­cu­las obe­dece a novas regras:

  1. os meses do ano e os pon­tos cardeais dev­erão ser escritos em minús­cu­las (janeiro, fevereiro e norte, sul, etc.).
  2. poder-se-á usar maiús­cu­las ou minús­cu­las em títu­los de livros, no entanto a primeira palavra será sem­pre maiús­cula (Insus­ten­tável Lev­eza do Ser ou Insus­ten­tável lev­eza do ser)
  3. tam­bém é per­mi­tida dupla grafia em expressões de trata­mento (Exmo. Sr. ou exmo. sr.) em sítios públi­cos e edifí­cios (Praça da República ou praça da república) e em nomes de dis­ci­plinas ou cam­pos do saber (História ou história, Por­tuguês ou por­tuguês)

A supressão de con­soantes mudas tal como o nome indica, vai levar ao desa­parec­i­mento de con­soantes, em que o critério para tal é a sua pronúncia.

  1. cc - ex.: transa­cionado, lecionar. Mantém-se em fric­cionar, per­fec­cionismo, por se artic­u­lar a consoante.
  2. ação, ereção, reação. Mantém-se em fricção, sucção.
  3. ctato, atual, teto, pro­jeto. Mantém-se em facto, bac­téria, octog­o­nal.
  4. pcperce­cionar, anti­con­ce­cional. Mantém-se em núp­cias, opcional.
  5. adoção, con­ceção. Mantém-se em cor­rupção, opção.
  6. pt - Egito, batismo. Mantém-se em inapto, eucalipto.

Pas­sam a ser suprim­i­dos alguns acen­tos grá­fico em palavras graves: crêem, vêem, lêem pas­sam a creem, veem e leem; pára, pêra, pêlo, pólo pas­sam a para, pera, pelo e polo. As palavras acen­tu­adas no ditongo oi e ei pas­sam a ser escritas sem acento: esto­ico, pale­o­zoico, aster­oide e boleia, plateia, ideia. Existe tam­bém a supressão com­pleta do trema(¨): aguen­tar (e não agüen­tar), fre­quente (e não fre­qüente), lin­guiça (e não lingüiça). Supressão do acento cir­cun­flexo em abençoo, voo, enjoo.

O uso do hífen vai ser suprim­ido em:

  1. palavras com­postas em que o pre­fixo ter­mina em vogal e o sufixo começa em r ou s, dobrando essa con­soante: cosseno, ultra­ssons, ultra­r­rápido.
  2. o pre­fixo ter­mina em vogal difer­ente da incial do sufixo: extraesco­lar, autoestrada, intraósseo.
  3. for­mas monossilábi­cas do pre­sente do indica­tivo do verbo haver: hei de, hás de.

O hífen emprega-se em:

  1. palavras com­postas onde a última vogal do pre­fixo coin­cide com a ini­cial do sufixo, excepto o pre­fixo co– que se algutina ao sufixo ini­ci­ado por o: contra-almirante, micro-organismo, coo­bri­gação.
  2. palavras que des­ig­nam espé­cies da Biolo­gia ou Zoolo­gia: águia-real, couve-flor, cobra-capelo.

Pode exi­s­tir dupla grafia em algu­mas palavras?

Sim. Isso está pre­visto no novo acordo por exi­s­tirem difer­enças na pronún­cia de país para país assim temos:

car­ac­terís­tica caraterís­tica
inter­secção inter­seção
infec­cioso infe­cioso
facto fato
olfacto olfato
con­ceção con­cepção
súb­dito súdito
amnis­tia anis­tia
amíg­dala amí­dala
súbtil sútil
académico acadêmico
ingénuo ingênuo
sénior sênior
cómico cômico
vómito vômito
fémur fêmur
abdó­men abdô­men
bónus bônus
bebé bebê
puré purê
judo judô
metro metrô
andá­mos andamos

Argu­men­tos a favor

- aprox­i­mação da oral­i­dade à escrita

- actual­mente a Lín­gua Por­tuguesa é a única que tem duas grafias oficiais

- sim­pli­ci­dade de ensino e aprendizagem

- unifi­cação de todos os países de lín­gua ofi­cial portuguesa

- for­t­alec­i­mento da coop­er­ação edu­ca­cional dos países da CPLP

- evolução da lín­gua portuguesa

- pequena quan­ti­dade de vocábu­los alter­ados (1,6% em Por­tu­gal e 0,45% no Brasil)

- o por­tuguês é o 5º idioma mais fal­ado no mundo e o 3º no mundo Oci­den­tal. A unifi­cação das grafias per­mite aumen­tar, ou pelo menos man­ter a força da Lín­gua Por­tuguesa no panorama mundial

Argu­men­tos contra

- evolução não nat­ural da língua

- ten­tar resolver um “não-problema”, uma vez que as vari­antes escritas da lín­gua são per­feita­mente com­preen­síveis por todos os leitores de todos os países da CPLP

- desre­speito pela eti­molo­gia das palavras

- a não cor­re­spondên­cia da escrita à oral­i­dade. Por exem­plo, exis­tem con­soantes cuja função é abrir vogais, mas que o novo acordo con­sid­era mudas nomeada­mente em tecto, pas­sando a escrever-se teto, dever-se-ia ler como teto (de seio)?

- processo dis­pendioso (revisão e nova pub­li­cação de todas as obras escritas, os mate­ri­ais didáti­cos e dicionários tornar-se-ão obso­le­tos, reapren­diza­gem por parte de um grande número de pes­soas, inclu­sivé cri­anças que estão agora a dar os primeiros pas­sos na escrita)

- o facto de não haver acordo, facilita o dinamismo da lín­gua, per­mitindo cada país diver­gir e evoluir nat­u­ral­mente, pelas próprias pressões evo­lu­ti­vas dos difer­entes con­tex­tos geo-sócio-culturais como no caso do Inglês ou do Castelhano

- afecto com a grafia actual

- falta de con­sulta de lin­guis­tas e estudo do impacto das alterações

Para quem pre­cisar de um bom cor­rec­tor clique no link abaixo e tem um exce­lente Con­ver­sor do
Acordo Ortográfico

http://www.portuguesexacto.pt/

fonte: ProWebPt

13
Jan

Social Media

Um vídeo bas­tante inter­es­sante e diver­tido que explica de uma forma clara o con­ceito de social media.

Tam­bém podem ver os restantes vídeos a expli­carem alguns serviços web 2.0

7
Jan

Joomla developers toolbox

Um con­junto de Fer­ra­men­tas para uti­lizar com o Joomla

http://www.smashingmagazine.com/2009/01/05/joomla-developers-toolbox/

7
Jan

SSH2 & PHP Howto Guide: SSH Connections Made Easy in PHP

PHP doesn’t come with native sup­port for mak­ing SSH con­nec­tions via the libssh2 libraries. You must use the PECL SSH2 exten­sions. Installing them can be tricky, but Kevin van Zon­n­eveld does a great job explain­ing how to install them over here. So I won’t go there. The new ver­sion, 0.11.0, also seems to be com­pil­ing more reli­ably for everyone.

Unfor­tu­nately, the library is sparsely doc­u­mented, and still buggy in some places. And most of the com­ments posted on http://www.php.net/ssh2 are just plain wrong! Kudos to Mike Sul­li­van for fix­ing some of the issues with non-blocking I/O (And let’s not for­get to thank Sara Gole­mon for writ­ing it to begin with!). I list the most con­spic­u­ous prob­lems at the bot­tom of this blog entry for inter­ested par­ties. Every­one else can use our wrap­pers to smooth over some of the kinks and make most com­mon tasks triv­ial to perform.

Our wrap­per is released under GNU license and can be used, for exam­ple, as follows:

$php_ssh2 = new SSH2('YOURHOST.COM');
$php_ssh2->loginWithPassword('YOUR_LOGIN', 'YOUR_PASSWORD');
echo $php_ssh2->execCommandBlock('find /cat/food');

All Per­ti­nent Features:

$php_ssh2->execCommandBlockNoOutput()

allows exe­cu­tion of a script ignor­ing out­put. Note that with­out block­ing exe­cu­tion man­u­ally, 2 ssh2_execs will exe­cute asy­chro­nously. So it should also be used for shell scripts that have no out­put. Why? If you never check for data, it will never block — yes, even in block­ing mode! This is sub­tle … until it clicks.

$php_ssh2->setLogReads($setting = true)

enables or dis­ables read log­ging on the cur­rent SSH2 stream.

$php_ssh2->setLogWrites($setting = true)

enables or dis­ables write log­ging on the cur­rent SSH2 stream.

$php_ssh2->getShell($set_blocking = false, $term_type = 'vt102' ... )

opens a shell for the user — gen­er­ally not needed and much harder to work with.

$php_ssh2->waitPrompt($prompt_regex = '> $', &$buf = '', $timeout_secs = 0)

waits for a spec­i­fied prompt $prompt_regex (expressed as a reg­u­lar expres­sion) for $timeout_secs (or 0 to block for­ever). Returns true or false, leaves response (whether match­ing or not) buffer in &$buf parameter.

$php_ssh2->writePrompt($command, $add_newline = true)

writes the spec­i­fied out­put to stream. Returns what it was able to write.

The rest of the func­tions are fairly self-explanatory. Check out the library here —
http://www.seoegghead.com/software/ssh2-php-wrappers.seo

Problems/Gotchas I’ve Observed in PECL SSH2

1. Non-blocking mode buggy and/or core­dumps in ver­sions < 0.11.0. So make sure you upgrade.
2. FreeBSD Ports cur­rently reports a patched “usr/ports/security/pecl-ssh2? ver­sion 0.10.0 as 0.11.0 (Not strictly a PECL SSH2 prob­lem, but worth not­ing as it caused me grief).
3. stream_set_timeout() does not work at all with SSH2 streams — silently always returns false.
4. stream_select() does not work with SSH2 streams — but prints a warn­ing.
5. One must pass NULL to $pty — not false (like some com­ments on php.net claim), not “” — oth­er­wise LFs (“\n”) will get changed to CRLFs (“\r\n”). Text files will mostly sur­vive this, but binary data will be cor­rupted! This took us a solid hour to debug and involved a hex-editor.

As a con­se­quence of some of the above, there is no good way to do non-blocking I/O in ver­sions < 0.11.0. Period. No time­outs, no polling, no select­ing. If you need non-blocking I/O to work reli­ably, you must upgrade to 0.11.0.

seoeg­gheadv

7
Jan

Javascript: Regular Expression

Neste artigo eu vou usar tanto a palavra expressões reg­u­lares como Reg­u­lar Expres­sion (inglês). Eu vou usar em por­tuguês para facil­i­tar, mas esse nome não existe em português.

As expressões reg­u­lares são padrões uti­liza­dos para encon­trar com­bi­nações de car­ac­teres em Strings. É uma fer­ra­menta muito poderosa porque con­segue resumi em algu­mas lin­has de código pesquisas alta­mente com­plexas. O prin­ci­pal uso de expressões reg­u­lares em Javascript seria na val­i­dação de dados.

Em JavaScript, expressões reg­u­lares tam­bém podem ser tratadas como um objeto. Esses padrões são usa­dos com os méto­dos exec e test do objeto Reg­Exp, e com os méto­dos match, replace, search, e split do objeto String.

Algu­mas das traduções deste artigo não são total­mente fieis. Espero que con­sigam enten­der o que a men­sagem está passando.

Enten­dendo as Expressões Regulares

As expressões reg­u­lares podem ser cri­adas de duas formas:

- Escrevendo uma expressão regular:

seek = /padrao/

padrao é a string padrão para ser usada na pesquisa.

- Criando uma instan­cia do objeto RegExp:

seek = new RegExp(“padrao”);

padrao é a string padrão para ser usada na pesquisa.

Reg­u­lar Expres­sion é um padrão de texto que con­siste de sim­ples car­ac­teres (da letra a até z, ou de 1 até 9) e de uma com­bi­nação de car­ac­teres sim­ples e especiais.

Os padrões para a pesquisa de car­ac­teres estão divi­di­dos em cat­e­go­rias. Segue abaixo uma lista dos gru­pos e respec­tivos car­ac­teres especiais.

Busca posi­cionada

Sím­bolo

Descrição

Exem­plo

^

Busca somente no iní­cio da string

/^The/ encon­tra “The” em “The night” mas não em “In The Night”

$

Busca somente no fim da string

/and$/ encon­tra “and” em “Land” mas não em “landing”

\b

Encon­tra em qual­quer parte da string

/ly\b/ encon­tra “ly” em “This is really cool.”

\B

Encon­tra qual­quer parte que não esteja limitada

/\Bor/ encon­tra “or” em “nor­mal” mas não em “origami.”

Lit­erais

Sím­bolo

Descrição

Alfanu­mer­ica

Todos os car­ac­teres alfabéti­cos e numerais se encon­tram lit­eral­mente. Então /2 dias/ encon­trarão “2 days” den­tro da string

\n

Encon­tra o car­ac­tere de nova linha

\f

Encon­tra o car­ac­tere de nova página

\r

Encon­tra o car­ac­tere de retorno de carro

\t

Encon­tra o car­ac­tere de tab­u­lação horizontal

\v

Encon­tra o car­ac­tere de tab­u­lação vertical

\xxx

Encon­tra o car­ac­tere ASCII expresso por um número octal xxx.
“\50″ encon­tra o car­ac­tere parên­te­ses esquerdo “(“

\xdd

Encon­tra o car­ac­tere ASCII expresso por um número hexa­dec­i­mal dd.
“\x28″ encon­tra o car­ac­tere parên­te­ses esquerdo “(“

\uxxxx

Encon­tra o car­ac­tere ASCII expresso por UNICODE xxxx.
“\u00A3″ encontra “£”.

A barra inver­tida (\) é tam­bém usada quando você deseja encon­trar um car­ac­tere espe­cial lit­eral­mente. Por Exem­plo, se você deseja encon­trar o sím­bolo “$” ao invés de ter um sinal no final da string, use a barra invertida: /\$/

Classes de Caracteres

Sím­bolo

Descrição

Exem­plo

[xyz]

Encon­tra qual­quer car­ac­tere que estiver den­tro do grupo. Você pode usar hífen para deno­tar escala. Por Exem­plo. /[a-z]/ encon­tra qual­quer letra do alfa­beto alpha­bet, /[0–9]/ encon­tra qual­quer dígito

/[AN]BC/ encon­tra “ABC” e “NBC” mas nao “BBC” desde que a letra “B” nao estao nogrupo.

[^xyz]

Encon­tra qual­quer car­ac­tere que não estiver den­tro do grupo. O cir­cun­flexo indica que nen­huma car­ac­tere deve estar na string.
NOTA: O cir­cun­flexo usado den­tro da classe de car­ac­tere é difer­ente do que denota o iní­cio da string, não se con­fun­dam. A negação aqui só é per­mi­tida den­tro dos sinais

/[^AN]BC/ encon­tra “BBC” mas nao “ABC” ou “NBC”.

.

(Ponto). Encon­tra qual­quer car­ac­tere exceto o car­ac­tere de nova linha ou ter­mi­nador de linha Unicode

/b.t/ encon­tra “bat”, “bit”, “bet” e assim por diante

\w

Enconta qual­quer car­ac­tere alfanumérico incluindo under­score. Equiv­a­lente a [a-zA-Z0-9_]

/\w/ encon­tra “200″ em “200%”

\W

Encon­tra qual­quer car­ac­tere que não se encon­tra na classe dos alfanuméri­cos. Equiv­a­lente a [^a-zA-Z0-9_]

/\W/ encon­tra “%” em “200%”

\d

Encon­tra qual­quer dígito. Equiv­a­lente a [0–9]

\D

Encon­tra qual­quer car­ac­tere que não seja um dig­ito. Equiv­a­lente a [^0–9]

/\D/ matches “No” in “No 342222″

\s

Encon­tra qual­quer car­ac­tere que equiv­ale a um espaço. Equiv­a­lente a [ \t\r\n\v\f]

\S

Encon­tra qual­quer car­ac­tere que não equiv­ale a um espaço. Equiv­a­lent to [^ \t\r\n\v\f]

Repetição

Sím­bolo

Descrição

Exem­plo

{x}

Encon­tra exata­mente x ocor­rên­cias na reg­u­lar expression

/\d{5}/ encon­tra 5 digitos

{x,}

Encon­tra x ou mais ocor­rên­cias na reg­u­lar expression

/\s{2,}/ encon­tra no min­imo 2 car­ac­teres de espaço em branco

{x,y}

Encon­tra x para y numero de ocor­rên­cias na reg­u­lar expression

/\d{2,4}/ encon­tra no min­imo 2 mas nao mais que 4 digitos

?

Encon­tra zero ou nen­huma ocor­rên­cia. Equiv­a­lente a {0,1}

/a\s?b/ encon­tra “ab” ou “a b”.

*

Encon­tra zero ou mais ocor­rên­cias. Equiv­a­lente a {0,}

/we*/ encon­tra “w” em “why” e “wee” em “between”, mas nao em “bad”

+

Encon­tra uma ou mais ocor­rên­cias. Equiv­a­lente a {1,}

/fe+d/ encon­tra tanto em “fed” quanto em “feed”

Alter­nação & Agrupamento

Sím­bolo

Descrição

Exem­plo

( )

Agru­pa­mento de car­ac­teres para criar uma cláusula de condição. Pode estar aninhado

/(abc)+(def)/ encon­tra um ou mais ocor­ren­cias de “abc” seguido por uma ocor­ren­cia de “def”

|

Com­bina cláusu­las de condições den­tro de uma reg­u­lar expres­sion e então encon­tra qual­quer uma das cláusu­las. Sim­i­lar à expressão “OR

/(ab)|(cd)|(ef)/ encon­tra “ab” ou “cd” ou “ef”.

Back­ref­er­ences

Sím­bolo

Descrição

Exem­plo

( )\n

Encon­tra uma cláusula entre parên­te­ses. n é o número de cláusu­las para a esquerda da backreference

(\w+)\s+\1 encon­tra quais­quer palavras que ocorra duas vezes na mesma linha, como “hubba hubba.” O \1 denota que a prime­ria palavra depois do espaço deve encon­trar a porção da string que foi encon­trada no último com­mando den­tro de parên­te­ses. Se exis­tisse mais de um comando den­tro de parên­te­ses, você deve usar \2 ou \3 para encon­trar o apro­pri­ado agru­pa­mento da esquerda da back­ref­er­ence. Até 9 back­ref­er­ences podem ser usadas no padrão da string

Mod­i­fi­cadores de Padrões

Em adição aos car­ac­teres padrões para bus­car, você pode usar switches para fazer uma pesquisa global, case– insen­si­tive (ignora minús­cu­las e maiús­cu­las) ou ambas.

Pro­priedade

Descrição

Exem­plo

i

Ignora se é minús­cula ou maiúscula

/The/i encon­tra “the” e “The” e “tHe”

g

Pesquisa Global para todas as ocor­rên­cias do padrão

/ain/g encon­tra os dois “ain” em “No pain no gain”, ao inves de ape­nas o primeiro

gi

Pesquisa Global, e igno­rar caso

/it/gi encon­tra todos “it” em “It is our IT depart­ment”
lastIndex

lastIn­dex

Armazena a posição da última pesquisa bem suces­sida real­izada na string. Se nada for encon­trado, a pro­priedade lastIn­dex será colo­cada como –1

$n

n rep­re­senta o numero de 1 a 9
Armazena os nove mais recentes pesquisa den­tro de parên­te­ses encon­tradas. Por exem­plo, se o padrão usado por uma reg­u­lar expres­sion para a última pesquisa foi /(Hello)(\s+)(world)/ e a string pesquisada foi “Hello world” o con­teúdo de RegExp.$2 pode­ria ser qual­quer car­ac­tere entro “Hello” e “world”

source

Armazena a copia do padrão da reg­u­lar expression

Enten­dendo os méto­dos usa­dos pelas expressões regulares

Método

Descrição

exec

Um método Reg­Exp que exe­cuta pesquisas em uma string. O mesmo retorna um array das infor­mações obtidas

test

Um método Reg­Exp que testa uma pesquisa em uma string. O mesmo retorna true ou false

match

Um método de String que exe­cuta uma pesquisa em uma string. O mesmo retorna um array das infor­mações obti­das ou nulo se nada for encontrado

search

Um método de String que testa uma pesquisa em uma string. O mesmo retorna o índice do resul­tado, ou –1 se a pesquisa falir

replace

Um método de String que exe­cuta uma pesquisa em uma string, e sub­sti­tui o resul­tado encon­trado por uma substring

split

Um método de String que usa uma reg­u­lar expres­sion ou uma string para que­brar uma string em uma array de substrings

Quando você quer saber se o padrão foi encon­trado na string, use o método test ou search; para maiores infor­mações (mas com exe­cução mais lenta) use o método exec ou match. Se você usar exec ou match e se obter sucesso, esses méto­dos retornaram um array e atu­alizaram as pro­priedades do objeto reg­u­lar expres­sion asso­ci­ado e tam­bém de obje­tos pré-definidos, Reg­Exp. Se a pesquisa falir, o método exec retornará nulo (no qual con­vert­erá para false).

Pro­gra­mando Expressões Regulares

A par­tir do momento que sabe­mos quais car­ac­ters dese­jamos deve­mos par­tir para a cri­ação do padrão que sera uti­lizado para pesquisar a String.

Vamos, a par­tir de agora, criar alguns exem­p­los práti­cos de como uti­lizar Expressões Regulares.

No nosso primeiro exem­plo vamos pesquisar na string um padrão que é com­posto da palavra “de”. O O resul­tado obtido nos mostrará onde se encon­tra a primeira e a ultima ocor­rên­cia das pesquisas.

Exem­plo:

1 <SCRIPT LANGUAGE=”JavaScript”>
2 padrao=/de/g;
3 // padrao = new RegExp(“de”,”g”);
4 texto = “Brasil ganha a medalha de ouro no volei de praia.”;
5 doc­u­ment.write(“<b>padrao » </b>” + padrao + “<br>”);
6 doc­u­ment.write(“<b>Texto uti­lizado » </b>” + texto + “<br>”);
7 doc­u­ment.write(“O padrao uti­lizado foi encon­trado no <b>” + texto.search(padrao) + “º </b>caractere.<br>”)
8 padrao.exec(texto);
9 doc­u­ment.write(“O ultimo valor encon­trado e” o caractere<b> ” + padrao.lastIndex + “º </b>.”);
10 </SCRIPT>

Linha 2 – Declar­ação da var­iável padrão com a seqüên­cia de car­ac­teres a serem uti­liza­dos nas pesquisas.

Linha 3 – Tem o mesmo fun­ciona­mento da linha 2, porém vai criar uma instân­cia do objeto Reg­Exp com a seqüên­cia de caracteres.

Linha 7 – Uti­liza­ção do método search() para encon­trar o padrao na var­iável texto.

Linha 8 – Uti­liza­ção do método exec para pesquisar a seqüên­cia padrão na var­iável texto.

Linha 9 – Uti­liza­ção da pro­priedade lastIn­dex para retornar a última vez que a seqüên­cia de car­ac­teres foi encon­trada na var­iável texto.

Clique aqui para ver o exem­plo 01.

Exem­plo 02

Este exem­plo é um pouco mais com­plexo. Ele val­ida a entrada de dados por parte do usuário. O usuário vai dig­i­tar um número de tele­fone como pro­posto no exemplo.

1 <SCRIPT LANGUAGE = “JavaScript”>
2 padrao = /\(?\d{3}\)?\d{3}-\d{4}/;
3 func­tion testInfo(x) {
4 a = x.Phone.value;
5 OK = padrao.exec(a);
6 if (!OK){
7 window.alert (“Este numero de tele­fone esta incor­reto!”);
8 x.Phone.focus();
9 } else {
10 window.alert (“Obri­gado, seu numero de tele­fone e” » ” + OK[0]);
11 }
12 }
13 </SCRIPT>

Linha 2 – Declar­ação da var­iável padrao com a seqüên­cia de car­ac­teres a serem uti­liza­dos nas pesquisas.

Linha 3 – Declar­ação da função testInfo() que recebe um parâmetro com o objeto form a ser utilizado

Linha 4 – Declar­ação da var­iável a que armazena o valor do parâ­men­tro x (o for­mulário) seguido do nome do campo e respec­tivo valor

Linha 5 – Declar­ação da var­iável OK que recebe o valor da ver­i­fi­cação se o padrão re está con­tido na var­iável a

Linha 6 a 11 – Ver­i­fi­cação da negação da var­iável OK. Se retornar true, uma caixa de men­sagem será mostrada com uma men­sagem de erro e o campo em questão rece­berá o foco. Se retornar false uma caixa de men­sagem será mostrada com uma men­sagem e o número do telefone.

Com todo o código Javascript cri­ado, vamos à cri­ação do código HTML.

1 Dig­ite um número de tele­fone, como por exem­plo » (201)465‑7899.
2 <FORM onSubmit=”return false;”>
3 <INPUT TYPE=”text” NAME=”Phone” onChange=”testInfo(this.form);”>
4 <input type=”button” value=”valida” onClick=”testInfo(this.form);”>
5 </FORM>

Linha 2 – O evento onSub­mit retorna false para o for­mulário não seja enviado.

Linha 3 – O evento onChange da caixa de texto chama a função testInfo() e envia como parâmetro o objeto form.

Linha 4 – O evento onClick do botão chama a função testInfo() e envia como parâmetro o objeto form.

Clique aqui para ver o exem­plo 02.

Exem­plo 03

Neste exem­plo vamos tra­bal­har com mais méto­dos e enten­der onde podemos chegar com ape­nas algu­mas lin­has de código. Aqui nos dividi­mos uma string, colo­camos seu resul­tado em uma matriz e ainda orde­n­amos a mesma.

1 <SCRIPT LANGUAGE=”JavaScript1.2″>
2 nomes = new String (“Thi­ago Prado ; Bill Gates ; Steve Jobs; Michael Dell ; Chris Hand “);
3 doc­u­ment.write (“<b>String Original</b>” + “<br>” + “<br>”);
4 doc­u­ment.write (nomes + “<br>” + “<br>”);
5 padrao = /\s*;\s*/;
6 lis­taNomes = nomes.split (padrao);
7
8 padrao = /(\w+)\s+(\w+)/;
9 noval­is­taNomes = new Array;
10 doc­u­ment.write (“<b>Apos ter sido divi­dido pela Expres­sao Reg­u­lar </b>” + “<br><br>”);
11 for ( i = 0; i < listaNomes.length; i++) {
12 doc­u­ment.write (listaNomes[i] + “<br>”);
13 novalistaNomes[i] = listaNomes[i].replace (padrao, “$2, $1″)
14 }
15 doc­u­ment.write (“<br><b>Nomes revertidos</b>” + “<br><br>”);
16 for ( i = 0; i < novalistaNomes.length; i++) {
17 doc­u­ment.write (novalistaNomes[i] + “<br>”)
18 }
19 novalistaNomes.sort();
20 doc­u­ment.write (“<br> <b>Ordenados</b>” + “<br><br>”);
21 for ( i = 0; i < novalistaNomes.length; i++) {
22 doc­u­ment.write (novalistaNomes[i] + “<br>”)
23 }
24 </SCRIPT>

Linha 2 – Declar­ação da var­iável nomes com alguns nomes a serem uti­liza­dos no código

Linha 3 a 4 – Mostra na tela a var­iável nomes sem nen­huma alteração

Linha 5 – Declar­ação da var­iável padrao com a seqüên­cia de car­ac­teres a serem uti­liza­dos nas pesquisas.

Linha 6 – Cri­ação da matriz lis­taNomes com a divisão da string nomes a par­tir do padrão utilizado.

Linha 8 – A var­iável padrão recebe nova seqüên­cia de car­ac­teres a serem uti­liza­dos nas pesquisas.

Linha 10 a 14 – Mostra na tela a lista de Nomes depois da divisão

Linha 13 – A matriz novalistaNomes(indexada da var­iável do loop) recebe o valor da matriz lis­taNomes (index­ada da var­iável do loop) que uti­liza o método replace para tro­car o primeiro nome pelo segundo. Isso é pos­sível por causa do uso da expressão regular.

Linha 15 a 18 – Mostra na tela a lista de Nomes revertidos

Linha 19 – Uti­liza­ção do método sort para ordernar a matriz novalistaNomes

Linha 20 a 23 – Mostra na tela a lista de Nomes Ordenados

Clique aqui para ver o exem­plo 03.

Reg­u­lar Expres­sion é um assunto muito amplo, e não é pos­sível abordá-lo em ape­nas alguns exem­p­los. Mas para o futuro eu vou preparar uma outra matéria com códi­gos mais poderosos para mostrar o que real­mente quero dizer com “resumi em algu­mas lin­has de código pesquisas alta­mente complexas”.

Fonte: Thi­ago Prado

6
Jan

comparação Windows 7 Beta1 vs Windows Vista vs Windows XP

O jor­nal­ista Adrian Kingsley-Hughes do ZDNet Hard­ware 2.0 com­parou as ver­sões 32 bit do Win­dows XP vs Win­dows Vista vs Win­dows 7 em tare­fas comuns no dia a dia de um uti­lizador, como com­primir ficheiros, abrir docs e pdfs.

Por causa do estado de beta do Win­dows 7, ele não pode divul­gar os dados pre­cisos, os segun­dos ou milise­gun­dos de cada um. Ele ape­nas diz quem gan­hou, num sim­ples 1, 2, 3. Ou seja, leve em con­sid­er­ação que abrir um arquivo pdf de 100 pági­nas em 100 milési­mos, 105 milési­mos e 107 milési­mos sig­nifica que a difer­ença entre o primeiro e o ter­ceiro lugar são ape­nas 7 milési­mos de segundo.

Mas a van­tagem dos testes, 23 ao todo, é que são sim­ples e fáceis de repro­duzir. A tabela, divul­gada abaixo, mostra onde o Win­dows 7 ganhou.

Para o teste utilizaram-se :

  • Um AMD Phe­nom 9700 2.4GHz com uma Placa Grá­fica ATI Radeon 3850 e 4GB de Memória RAM.
  • Um Intel Pen­tium Dual Core E2200 2.2GHz com uma Placa Grá­fica NVIDIA GeForce 8400 GS e 1GB de Memória RAM.

6
Jan

MacBook Wheel — Adeus Teclados

Apple pre­tende ino­var no mundo dos com­puta­dores com o seu novo Mack­Book Wheel aca­bando assim com o tradi­cional teclado.


Apple Intro­duces Rev­o­lu­tion­ary New Lap­top With No Keyboard

só vai estar disponível ao público daqui a uns 15 meses e o seu preço varia de $2.599,00 a $9,960,00.

Bad Behavior has blocked 24 access attempts in the last 7 days.