Acorda pra Web!

Tecnologia que vai mudar nossas vidas, depois do café.

Mais um Boom Microsoft

4/3/2008
“Nós decidimos que o IE8 irá, por padrão, interpretar conteúdo web na forma mais compatível com os padrões que puder.” - IEBlog

Pra quem está por fora, até pouco tempo atrás o IE8 só seria compatível com os padrões web se a página especificasse isso através de um header HTTP ou de uma tag meta. A comunidade foi completamente contra, e a Microsoft… ouviu!

Essa parece ser a mais nova estratégia terrível da Microsoft para dominar o mercado: seguir padrões, ouvir a comunidade de desenvolvedores e desenvolver produtos de qualidade. Jogo sujo.

Feliz Newtal

24/12/2007

A todos os leitores, colaboradores e amigos, um Feliz Newtal!

Newtal

Internet Explorer: Seguidor fiel dos webstandards

19/12/2007

Pelo menos é o que diz o Blog Oficial do Internet Explorer. O novo protótipo do IE8 passou no famoso ACID2.

E agora, Firefox? Tão te chamando pra briga!

Ah, e só pra constar: Apesar do título sensacionalista desse post, o anúncio no blog oficial só cobre suporte basicamente a HTML e CSS. Nada de mimetypes pra XHTML por exemplo.

Não vejo a hora de por a mão nesse beta, juro mesmo.

PDO: Bancos de dados no PHP5

17/12/2007
  • PDO substitui todas as funções de bancos de dados
  • Não tem PDO no PHP4, tem no PHP5, e só vai ter PDO no PHP6
  • PDO é orientado a objetos
  • PDO é mais rápida do que as demais funções de bancos de dados
  • Você deveria usar PDO
  • Coisas simples são realmente simples no PDO
  • Coisas complexas, são bem mais simples com PDO

É tão fácil…

…Conectar ao banco

PHP
<?php
$banco = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'username','password');
?>

…Pegar um registro baseado em um campo

PHP
<?php
$banco = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'username','password');
$dados_do_cliente = $banco->query('SELECT * FROM clientes WHERE id = 1')->fetch();
?>

…Vários registros de um banco de dados

PHP
<?php
$banco = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'username','password');
$todos_os_clientes = $banco->query('SELECT * FROM clientes')->fetchAll();
?>

…Registros com muitos filtros e condições

PHP
<?php
$banco = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'username','password');
$filtros = array(
'nome'=>'João',
'departamento'=>'TI',
'unidade'=>'Jabaquara',
$consulta = $banco->query('SELECT * FROM clientes WHERE nome = :nome AND departamento = :departamento AND unidade = :unidade')
$clientes_pelo_filtro = $consulta->execute($filtros);
?>

…Incluir dados

PHP
<?php
$banco = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'username','password');
$novo_cliente = array('nome'=>'José','departamento'=>'TI','unidade'=>'Paulista');
$banco->prepare('INSERT INTO clientes (nome,departamento,unidade) VALUES (:nome,:departamento,:unidade)')->execute($novo_cliente);
?>

…Incluir MUITOS dados

PHP
<?php
$banco = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'username','password');
$varios_clientes = array(
0=>array('nome'=>'José','departamento'=>'TI','unidade'=>'Paulista'),
1=>array('nome'=>'Marcos','departamento'=>'Infra','unidade'=>'Jabaquara'),
2=>array('nome'=>'Paulo','departamento'=>'Serviços,'unidade'=>'Bom Retiro')
);
$inserir = $banco->prepare('INSERT INTO clientes (nome,departamento,unidade) VALUES (:nome,:departamento,:unidade)');
foreach ($varios_clientes as $cliente) $inserir->execute($cliente);
?>

…Usar um loop pra iterar sobre os resultados

PHP
<?php
$banco = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'username','password');
foreach ($banco->query('SELECT * FROM clientes') as $cliente) {
print_r($cliente);
}
?>

