Blog and Site, BETA!
Random header image... Refresh for more!

Posts from — June 2009

Luau Berimbau – 04/07

Não tô ganhando nada pra divulgar, mas parece que vai ser uma festinha legal. Impressionante que tem até um videozinho da hora de promoção da festa com os caras das bandas que vão tocar lá, massa:

Diz que vai ter roda de capoeira nos intervalos também, quero ver, quero ver :D

June 30, 2009   1 Comment

A história do Akamai

Palestra imprescindível para quem deseja entender como a Web funciona na prática. Eu escrevi: IMPRESCINDÍVEL. A história do Akamai:

June 29, 2009   No Comments

Dicas de otimização de PHP do Google estavam furadas

Recentemente eu postei sobre a página do google com dicas de otimização para a web, enfatizando o tutorial sobre PHP. Por incrível que pareça, as dicas não eram tão boas assim! Veja:

PHP performance tips from Google

A maioria das dicas dadas no tutorial do google realmente funcionam, mas apenas para versões antigas (3.. 4), as versões mais modernas possuem otimizações para os casos ilustrados. Fail do Google, hein? Se até eles podem, por que não eu? :D

Uma discussão sobre o fail também pode ser encontrada na própria lista do projeto.

Fonte: http://www.phpdeveloper.org/news/12771

June 29, 2009   No Comments

Apresentação do PHP Brasil Comunidades no FISL

Slides da apresentação feita na reunião do PHP Brasil Comunidades durante o FISL’09. Tem um panorama interessante das comunidades por todo o Brasil. O PHPMS está forte! :D

June 29, 2009   No Comments

Crie namespaces melhores em PHP

Um artigo recente de Nathan A. Good no IBM Developer Works dá algumas dicas sobre nomenclatura de namespaces, agora que eles estão pra chegar ao mundo PHP. Pra quem já programa em outra linguagem que possua namespaces  é tudo bastante natural. Pra quem só trabalhou com PHP até hoje, acho que vale a pena dar uma lida.

Fundamentos

Por que usar namespaces? Os dois objetivos principais são evitar colisões e ajudar na organização do código. Duas classes de mesmo nome podem possuir comportamentos completamente diferentes. As representações de um automóvel para uma fabricante de carros e para uma empresa de seguros são diferentes. Sem namespaces, era comum adicionar o contexto ao nome da classe: Ford_Automovel e ItauSeguros_Automovel, por exemplo (tosco, mas dá pra pegar a idéia, né?).

E agora, como é?

Para acessar uma classe Foo contida no namespace IBM, por exemplo, deve-se fazer:

<?php
$foo = new \IBM\Foo();
?>

Como pode ser percebido, o identificador de namespaces é a backslash “\“.

Notas: namespaces não correspondem a pastas no sistema de arquivos, como Java, e também podem conter funções e constantes, além de classes.

E para definir a classe acima no seu respectivo namespace?

<?php
namespace IBM;

class Foo {
...
}
?>

E como eu escolho os nomes para os meus namespaces? Em Java a convenção é utilizar o seu domínio (ou da sua empresa) ao contrário: br.eti.josericardo, por exemplo. Eu, pessoalmente, acho legal essa convenção e não vejo problema em segui-la também no PHP.

Mas como não foi estabelecida nenhuma convenção oficial neste sentido. As sugestões do Nathan são:

  1. No nível mais alto usar o nome do projeto (eg. Greeter) ou algo sobre o domínio (contexto mesmo): IBM\Greeter e IBM\MyApp\Account, respectivamente.
  2. Nos níveis mais baixos usar o nome do projeto ou da aplicação. Ele diz que tenta manter a quantidade de subnamespaces entre 5 e 9, pra facilitar a memorização.
  3. Em relação ao reuso, tomar cuidado para não criar namespaces muito especializados. Para coisas que serão reaproveitadas em outros projetos, KISS: use namespaces como Lib, Common e coisas do gênero.
  4. Utilize UpperCase camel para os namespaces: MyProduct, FooBar, etc.

Para declarar subnamespaces, faça:

namespace IBM\Greeter;

namespace IBM\MyApp\Account;

e assim por diante.

Hey! PHP tem alias também!

Pelo pouco visto acima, já deve ter gente pensando “putz, vou ter que digitar esse mundaréu de coisas só pra acessar um método ou uma classe?”.
A resposta é não! Como? Importe o namespace (use) e, opcionalmente, defina um alias para o namespace ou classe (não funciona para funções ou constantes), exemplos:

use MyCompany\Common\Validation; // acessa-se como Validation
use MyCompany\Common\Validation as Validators; // acessa-se como Validators
use MyCompany\Common\NomeDeClasseBastanteLongo as NomeCurto;

É importante notar que a definição de “imports” (use) e de aliases casam com nomes que não sejam qualificados, ou seja, que não tenham o namespace definido junto com o nome. No exemplo acima, se usarmos NomeCurto, estaremos acessando MyCompany\Common\NomeDeClasseBastanteLongo, mas se usarmos \MyCompany\Lib\NomeCurto, “NomeCurto” não será substituído por NomeDeClasseBastanteLongo e, muito menos, por MyCompany\Common\NomeDeClasseBastanteLongo. Understood?

Por fim, é possível também definir mais que um namespace em um mesmo arquivo. A recomendação é que isto não seja feito, mas, caso você queira muito, faça (note as chaves):

