Closed evertonagilar closed 9 years ago
Drausio, vamos trabalhar juntos nessa tarefa ao longo da semana. Tentei atribuir eu na tarefa mas ele removeu você.
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
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.
Ó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.
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.
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.
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.
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.
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.
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.
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.
Oi Drausio, amanhã vou fazer merge com seu commit de algumas modificações para tratar de chamadas assíncronas e tratamento de erro.
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.
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.
Vou fechar esta atividade, demais modificações em ppca_route, vou abrir issues específicas.
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