Browsershots.org – Teste seu site em vários browsers

A dica do dia é: http://browsershots.org, um site onde você pode obter o screenshot do seu site nos mais diversos browsers em diferentes versões e SO’s. Realmente muito bacana!

Update: E para pegar um shot da pagina completa, tem esse serviço web bem bacana

O Mantra das REGEX – As 8 Expressões Regulares que precisamos saber.

RegexVocê tem medo de REGEX!? Eu também!

Nos últimos tempos tenho lidado bastante com REGEX editando regras do Apache mod_rewrite e com a classe que publiquei no PHPClasses, a SiteMapGenerator Tabajara, que se propõe a gerar um mapa do site em xml no padrão estabelecido pelo Google para melhorar a indexação.

Mas depois de tirar onda da galera do Perl no post anterior, vou exaltar a importância que expressões regulares têm nas nossas validações, e para isso vou citar as 8 expressões regulares que todo programador Web deveria saber (exemplos em PHP, mas são válidos para qualquer linguagem com suporte a PCRE).

Validação de nomes de usuário

4 a 28 caracteres alfanuméricos e underscores:


$string = "userNaME4234432_";
if (preg_match('/^[a-z\d_]{4,28}$/i', $string)) {
echo "exemplo 1 ok.";
}

Validação de números de telefone

(##) ####-#### ou ##-####-####

$string = "(32) 5555-5555";
if (preg_match('/^(\(?[0-9]{2}\)?|[-. ]?)[ ][0-9]{4}[-. ]?[0-9]{4}$/', $string)) {
echo "exemplo 2 ok.";
}


Endereços de e-mail

foo@bar.foo

$string = "first.last@domain.co.uk";
if (preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.]

[a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',
$string)) {
echo "examplo 3 ok.";
}

CEPs

#####-### ou ########

$string = "55324-432";
if (preg_match('/^[0-9]{5,5}([- ]?[0-9]{4})?$/', $string)) {
echo "exemplo 4 ok.";
}

Endereços IP

255.255.255.0

$string = "255.255.255.0";
if (preg_match('^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$'

, $string)) {
echo "exemplo 5 ok.";
}


Código de cores RGB em Hexadecimal

#FFFFFF, #FFF, FFF, FFFFFF

$string = "#666666";
if (preg_match('/^#(?:(?:[a-f\d]{3}){1,2})$/i', $string)) {
echo "exemplo 6 ok.";
}

Comentários de múltiplas linhas

/* Lorem
Ipsun
dolor*/


$string = "/* commmmment */";
if (preg_match('/^[(/*)+.+(*/)]$/', $string)) {
echo "exemplo 7 ok.";
}

Datas

DD/MM/YYYY ou MM/DD/YYYY

$string = "30/01/2008";
if (preg_match('/^\d{1,2}\/\d{1,2}\/\d{4}$/', $string)) {
echo "exemplo 8 successful.";
}

Esses exemplos foram retirados do site Devolio[1] , porém algumas expressões eu alterei para ajustar aos padrões brasileiros de telefone e cep. Se por acaso fiz alguma besteira, peço que um REGEXPERT comente e corrija! E no segundo link[2] um validador de expressões regulares.

[1] 8 Practical PHP Regular Expressions – Devolio
[2] Perl Compatible Regular Expression Tester

Não acredito em profissionais "Bombril" na Web

Com o aumento da complexidade de recursos dos sites na Web, o termo Webmaster entra cada vez mais em extinção.

Antigamente, quando tudo era mais simples e feio, com sites em HTML estático e cheio de GIFs piscantes, era comum ter um cara que era responsável por tudo, o webmaster.

Mas agora é cada vez mais difícil ter conhecimento suficiente para ser um bom designer e bom programador, eu me atrevo a dizer que seja impossível. E vou justificar…

As duas áreas podem ser extremamente profundas, design não é só fazer efeitos legais no Photoshop, nem programação é apenas fazer um CRUD em drag’n'drop Net dot Net

Um profissional de design precisa ter conhecimentos teóricos na área, saber criar conceitos, prezar pela usabilidade, ergonomia, sem esquecer da beleza e do conforto do usuário com cores e formas adequadas, e isso requer estudo, não é só questão de ter um “bom gosto”. Fora que muitas vezes a arte que é mostrada no site de uma empresa é a continuação de toda uma campanha que ocorre também fora do “cybermundo”.

E um profissional de desenvolvimento de software precisa conhecer algoritmos, padrões de projetos, tecnologias diversas, técnicas de otimização de performance, segurança, etc.

Existem pseudo-profissionais que se auto-intitulam web designers e programadores, e eu sinceramente não acredito nisso. Um programador pode até escolher um formato bacaninha pra mostrar sua informação e tal, mas está longe de ser um designer profissional, e um designer pode até colocar um reloginho em JavaScript mas também está longe de ser um programador.

