Prodis' Blog| Desenvolvimento de Software e Esportes por Fernando Hamasaki de Amorim - Part 3


Dois anos do Akira! 102 anos de Corinthians!

1 de setembro de 2012

Parabéns Akira pelo seu segundo aninho!

Parabéns Sport Club Corinthians Paulista pelos 102 anos!

Caetano, Eu e Akira

Esportes, Geral , ,

[IT Web - Ruby Fundamental] RailsConf 2012: vídeos disponíveis

31 de agosto de 2012

Track&Field Run Series 2012 - Shopping Cidade Jardim - 5 km

26 de agosto de 2012

No domingo de 19 de agosto de 2012 parcitipei dos 5 km da corrida Track&Field Run Series 2012 - Shopping Cidade Jardim.

A corrida foi disputada na Marginal Pinheiros e Ponte Estaiada, com largada e chegada em frente ao Shopping Cidade Jardim.

Dessa vez eu não pude correr direito, pois ainda estava me recuperando de um processo cirúrgico.

Foto de Ativo.com

Foto de Ativo.com

Foto de WebRun

Foto de WebRun

Foto de Olho no Atleta

Foto de Olho no Atleta

Foto de Ativo.com

Foto de Ativo.com

Foto de Foco Radical

Foto de Foco Radical

Esportes , , , , , ,

correios-sro-xml - Gem para rastreamento de objetos dos Correios

17 de agosto de 2012

O Sistema de Rastreamento de Objetos dos Correios (SRO) possibilita o acompanhamento dos objetos postados sob registro, incluindo portanto todas as encomendas SEDEX, e-SEDEX e PAC.

Os Correios disponibilizam um Web Service para consultar o progresso na entrega das mercadorias. O SRO XML permite a consulta de até 50 encomendas simultaneamente.

A gem correios-sro-xml utiliza o SRO XML dos Correios facilitando o uso desse recurso em aplicações Ruby.

Para usar o SRO XML em ambiente de produção, é necessário solicitar dados de acesso (usuário e senha) junto aos Correios, conforme descrito no blog dos Correios.

Para o ambiente de desenvolvimento, você pode usar os seguintes dados:

  • Usuário: ECT
  • Senha: SRO

Instalando

Gemfile:
gem 'correios-sro-xml'

Instalação direta:
$ gem install correios-sro-xml

Usando

require 'correios-sro-xml'

sro = Correios::SRO::Tracker.new(:user => "ECT", :password => "SRO")

Rastreamento de um objeto:

object = sro.get("SI047624825BR")
object.number                   # => "SI047624825BR"
object.events.first.date        # => "26/12/2011"
object.events.first.hour        # => "15:22"
object.events.first.place       # => "AC CENTRAL DE SAO PAULO"
object.events.first.description # => "Entregue"

Rastreamento de vários objetos:

objects = sro.get("SI047624825BR", "SX104110463BR")

objects["SI047624825BR"].number                   # => "SI047624825BR"
objects["SI047624825BR"].events.first.date        # => "26/12/2011"
objects["SI047624825BR"].events.first.hour        # => "15:22"
objects["SI047624825BR"].events.first.place       # => "AC CENTRAL DE SAO PAULO"
objects["SI047624825BR"].events.first.description # => "Entregue"

objects["SX104110463BR"].number                   # => "SX104110463BR"
objects["SX104110463BR"].events.first.date        # => "08/12/2011"
objects["SX104110463BR"].events.first.hour        # => "09:30"
objects["SX104110463BR"].events.first.place       # => "CEE JUNDIAI"
objects["SX104110463BR"].events.first.description # => "Entregue"
Modo de resultado (result mode)

Um objeto pode ter um ou mais eventos. Por padrão, o modo de resultado do rastreador irá retornar o último evento do objeto.

sro.result_mode # => :last

object = sro.get("SI047624825BR")
object.events.size # => 1

Você pode configurar para o retorno ser todos os eventos do objeto.

sro.result_mode = :all

object = sro.get("SI047624825BR")
object.events.size # => 5
Tipo de consulta (query type)

Existem duas maneiras para consultar objetos no rastreador:

Lista de objetos

Onde todos os números de objetos serão consultados (o padrão).

sro.query_type # => :list

objects = sro.get("PB996681660BR", "PB996681700BR")
objects.keys # => ["PB996681660BR", "PB996681700BR"]
Intervalo de objetos

No qual você fornece primeiro e último números de objetos de um intervalo.

sro.query_type = :range

objects = sro.get("PB996681660BR", "PB996681700BR")
objects.keys # => ["PB996681660BR", "PB996681673BR", "PB996681687BR", "PB996681695BR", "PB996681700BR"]

Configurações

Timeout