namespace MyProject {
    const CONNECT_OK = 1;
    class Connection { /* ... */ }
    function connect() { /* ... */  }
}

namespace AnotherProject {
    const CONNECT_OK = 1;
    class Connection { /* ... */ }
    function connect() { /* ... */  }
}

namespace { // código global
    session_start();
    $a = MyProject\connect();
}

Acabei saindo do escopo do post, mas eu comecei a tirar umas dúvidas enquanto lia o artigo do Nathan e achei que seria legal compartilhar com a diminuta “audiência” deste blog :)
Fontes:

http://www.ibm.com/developerworks/opensource/library/os-php-namespaces

http://br.php.net/manual/en/language.namespaces.php

June 26, 2009   2 Comments

Scalable Internet Architectures

Conjunto interessante de slides sobre boas práticas de desenvolvimento de software e de construção de soluções escaláveis:

Scalable Internet Architecture

O autor se chama Paul M. Jones. Quote do dia:

“Good judgement comes from experience. Experience comes from bad judgement”.

Mais sobre escalabilidade: http://en.wikipedia.org/wiki/Scalability. Eu desconhecia as variantes horizontal e vertical de escalabilidade, citadas na apresentação.

Outra coisa que eu não conhecia e parece ser interessante e útil: Apache CouchDB: http://couchdb.apache.org“Apache CouchDB is a distributed, fault-tolerant and schema-free document-oriented database accessible via a RESTful HTTP/JSON API” – escrita em Erlang! Será que o projeto tem futuro agora, após o lançamento do Google Fusion? Ambos os projetos parecem ser bastante próximos, conceitualmente. Não sei, tenho que olhar mais a fundo.

De qualquer forma, fiquei na pilha pra ler o livro  “Scalable Internet Architectures“, não é tão recente, mas a Web também não mudou tanto assim.

June 26, 2009   No Comments

Saiu o Eclipse PDT 2.1

Seis meses após o lançamento da última versão estável e acompanhando o lançamento do Eclipse Galileo, acaba de sair a nova versão do PDT, a 2.1.

E quais são as novidades? Acho que o principal é o suporte às novas funcionalidades do PHP 5.3, como namespaces e closures. Bom trabalho Eclipse Project :)

Ha! O PDT também tem uma wiki com mais detalhes.

June 26, 2009   No Comments

Filme de Besouro Mangangá

Pra quem é da capoeira não precisa dizer nada, besouro é tema de várias músicas. Agora nas telinhas do cinema e NÃO É documentário! Very nice!

Fonte: Jovem Nerd

June 25, 2009   No Comments

E-mail addict? Aprenda a usar os atalhos do Gmail

Uma funcionalidade que eu sabia que existia, mas nunca havia parado para dar uma olhada no Gmail, é os atalhos de teclado. O mais legal é que dá pra fazer TUDO que pode ser feito através da interface e até algumas coisas a mais.

Se você é, como eu, viciado em e-mails (telefone pra quê, né?) e listas de discussão e já acha que o Gmail é praticamente um sistema operacional, creio que aprender a usar os atalhos pode te salvar um bom tempo, ou pelo menos dá a impressão de ser mais eficiente. Na pior das hipóteses, é muito mais geek, o que já seria uma ótima justificativa por si só :D

Basta habilitar os atalhos nas configurações do Gmail (não testei na versão em português, usar o Gmail em português é o mesmo que comprar uma ferrari com limitador de velocidade) e ir apertando as letrinhas. Com o tempo você já vai ser um ninja que organiza, lê e envia e-mails e um tapa. Os atalhos que eu achei mais exóticose/ou úteis: m, /, a e y.

Ha! Dá para personalizar os atalhos também, basta habilitar a opção Custom keyboard shortcuts do Gmail Labs. The sky is the limit!

Por fim, se o seu vício em e-mails está atrapalhando a sua produtividade, o primeiro passo é admitir que você precisa de ajuda. Feito isto, você pode procurar coisas que possam ao menos amenizar os danos. Você pode habilitar a opção “Email Addict” do Gmail Labs, por exemplo. Se o seu problema é organização da inbox, o 43folders sempre pode te dar uma ajuda. Agora, se você está no fundo do poço, leia isto.

June 24, 2009   No Comments

“Let’s make the web faster” (Google)

É, ao que tudo indica o Page Speed era apenas a ponta do iceberg. O Google acaba de lançar mais uma página relacionada ao aumento de desempenho na web: Let’s make the web faster. A página trás uma série de tutoriais sobre como tornar as páginas mais rápidas. Vários temas são abordados, inclusive PHP, veja o vídeo:

Isso tudo faz parte de uma nova iniciativa do Google de compartilhamento e geração de novas informações para que a web, sua plataforma de desenvolvimento, se torne cada vez mais eficiente. Bem, acho que ninguém tem nada a perder, correto?

As dicas para PHP:

  1. Não copie variáveis sem ter um motivo
  2. Utilize aspas simples para delimitar strings
  3. Utilize echo e, ao invés de concatenar as strings e variáveis, passe-as como argumentos:
    echo 'Escrevendo duas variáveis: ', $var1, ' e ', $var2;
  4. Utilize switch/case ao invés de if/else.

June 24, 2009   1 Comment