Este post e curto e simples pois o unico intuito e compartilhar com voces leitores o link do site HTML5 Rocks.Este site possui diversos guias sobre as melhores praticas no desenvolvimento de aplicacoes e sites utilizando a tecnologia HTML5.Se voce pode se dar ao luxo de focar-se apenas nos navegadores mais novos (IE9, Chrome, Firefox, Safari, Opera) entao considere-se sortudo pois seu codigo vai ficar mais simples (sem hacks mirabolantes) e seus produtos muito mais bem acabados.A maior parte dos participantes do projeto acima sao funcionarios da Google, porem existem desenvolvedores independentes e de outras empresas tambem.Apenas lembre-se de nao desenvolver apenas para um dos browsers pois voce pode limitar demais seu publico alvo e nao queremos que a web volte a ser o que era antes de 1996.Abraco a todos. Mais uma postagem da serie do Pequeno Guia do Mochileiro do PostgreSQL.Me pergutaram no servico, como agrupar os resultados de um select por hora, ignorando as informacoes de minuto/segundo.Segue abaixo o exemplo de como fazer esse agrupamento:experiments=# create table test_group_date(count real, date timestamp);CREATE TABLEexperiments=# insert into test_group_date(count, date) values (1, TIMESTAMP '2001-02-16 20:38:40');INSERT 0 1experiments=# insert into test_group_date(count, date) values (2, TIMESTAMP '2001-02-16 21:38:40');INSERT 0 1experiments=# insert into test_group_date(count, date) values (2, TIMESTAMP '2001-02-16 21:58:40');INSERT 0 1experiments=# insert into test_group_date(count, date) values (2, TIMESTAMP '2001-02-16 21:59:40');INSERT 0 1experiments=# select * from test_group_date; count | date-------+--------------------- 1 | 2001-02-16 20:38:40 2 | 2001-02-16 21:38:40 2 | 2001-02-16 21:58:40 2 | 2001-02-16 21:59:40(4 rows)experiments=# select sum(count), date_trunc('hour', date) from test_group_date group by date_trunc('hour', date)experiments-# ; sum | date_trunc-----+--------------------- 6 | 2001-02-16 21:00:00 1 | 2001-02-16 20:00:00(2 rows)experiments=# select agrupado_por_hora.hora, agrupado_por_hora.max_val - agrupado_por_hora.min_valfrom ( select date_trunc('hour', date) hora, min(date) min_val, max(date) max_val from test_group_date group by date_trunc('hour',date) ) as agrupado_por_hora; hora | ?column?---------------------+---------- 2001-02-16 21:00:00 | 00:21:00 2001-02-16 20:00:00 | 00:00:00(2 rows)experiments=#Para mais detalhes sobre a funcao date_trunc e outras funcoes de data. Acesse a documentacao do PostgreSQL.Note que alem da date_trunc existe a funcao date_part. A diferenca e que a date_part retorna apenas o pedaco solicitado (ou seja, apenas a hora ou minuto, etc...). Este post e mais um da serie de guias que venho fazendo, postando aqui codigos e trechos de codigos que ajudaram a resolver algum problema durante o dia-a-dia do desenvolvedor.Mas vamos ao que interessa, o trecho abaixo troca o owner de todas as tabelas (do schema public) da sua base de dados postgresql pelo onwer que voce informar.UPDATE pg_class SET relowner = (SELECT oid FROM pg_roles WHERE rolname = '$USER') WHERE relname IN (SELECT relname FROM pg_class, pg_namespace WHERE pg_namespace.oid = pg_class.relnamespace AND pg_namespace.nspname = 'public');*Outro link interessante (youtube) Este post e uma maneira de compartilhar minha felicidade que tive alguns dias atras ao conseguir compilar com sucesso a engine Irrlicht no Ubuntu 11.10.Para comeco de conversa, a maquina que estou utilizando possui as placas integradas Intel Corporation Mobile GM965/GL960 que nao sao o top de linha no que diz respeito a aceleracao 3d.Apesar dessa limitacao, instalando o mesa-utils e rodando glxinfo o sistema informa que possui renderizacao direta! O que e um bom sinal pois melhora consideravelmente o