E tudo isso…

  • Sem sofrer com aquele monte de aspas e strings concatenadas
  • Sem precisar de preocupar com segurança, o PDO faz isso pra você
  • Com a mesma interface pra qualquer banco de dados, muito consistente

Tá esperando o que? Go, PHP5!

Validando XHTML com RDFa embutido

13/12/2007

Agora já é possível criar documentos XHTML+RDFa e validá-los com sucesso. Existe até um selinho especial:

Valid XHTML + RDFa

Coloquei uma página no ar com um teste, inclusive útil para vocês entenderem um pouco da sintaxe do RDFa. Aqui existe um serviço que consegue extrair as informações de um RDFa e transformar em RDF, o sonho de qualquer geek semweb.

Um exemplo das informações que ele pode extrair de uma página:

<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF
  xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
  xmlns:dc='http://purl.org/dc/elements/1.1/'>
    <rdf:Description rdf:about="http://gaigalas.net/rdfa.html">
        <dc:title xml:lang=”en”>XHTML com RDF agora Possvel</dc:title>
        <dc:abstract xml:lang=”en”>Simples exemplo de XHTML+RDFa</dc:abstract>
        <dc:date xml:lang=”en”>2007-12-15</dc:date>
        <dc:subject xml:lang=”en”>XHTML</dc:subject>
        <dc:subject xml:lang=”en”>RDFa</dc:subject>
    </rdf:Description>
</rdf:RDF>

Nesse exemplo, título, descrição, data e dois assuntos foram extraídos. Usei o vocabulário Dublin Core para representar essas informações. Ele é bastante genérico e implementa algumas coisas legais, como a propriedade subject (assunto), que é uma forma padronizada de tags.

Ah, eu já tinha falado do RDFa uma vez, de outros prós do dialeto e alguns contras :)

Santo Graal do Desenvolvimento em PHP

11/12/2007

Finalmente, um debug decente em PHP. Já troquei meu editor antigo por um novo.

Tem breakpoint? Tem sim senhor!

phpeclipse3.JPG

E tem pilha de execução? Tem meu caro amigo!

phpeclipse2.JPG

Controle de Variáveis? Claro que sim!

phpeclipse4.JPG

Até dá pra editá-las em tempo de execução ;)

phpeclipse5.JPG

É o PDT! A jóia secreta, multiplataforma e gratuita da Zend feita para o Eclipse. Uso e recomendo a todos (que possuam uma quantidade considerável de memória em suas máquinas).

SobreAquelasCoisasHiperVerborrágicas (Uma Breve Crítica ao W3C)

6/12/2007

O W3C sem dúvida é especialista em uma verbose desnecessária. Aquelas documentações supertécnicas que ninguém entende, cheias de expressões de gramática técnica, são um saco. Custa lançar uma nota um pouco mais voltada pra humanos normais? :)

Além da documentação, as linguagens também são um pouco exageradas. O DOM por exemplo é cheio dos getAlgumaCoisaDeTalForma, encadeados, cheios de parentNode e childNode por toda parte. Iniciativas interessantes como o SimpleXML, desenvolvido pela equipe do PHP, são muito mais simples. Bibliotecas JavaScript por aí trocam o tão usado getElementById por um mero $ (cifrão).

Sinceramente, o próprio XML é uma baita bizarrice. Ótimo formato, mas não para ser lido por pessoas, como em sua proposta. YAML é bem mais legível e simples.

E o XSLT, simplesmente o melhor sistema de templates que existe, completíssimo e ultra-poderoso não é usado por quase ninguém por ser muito complexo e pouco legível.

Nada contra complexidade. Às vezes você só consegue desenvolver certos tipos de sistemas com ferramentas complexas. Web Semântica, o tema desse blog, é bastante complexa, mas e em relação aos sistemas simples e modestos? Soluções existem, mas quando virá uma solução padrão?