São mundos bem diferentes com profissionais de perfis diferentes que se juntam na Web, e para que essa junção seja mais harmoniosa, existe um cara que é híbrido, é o programador de interfaces, caras que sacam um pouco de cá e um pouco de lá e que trabalham na equipe para fazer com que as coisas encaixem mais perfeitamente, pois nem sempre um designer vai saber XHTML, CSS, e etc. Em muitos casos ele sabe criar e desenhar, o programador de interfaces que se vira para adaptar a arte dele para o mundo da Web e interagir com o sistema que é criado pela equipe de programação. Mas também há casos que designers desempenham essa função e há outros em que o programador o faz, cada caso é um caso… mas ainda não existe profissional completo que cuide de tudo, e se faz não é profissional ou não faz bem feito como deveria.

P.S.: Quero avisar aos poucos, porém queridos, leitores desse blog que meu aniversário é domingo, e caso queiram presentear esse que vos escreve, sintam-se a vontade! :-D Aqui vai um endereço que talvez possa lhe ajudar: http://feliperibeiro.com/wishlist

Glossário Geek – for dummies

Depois de ver no relatório do Google Analytics, que algumas pessoas chegam nesse blog ao pesquisarem pelos termos “xpto definição”, “foo bar”, etc, resolvi publicar um pequeno glossário desses termos geeks que usamos e que nos fazem parecer loucos entre nossos amigos :)

  • XPTO – Uma sigla que tem origem em letras gregas que significavam “Cristo”, mas no conceito da programação é um “coringa” que serve para nomear genericamente qualquer coisa que não tenha nome.
  • FOO BAR – Assim como o XPTO também é usado como um nome genérico para qualquer coisa, e pode ser dividido, quando fazemos muitas vezes quando damos exemplos de classes e métodos – Foo.bar() – , ou métodos/funções e parâmetros – foo(bar). É derivado do acrônimo FUBAR que significa (Fucked Up Beyond All Repair).
  • Lorem Ipsum – Esse termo é usado para exemplo de textos, não tem significado algum e é muito útil quando estamos trabalhando em layouts de sites ou algo do tipo, e precisamos preencher um espaço de texto para ver “como fica” e analisar os atributos de fontes e tal, o texto tradicional é assim:
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

    e se por acaso você tiver precisando de um monte de Lorem Ipsum pra testar a formatação do seu site, visite http://lipsum.org/ que ele gera o texto do tamanho que você quiser. :)

  • Gambiarra – Esse termo na boa e velha língua lusitana, significa métodos “não usuais” que usamos na codificação de softwares para conseguir dar um jeitinho e fazer o troço funcionar. Há quem prefira usar termos mais elegantes como STI (solução técnica alternativa) ou workaround, mas no fim das contas, é tudo gambiarra do mesmo jeito, e esse termo já deu origem a um “novo paradigma” chamado POG – Programação orientada a gambiarras (http://desciclo.pedia.ws/wiki/POG), e tem muito a ver com um assunto que já postei aqui, o Asshole Driven Development

Certamente existem vários outros termos que esqueci e não citei, quem quiser adicionar algo na lista, poste um comentário que eu atualizo! :]

Mais uma sujeira de Steve Ballmer

Essa semana o CEO da Mandriva, François Bancilhon, escreveu uma carta aberta a Steve Ballmer falando da última picaretagem da MS.

O governo da Nigéria havia fechado um acordo com a Mandriva Linux para 17 mil computadores para suas escolas, esses computadores seriam Classmate PCs, da Intel e o sistema operacional seria o Mandriva customizado para a cultura e modelo de educação da Nigéria.

O acordo foi fechado, os computadores foram enviados, mas o pessoal entrou em contato com a Mandriva e disse: “we shall pay for the Mandriva Software as agreed, but we shall replace it by Windows afterward.” (Nós iremos pagar pelo Software Mandriva como combinado, mas iremos substituílo pelo Windows posteriormente).

Pra isso ter acontecido, com certeza alguma coisa muito suja houve né? Seguem alguns trechos da carta:

“I’m sure we are way too small for you to have heard of us. You know, we are one of these Linux company who is working hard to make its place in the market. We publish a Linux Distro, called Mandriva Linux.”

We also happen to be one of the Linux companies that did not sign an agreement with your company (nobody’s perfect).

We recently closed a deal with the Nigerian Government. Maybe you heard about it, Steve. They were looking for an affordable hardware+software solution for their schools. The initial batch was 17,000 machines.

Then, your people get in the game and the deal got more competitive. I would not say it got dirty, but someone could have said that.

Now, we hear a different story from the customer : “we shall pay for the Mandriva Software as agreed, but we shall replace it by Windows afterward.”

Wow! I’m impressed, Steve! What have you done to these guys to make them change their mind like this? It’s quite clear to me, and it will be to everyone. How do you call what you just did Steve? There is various names for it, I’m sure you know them.

Of course, I will keep fighting this one and the next one, and the next one. You have the money, the power, and maybe we have a different sense of ethics you and I, but I still believe that hard work, good technology and ethics can win too.”

É por essas e outras que a Microsoft vem conseguindo uma péssima reputação, como se já não bastasse produtos caros e de baixa qualidade, táticas anti-truste, ainda têm toda essa política imunda.

