PPCA2014 / ppca_soa

Barramento SOA da Turma PPCA 2014
3 stars 8 forks source link

Desenvolver módulo ppca_rota.erl #5

Closed evertonagilar closed 9 years ago

evertonagilar commented 9 years ago

Tarefa 03: Desenvolver um módulo responsável pelo armazenamento das rotas.

O módulo deve conter pelo menos os métodos:

adicionar rota remover rota lookup da rota

Prioridade: Alta

evertonagilar commented 9 years ago

Drausio, vamos trabalhar juntos nessa tarefa ao longo da semana. Tentei atribuir eu na tarefa mas ele removeu você.

evertonagilar commented 9 years ago

Estou lendo o capítulo 17 do livro e ele ensina a criar servidores que guardam estado, ou seja, que armazenam coisas enquanto executam.

É utilizado dicionários. Documentação: http://www.erlang.org/doc/man/dict.html

drausio commented 9 years ago

Inclui uma versão do módulo de rotas. Fiz uma classe de teste que auxilia no entendimento. Utilizei o Ets , achei mais tranquilo que Dictionary. Ficaram as seguintes pendências : fazer a chamada a partir do request, fazer o parser do JSON e conectar a futura camada de persistência.

evertonagilar commented 9 years ago

Ótimo Drausio.

Obs.: Pelo livro, a única questão em se utilizar Ets em vez de Dict é quando precisa-se "grande espaço de armazenamento" e acesso rápido, o que não é nosso caso.

Alguns pontos que quero trocar idéias com você:

1) No arquivo de configuração tem o tipo -record(rota, {metodo="GET", url, async, funcao}) que você pode usar. Ao invez de armazenar uma string, armazena records no ets para que não seja preciso fazer parser de strings.

Quando o cliente solicitar um rota, exemplo lookup("/hello_world"), vai receber uma instância de uma rota, que o cliente pode usar para acessar os atributos, como uma classe Java ou struct C.

evertonagilar commented 9 years ago

Na verdade o cliente da rota vai ser o módulo ppca_request que vai utiliza-lo para obter a rota e invocar o serviço.

Quando nós projetarmos a interface de um módulo de serviço provavelmente vai ter um local neste módulo onde vamos registrar as rotas daquele serviço usando os métodos do módulo ppca_route.

evertonagilar commented 9 years ago

Oi Drausio, vi o seu commit, gostaria de ver contigo se nós podemos registrar o ServManager no ppca_soa. Eu vi que ele é instanciado em toda requisição. Será que ele não poderia ser criado na abertura como ppca_logger e ppca_server? Caso você ache que não tudo bem.

celsonjunior commented 9 years ago

Serv Manager é o gerenciador de recursos? Um YARN da vida?

Em 7 de maio de 2015 11:40, Everton de Vargas Agilar < notifications@github.com> escreveu:

Oi Drausio, vi o seu commit, gostaria de ver contigo se nós podemos registrar o ServManager no ppca_soa. Eu vi que ele é instanciado em toda requisição. Será que ele não poderia ser criado na abertura como ppca_logger e ppca_server? Caso você ache que não tudo bem.

— Reply to this email directly or view it on GitHub https://github.com/PPCA2014/ppca_soa/issues/5#issuecomment-99891158.

evertonagilar commented 9 years ago

Drausio, o payload que vc está recebendo já é um JSON convertido em tipo Erlang.

O servidor já fez isso, inclusive se o payload não for um JSON será retornado erro HTTP 415 para o cliente e nem vai enviar a requisição para o ppca_request.

celsonjunior commented 9 years ago

Alguem lembra ou tem o texto da questão 1, da prova de construção de SW?

http://blog.caelum.com.br/comecando-com-o-calculo-lambda-e-a-programacao-funcional-de-verdade/

Em 7 de maio de 2015 12:22, Everton de Vargas Agilar < notifications@github.com> escreveu:

Drausio, o payload que vc está recebendo já é um JSON convertido em tipo Erlang.

O servidor já fez isso, inclusive se o payload não for um JSON será retornado erro HTTP 415 para o cliente e nem vai enviar a requisição para o ppca_request.

— Reply to this email directly or view it on GitHub https://github.com/PPCA2014/ppca_soa/issues/5#issuecomment-99908303.

evertonagilar commented 9 years ago

Drausio, tá dando esta warning ao compilar o arquivo ppca_route.erl

src/ppca_route.erl:2: Warning: Non-UTF-8 character(s) detected, but no encoding declared. Encode the file in UTF-8 or add "%% coding: latin-1" at the beginning of the file. Retrying with latin-1 encoding.

Verifique se sua workspace está configurada para UTF8.

mhokama commented 9 years ago

Quando enfrentei esse erro era porque tinha no código comentários com acentos. Tirei a acentuação e não deu mais esse Warning. Date: Sun, 17 May 2015 15:29:09 -0700 From: notifications@github.com To: ppca_soa@noreply.github.com Subject: Re: [ppca_soa] Desenvolver módulo ppca_rota.erl (#5)

Drausio, tá dando esta warning ao compilar o arquivo ppca_route.erl

src/ppca_route.erl:2: Warning: Non-UTF-8 character(s) detected, but no encoding declared. Encode the file in UTF-8 or add "%% coding: latin-1" at the beginning of the file. Retrying with latin-1 encoding.

Verifique se sua workspace está configurada para UTF8.

— Reply to this email directly or view it on GitHub.

evertonagilar commented 9 years ago

Oi Drausio, amanhã vou fazer merge com seu commit de algumas modificações para tratar de chamadas assíncronas e tratamento de erro.

drausio commented 9 years ago

Tentei tambem alterar o encode para utf-8 , veja se resolveu.

Em sexta-feira, 22 de maio de 2015, Everton de Vargas Agilar < notifications@github.com> escreveu:

Oi Drausio, amanhã vou fazer merge com seu commit de algumas modificações para tratar de chamadas assíncronas e tratamento de erro.

— Reply to this email directly or view it on GitHub https://github.com/PPCA2014/ppca_soa/issues/5#issuecomment-104499101.

evertonagilar commented 9 years ago

Resolveu Drausio!

O Erlang trabalha por default com UTF-8.

Fiz um grande commit com tratamento de erros. Não esqueça de fazer git pull.

evertonagilar commented 9 years ago

Vou fechar esta atividade, demais modificações em ppca_route, vou abrir issues específicas.