Dica PHP: Tempo de execução da página

5/12/2007

Durante o desenvolvimento do meu framework descubro a cada dia técnicas cada vez mais interessantes no PHP. Na medida do possível, vou intercalar algumas dessas dicas com os posts aqui no Acorda.

O código abaixo, de uma maneira simples, calcula quanto tempo demorou para a página ser processada no sistema. É uma ótima dica para usar durante o desenvolvimento de qualquer sistema.

PHP class pageExecutionTimer {   private $executionTime;   public function __construct()   {   $this->executionTime = microtime(true);   }   public function __destruct()   {   print(&#039;<hr>&#039;.(microtime(true)-$this->executionTime));   } } $p = new pageExecutionTimer();

Usar um loop que executa o mesmo código várias vezes faz a diferença entre o tempo de execução de ambos ser mais evidente. Eu até poderia comparar usando microsegundos, mas não sei realmente qual a diferença entre 0.0015 e 0.0009. Além disso, assegura que a maior parte do processamento do código será daquele trecho, impedindo que outros trechos de código interfiram na sua medição.

PHP for ($i=0;$i<1000000;$i++) { /* Trecho que desejo testar */ }

O funcionamento é simples: Ele cria um objeto que registra o horário de criação em uma precisão de microsegundos e exibe a diferença com o horário de termino do script, que é chamado através do método __destruct.

Não me recordo ao certo em que site vi esse código, que não é meu. De qualquer forma, parabéns ao autor pela excelente idéia prática e simples :)

Um projeto bacana sobre Web Semântica

3/12/2007

Recentemente foi lançado o novo site do ARC, um projeto do Benjamin Nowack que tem como objetivo criar um sistema que interpreta, cria e trabalha com RDF e SPARQL em geral.

Os planos da sua pequena startup, a SemSol, são de criar um pequeno CMS, o Trice, tendo como base o ARC e com banco de dados todinho em RDF, com consultas todinhas em SPARQL.

O SPARQL (ainda estou devendo um post sobre isso) é a linguagem similar ao SQL desenvolvida pelo W3C especificamente para fazer consultas em fontes de dados RDF, ou seja, para “consultar” nós de Web Semântica.

A idéia é bacana e a plataforma excelente. PHP e MySQL é tão comum que até minha calculadora deve suportá-los. Já tive oportunidade de conversar com o Benjamin sobre o sistema enquanto eu desenvolvia algo similar à primeira versão do ARC Store e suas idéias são realmente legais.

Pode parecer papo de geek, mas o grande objetivo do Trice é mostrar que a Web Semântica pode ser indolor! O aplicativo será aos moldes do Wordpress, fácil de usar e instalar. A diferença é o conteúdo, totalmente focado pra essa nova tecnologia.

Provavelmente em alguma versão futura do Base Cube, meu próprio framework, haverá um sistema similar ao ARC desenvolvido totalmente em PHP5 e SQLite, um banco de dados que é um chuchu

Formulários totalmente semânticos com HTML e CSS

30/11/2007

Acabei de bolar uma nova versão de um velho CSS para formulários semânticos em HTML. A nova versão é muito, muito mais bacana. O HTML é puríssimo e o CSS mínimo, funciona em todos os navegadores modernos e valida! E tem gente que ainda usa tabelas ou -pior ainda- listas pra formulários :)

O grande truque é colocar os controles do formulário dentro das labels, chamado de label implícito, você sequer precisa declarar um atributo for=”" para especificar o controle relacionado à aquela label. Encontrei a solução desenhando o novo sistema de templates do meu micro-framework, o Base Cube.

Fiz ele em HTML4, mas é facilmente transformável em XHTML, basta apenas mudar pequenos detalhes na sintaxe.

Portanto, recomendo darem uma olhada no meu formulário semântico em HTML e CSS, pode poupar bastante tempo na hora de desenvolver!