By: Eduardo Almeida- 29/6/2011
Em: editorial, Notícias & novidades - Comentários: 1 - Leituras: 2728
É com imenso prazer, que anunciamos para vocês, nossos clientes que caminharam conosco até aqui, que o novo Painel do Cliente já está em uma fase adiantada em seu desenvolvimento.
No Painel do Cliente, será possível gerenciar seus domínios, gerenciar e-mails e senhas, acompanhar o histórico financeiro, bem como emitir segunda vias de boletos, criar tickets de suporte, acompanhar seu projetos em andamentos, participar do FAQ, ter acesso às documentações de todos os softwares, dentre outros.
Nesta segunda-feira (27-06-11) foi liberado a Central de Tickets de Suporte. O acesso ao mesmo já está disponível para os clientes.
Quando o Painel do Cliente estiver 100% pronto, enviaremos para os clientes as novas informações para acesso ao mesmo. Por enquanto, os clientes que precisarem de criar tickets, basta solicitar o recadastramento via e-mail ou no telefone (27) 3021-1530.
Pros curiosos, segue 2 prints para uma pequena prévia.


By: Eden Cardim- 7/6/2011
Em: editorial, Notícias & novidades - Comentários: 0 - Leituras: 2199
O ecletismo do grupo São Paulo Perl Mongers tem gerado inúmeras discussões de cunho político, já a um bom tempo. Foi nessa linha que o então líder do grupo, Thiago Rondon, deu início ao projeto Opendata BR, influenciado pela repercussão a respeito do wikileaks.
A iniciativa propõe a publicação adequada de todos os dados públicos produzidos no Brasil, como tentativa de melhorar a transparência administrativa. O objetivo do projeto é disponibilizar uma plataforma de coleta e acesso a dados, que idealmente irão incluir uma especificação de armazenamento de dados e uma API para interagir com eles.
Infelizmente, os dados disponibilizados pelo estado não apresentam padrão algum e não são adequados para análise computacional. Isso dificulta a formação de uma comunidade de desenvolvedores que estejam dispostos a desenvolver soluções de análise desses dados em conjunto.
Ainda não se sabe ao certo se isso acontece por conta de incompetência administrativa, falta de recursos ou se simplesmente é uma forma do estado evitar de ser transparente.
Um dos primeiros resultados visíveis do projeto é o http://paraondefoiomeudinheiro.com.br. Acessando o site, você consegue visualizar os gastos do estados em diversas áreas da admnistração pública e navegar para dentro de setores mais específicos. Você também pode informar a sua contribuição de imposto e calcular o valor exato de quanto do seu dinheiro está indo para cada área.
O mais interessante é que esse serviço foi montado em um final de semana pelo Thiago Rondon, foram 18 horas de trabalho no total, sinal de que não é tão difícil montar e manter esse tipo de coisa.
A plataforma é toda escrita baseada na linguagem Perl, devido à imensa quantidade de soluções de processamento de texto disponíveis para essa linguagem.
O principal desafio do projeto é transformar os dados em formato arbitrário fornecidos pelo governo em um formato mais adequado para exibição hierarquica numa página web.
DBIx::Class
Para integrar o schema do banco com o framework, só é preciso informar os dados para conexão.
package CMD::Model::DB;
use strict;
use base 'Catalyst::Model::DBIC::Schema';
__PACKAGE__->config(
schema_class => 'CMD::Schema',
connect_info => {
dsn => 'dbi:mysql:db=cmd',
user => 'cmd',
password => 'cmd',
}
);
1;
A partir daí, a conexão acontece automaticamente ao se executar a aplicação, inclusive com re-estabelecimento também automatico, caso algum problema ocorra. O banco pode ser consultado usando o objeto $c, que é passado para todas as subrotinas dos controllers automaticamente pelo framework. Alguns exemplos de interação:
# criar um registro
my $new_node = $c->model('DB::Node')->create({
content => 'foo',
valor => 10,
parent => $node
}
);
# consultar registros
my $node_rs = $c->model('DB::Node')->
search({content => 'foo'});
my $parent_node = $node->parent;
# obter pai do nó atual
$c->stash(foo => 'bar');
$c->forward('View::JSON');
# responde a requisição http com {"foo":"bar"}
O processo começou com a importação de dados em formato CSV, do portal de transparência. Essa foi a principal dificuldade do projeto, o formato dos dados não é adequado para o tipo de navegação apresentada. Então foi necessário renormalizar os dados para uma estrutura de dados em árvore. Se os dados estivessem disponíveis já nesse formato, o serviço poderia ter ido ao ar em apenas 8 horas.
As subdivisões das categorias de despesas podem ser modeladas através de uma árvore.

O banco de dados foi populado a partir de um algoritmo que injeta as linhas do CSV em um banco de dados relacional. A princípio, foi utilizada a abordagem de conjuntos aninhados (nested set), que, como o nome indica, representa a árvore através de relações de pertinência entre conjuntos.

Por ser baseado em conjuntos, o DBIx::Class facilita a implementação desse tipo de modelagem, em particular, já existe uma implementação pronta no CPAN, o DBIx::Class::Tree::NestedSet.
Com o schema do banco de dados implantado, basta parsear o CSV e utilizar as operações fornecidas pelo DBIx::Class::Tree::NestedSet para inserir os nós na árvore, sem ter que escrever o SQL manualmente.
A principal vantagem em não ter que escrever SQL é que a aplicação adere a uma abstração de árvore, invés de uma implementação em baixo nível. Dessa forma, fica fácil trocar a implementação por outra mais adequada no futuro. Isso eventualmente aconteceu no projeto, a troca para uma abordagem de lista de adjacências precisou apenas de ajustes no schema, e da instalação do DBIx::Class::Tree::AdjacencyList, que envolve apenas a troca de
__PACKAGE__->load_components(qw/Tree::NestedSet/);
para
__PACKAGE__->load_components(qw/Tree::AdjacencyList/);
O restante do código permaneceu idêntico, sendo necessária apenas a re-importação do CSV para o novo formato de árvore.
Depois de transformar os dados para uma árvore dentro do banco de dados, fica fácil gerar o conteúdo usando os métodos disponíveis na implementação de árvore. Acontece algo como:
$c->stash->{node} = $c->model('DB::Node')->find({node_id => $id});
$c->forward('View::JSON');
O código está disponível na íntegra em https://github.com/maluco/CMD. Saiba mais sobre o projeto OpenData BR em http://opendatabr.org/.
Desde de 1998 ...
a WEB2 vêm desenvolvendo sites, softwares, implementando ambientes servidores,
prestando consultoria na área de segurança para diversas empresas
como bancos, imobiliárias, agências, cartórios, escritórios de advocacia e até
empresas multi-nacionais. Trabalhamos para criar
experiências intuitivas para os usuários, desenhar interfaces ricas e
elegantes, desenvolver aplicativos úteis, consolidar sites e produtos
que ajudamos a criar, seja desenvolvendo, analisando ou melhorando sua performance. Resumindo, construímos "business" para internet.
Copyright © 2012 WEB2 Soluções LTDA. CNPJ: 14.832.733/0001-05.