Por padrão, o tempo de espera de resposta (timeout) para uma requisição ao SRO XML é de 5 segundos. Após isso, se o SRO XML não responder, uma exceção do tipo Timeout::Error será lançada.

Você pode configurar esse tempo de espera usando o módulo Correios::SRO.

Correios::SRO.configure do |config|
  config.request_timeout = 3  # Configura o tempo de espera para 3 segundos
end
Log

Por padrão, cada chamada ao SRO XML é logada em STDOUT, com nível de log :info, usando a gem LogMe.

Exemplo de log:

I, [2012-08-17T00:55:10.531780 #22692]  INFO -- : Correios-SRO-XML Request:
POST http://websro.correios.com.br/sro_bin/sroii_xml.eventos
Usuario=ECT&Senha=SRO&Tipo=L&Resultado=U&Objetos=PB996681660BR

I, [2012-08-17T00:55:10.750308 #22692]  INFO -- : Correios-SRO-XML Response:
HTTP/1.1 200 OK
<?xml version="1.0" encoding="iso-8859-1" ?>
<sroxml>
   <versao>1.0</versao>
   <qtd>1</qtd>
   <TipoPesquisa>Lista de Objetos</TipoPesquisa>
   <TipoResultado>Último evento</TipoResultado>
     <objeto>
       <numero>PB996681660BR</numero>
       <evento>
          <tipo>BDE</tipo>
          <status>01</status>
          <data>05/07/2012</data>
          <hora>21:11</hora>
          <descricao>Entregue</descricao>
          <recebedor>                         </recebedor>
          <documento>                         </documento>
          <comentario>                         </comentario>
          <local>CDD VILA ANDRADE</local>
          <codigo>05724970</codigo>
          <cidade>SAO PAULO</cidade>
          <uf>SP</uf>
          <sto>72824000</sto>
      </evento>
     </objeto>
</sroxml>

Se você configurar o nível de log como :debug, serão logados também todos os cabeçalhos HTTP da requisição e da resposta:

D, [2012-08-17T00:58:56.226742 #22692] DEBUG -- : Correios-SRO-XML Request:
POST http://websro.correios.com.br/sro_bin/sroii_xml.eventos
accept: */*
user-agent: Ruby
content-type: application/x-www-form-urlencoded
Usuario=ECT&Senha=SRO&Tipo=L&Resultado=U&Objetos=PB996681660BR

D, [2012-08-17T00:58:56.495131 #22692] DEBUG -- : Correios-SRO-XML Response:
HTTP/1.1 200 OK
date: Fri, 17 Aug 2012 03:58:56 GMT
server: Oracle-Application-Server-10g/10.1.2.0.2 Oracle-HTTP-Server
content-length: 855
content-type: text/html; charset=ISO-8859-1
x-cache: MISS from 127.0.0.1
connection: close
<?xml version="1.0" encoding="iso-8859-1" ?>
<sroxml>
   <versao>1.0</versao>
   <qtd>1</qtd>
   <TipoPesquisa>Lista de Objetos</TipoPesquisa>
   <TipoResultado>?ltimo evento</TipoResultado>
     <objeto>
       <numero>PB996681660BR</numero>
       <evento>
          <tipo>BDE</tipo>
          <status>01</status>
          <data>05/07/2012</data>
          <hora>21:11</hora>
          <descricao>Entregue</descricao>
          <recebedor>                         </recebedor>
          <documento>                         </documento>
          <comentario>                         </comentario>
          <local>CDD VILA ANDRADE</local>
          <codigo>05724970</codigo>
          <cidade>SAO PAULO</cidade>
          <uf>SP</uf>
          <sto>72824000</sto>
      </evento>
     </objeto>
</sroxml>

Para desabilitar o log, mudar o nível do log ou configurar um outro mecanismo de log, use o módulo Correios::SRO.

Correios::SRO.configure do |config|
  config.log_enabled = false   # Desabilita o log
  config.log_level = :debug    # Altera o nível do log
  config.logger = Rails.logger # Usa o logger do Rails
end
Exemplo de configuração
Correios::SRO.configure do |config|
  config.log_level = :debug
  config.logger = Rails.logger
  config.request_timeout = 3
end
Código no Github

https://github.com/prodis/correios-sro-xml

Gem no RubyGems.org

https://rubygems.org/gems/correios-sro-xml

Ruby , , , ,

Corinthians Campeão da Libertadores 2012

5 de julho de 2012

Corinthians Campeão da Libertadores 2012

Corinthians se consagrou Campeão da Libertadores de 2012 ao vencer o Boca Júnior na final por 2 x 0, no estádio do Pacaembu em São Paulo, ontem à noite, 4 de julho de 2012.

Este é o primeiro título da Copa Libertadores da América do Corinthians, que fez uma campanha incontestável, sendo campeão invicto.

Contra tudo e contra todos, a preocupação que o Corinthians cria nos torcedores de outros times, que acabam torcendo primeiro para o fracasso do Corinthians e só depois para o sucesso do seu time, é mais um das coisas que faz o Corinthians o time mais popular do Brasil.

Parabéns a todos os corintianos. Somente quem é Corinthians sabe realmente o que é ser Corinthians.

Foto de Terra

Foto de Terra

Foto de UOL

Foto de UOL

Foto de UOL

Foto de UOL

Foto de Terra

Foto de Terra

Foto de Terra

Foto de Terra

Foto de UOL

Foto de UOL

Foto de UOL

Foto de UOL

Foto de Netshoes

Foto de Netshoes

Foto de Corinthians.com.br

Foto de Corinthians.com.br

Esportes , , , ,

7Masters Ruby: 7 coisas que todo desenvolvedor Ruby on Rails deveria fazer

2 de julho de 2012

No dia 27 de junho de 2012 rolou no iMasters a edição Ruby do 7Masters, um evento que reúne 7 palestrantes, no qual cada um deles faz um apresentação de 7 minutos de um assunto relacionado ao tema do evento.

Eu participei com a apresentação “7 coisas que todo desenvolvedor Ruby on Rails deveria fazer”, mostrando dicas que irão ajudar a manter o código livre de erros, deixá-lo mais fácil de ser mantido e fazer com que os usuários da aplicação tenham uma experiência mais agradável ao utilizá-la.

 

Abaixo estão os slides de palestra:

 

Agradeço ao iMasters pela oportunidade e ao Alê Borba pelo convite.

Eventos, Ruby , , , , , ,

Track&Field Run Series 2012 - Shopping Villa Lobos - 2ª Etapa - 10 km

1 de julho de 2012

No domingo de 24 de junho de 2012 parcitipei dos 10 km da corrida Track&Field Run Series 2012 - Shopping Villa Lobos - 2ª Etapa.

A corrida foi disputada em torno do Parque Villa Lobos, largando no Shopping Villa Lobos, passando pela Praça Panamericana, Ponte do Jaguaré e com a chegada também no Shopping Villa Lobos.

Como sempre, algo muito bom dessa prova foi a limitação de inscrições. Havia menos de 3.000 corredores, o que facilitou bastante a corrida durante todo o percurso.

Tempo total: 00:49:49

Tempo médio por km: 04:59

Tempo em cada km:

  1. 05:05
  2. 04:44
  3. 04:52
  4. 04:57
  5. 04:55
  6. 05:14
  7. 05:20
  8. 05:11
  9. 04:48
  10. 04:43

Eu, Akira e Patricia

Eu, Akira e Patricia

Diego Martinez, Guilherme Pinotti, Danilo Melo, Eu, Glauco Oliveira, José Fernandes, Fábio Perella, Edvaldo Cruz, Guilherme Duarte, Mariana Leite e Luiz Ozaki

Diego Martinez, Guilherme Pinotti, Danilo Melo, Eu, Glauco Oliveira, José Fernandes, Fábio Perella, Edvaldo Cruz, Guilherme Duarte, Mariana Leite e Luiz Ozaki

Fabio Perrella e Eu

Fabio Perrella e Eu

Foto de Foco Radical

Foto de Foco Radical

Foto de Olho no Atleta

Foto de Olho no Atleta

Foto de WebRun

Foto de WebRun

Foto de Foco Radical

Foto de Foco Radical

Esportes , , , , ,

[IT Web - Ruby Fundamental] Curso grátis de Engenharia de Software para SaaS com Ruby on Rails

2 de junho de 2012

Fila Night Run 2012 - Etapa 1 - 5 km

29 de maio de 2012

Na noite do sábdo de 12 de maio de 2012 parcitipei dos 5 km da primeira etapa da Fila Night Run 2012.

Fila Night Run 2012

A corrida foi disputada no Autódromo de Interlagos, em um percurso com bastante trechos em descida.

Tempo total: 00:23:06

Tempo médio por km: 04:37

Classificação total: 101

Classificação por categoria (M3539): 16

Classificação por sexo: 94

Foto de Ativo.com

Foto de Ativo.com

Alexandre Anjos e sua namorada, Eu, José Fernandes e sua namorada

Alexandre Anjos e sua namorada, Eu, José Fernandes e sua namorada

A parte negativa, como é de praxe da Fila Night Run, foi a má organização. O guarda-volumes era muito longe da arena/largada. Para pegar minhas coisas no guarda-volumes depois da corrida, tive que atravessar o percurso da corrida, pois não havia outro caminho para passar.

Esportes , , , , ,

[IT Web - Ruby Fundamental] Módulos para definir métodos globais

6 de maio de 2012