Clique aqui e leia a carta na íntegra

Tim Bray compara: PHP, Rails e Java

Ano passado na International PHP Conference, Tim Bray – um dos co-editores do XML 1.0 e XML namespace definitions – que trabalha na Sun Microsystems, deu uma palestra que a princípio deveria ser sobre integração de PHP com Java, e acabou fazendo um comparativo de três tecnologias server side: PHP x Rails x Java. Ele levantou alguns parâmetros de comparação relevantes e fez esse gráfico:


E aí depende de você, ver o que é mais significativo:

Eu faço e já fiz trabalhos nessas três tecnologias, e delas a que menos gosto é o Java, pela sua burocracia e baixa produtividade, e sempre defendi o PHP dos programadores Java que o criticavam sem conhecê-lo em detalhes, então tá aí a opinião de alguém que tem mais cacife do que eu!

Ah, e ele também defende o REST contra o WS-*, ou seja, é um cara que assim como eu, gosta de simplicidade (KISS – Keep It Simple, Stupid!) :D

Os slides da apresentação estão disponíveis em: http://www.tbray.org/talks/php.de.pdf

P.S.: Peguei uma promoção da Gol, paguei R$ 400,00 de ida e volta pra São Paulo, e com isso confirmo minha participação no PHPConf Brasil mais uma vez! U-HU!

P.S. II: A jornada do Mac continua, o que encomendei por uma loja daqui de Campina Grande continua com problemas no fisco, então depois de mais de um mês de espera, cancelei o pedido e comprei no Shoptime por um preço até melhor, na quinta feira. Me deram um prazo de 7 dias úteis, só me resta esperar!

Feliz dia do programador!

Parabéns a todos os programadores por esse dia! :-D

Segundo a Wikipedia:

O Dia do Programador é uma data festiva no 256º dia do ano, celebrada por programadores de computador em boa parte do mundo. Esta é uma data significativa para programadores porque 256 é igual a 28 (2 elevado à 8ª potência), e 8 é o números de bits de um byte.

O Dia do Programador é dia 13 de Setembro, exceto em anos bissextos, nos quais ele é comemorado no dia 12 de Setembro, pois esse é o 256º dia do ano.

Mundo afora a tradição inclui comportar-se de forma boba, editar a Wikipedia, codificar programas bobos, jogar jogos de computador, brincar com velhos computadores etc. Tudo isso, é claro, sob a condição de que o celebrante tenha feito códigos de qualidade nos outros dias do ano e tenha tentado ao máximo não se comportar como bobo nos outros dias. Para estes programadores que estão habituados a ‘celebrações’ em todos os dias de sua vida, esta data festiva é injustificada e redundante.

No Brasil

No Brasil a tradição ainda não existe, mas a data já se apresenta em spams por e-mail, fazendo com que a leitura de algum Spam também seja parte da celebração. Além disso, no meio acadêmico a data deve proporcionar um encontro dos primeiros programadores locais com os atuais, promovendo palestras e minicursos de linguagens que não são mais utilizadas, além de Assembly, Cobol e Fortran, para que suas sintaxes não sejam esquecidas no futuro próximo.

Conversar sobre programação com quem não entende nada e assistir a filmes apreciados por programadores como Guerra nas Estrelas também devem fazer parte dessa celebração.

Diminui o índice de software pirata no Brasil

Uma pesquisa da IDC (http://w3.bsa.org/globalstudy/) mostra como foi o uso de software pirata, em todo o mundo, nos anos de 2005 e 2006.

Sabe-se que no Brasil esse índice é altíssimo, muita gente inclusive nem sabe que o Windows que roda em seus computadores deveria ser um produto pago… Mas mesmo assim, esse índice diminuiu quatro pontos percentuais entre 2005 e 2006, foi de 64% para 60%. Ainda não é nada animador comparado a média mundial de 35%, mas já está abaixo da média da América Latina, que é de 66% (Com assustadores 82% na Venezuela de Chavez) e bem abaixo do índice de países como Armênia, Moldávia, Azerbaidjão, Vietnam e Zimbábue que têm 90% ou mais do seu software pirateado.

Essa diminuição pode ser um reflexo da Web 2.0, onde está se diminuindo a quantidade de softwares que rodam localmente, e as pessoas estão passando a usar SERVIÇOS de software na rede. Algo que se paga, direta ou indiretamente, como uma conta de água ou luz e não é comprada nenhuma licença. (Me veio na cabeça agora que pode ser também devido à adoção do Linux em muito desktops, mas não posso assegurar :D )

Mas você pode pensar: “Ué… mas eu não pago para usar as aplicações do Google…”, mas se você quiser 10GB de espaço, vai ter que desembolsar, e mesmo que use gratuitamente os 2GB, alguém paga para você: são os anunciantes!

E aí mais uma vez a Web 2.0 muda a maneira como as pessoas usam a Internet e como as empresas de software devem repensar seus negócios, pois do jeito que vai, licença de software será logo logo algo em extinção.