Arquivo de December, 2007
Internet Explorer: Seguidor fiel dos webstandards
Wednesday, December 19th, 2007Pelo 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
Monday, December 17th, 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
Thursday, December 13th, 2007Agora já é possível criar documentos XHTML+RDFa e validá-los com sucesso. Existe até um selinho especial:
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
Tuesday, December 11th, 2007Finalmente, um debug decente em PHP. Já troquei meu editor antigo por um novo.
Tem breakpoint? Tem sim senhor!
E tem pilha de execução? Tem meu caro amigo!
Controle de Variáveis? Claro que sim!
Até dá pra editá-las em tempo de execução
É 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)
Thursday, December 6th, 2007O 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
Wednesday, December 5th, 2007Durante 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('<hr>'.(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
Monday, December 3rd, 2007Recentemente 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


