Notícias & novidades


Painel do Cliente, mais comodidade e rapidez para você!

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.

  • fazer um comentáriofazer um comentário (1)
  • avaliação

Para onde foi o meu dinheiro?

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.

Como o serviço foi construído

A plataforma é toda escrita baseada na linguagem Perl, devido à imensa quantidade de soluções de processamento de texto disponíveis para essa linguagem.

Tecnologias

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

DBIx::Class é um mapeador objeto-relacional multi-camada, ele dá acesso a todos os níveis de abstração existentes num banco de dados, desde o nível mais abstrato onde trabalhamos com conjuntos e suas operações até o nível mais baixo, onde se pode escrever SQL puro.
Catalyst

A aplicação web é escrita em Catalyst, um framework para web baseado em perl moderno. Esse framework possui uma vasta ecologia de componentes implementados para diversas funcionalidades de aplicações web, através da integração de outros módulos do CPAN. Em particular, o mais relevante para o projeto foi a facilidade de integração com o 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
Catalyst::View::JSON

Um dos componentes disponíveis no CPAN para renderização de dados em JSON, utilizado para serializar os dados que são visualizados com javascript no front-end. É bem simples gerar JSON com essa view: 
$c->stash(foo => 'bar');
$c->forward('View::JSON');
# responde a requisição http com {"foo":"bar"}

Importando os dados

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.

http://blog.edencardim.com/wp-content/uploads/2011/06/wpid-pofomd-tree.png

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.

http://blog.edencardim.com/wp-content/uploads/2011/06/pofomd-nested-set.png

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.

Consultando os Dados

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');

Como contribuir

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/.

  • fazer um comentáriofazer um comentário (0)
  • avaliação

buscar na WEB2:

pesquisar

receber nossa newsletter:

participar da newsletter

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. Microsoft Partner

PostgreSQL Perl