Arquivo

Archive for fevereiro \27\UTC 2013

What most schools don’t teach

 

Categorias:Bla bla bla, Tecnologia

Busca de data null no Solr

Estou a algumas semanas trabalhando em um projeto que tem o Solr como base de dados.
A minha lógica de negócio precisa que eu busque todos os novos clientes ou clientes que foram atualizados recentemente.
O schema do Solr tem duas colunas de data:

  • dw_createdate: Data de criação do cliente (not null)
  • dw_lastupdatedate: Data de atualização do cliente (null)

Ou seja, quando você cria um cliente, a data de atualização é nula. Quando esse cliente é atualizado, o campo dw_lastupdatedate deixa de ser nulo.

Nesse caso a busca ficou bem complexa, pois precisei buscar clientes aonde a data de criação estiver em um range e a data de atualização estiver no mesmo range ou for nula.
O site http://aaronbonner.io/post/25428518232/date-range-with-null-search-in-solr-4-x ajudou muito a entender como funciona a busca por data no Solr aonde o autor teve exatamente o mesmo problema.

A solução é trabalhar sempre com a negativa da data.

A solução final ficou assim:

http://domain.com/search/select?facet.field=dataEntityId&fl=*&
fq=dataEntityId:dataEntity_AE&
fq=instanceId:4729c4b8-3c60-41c8-857a-20501835373c&
fq=(-(-dw_lastupdatedate:[2013-02-26T00:00:01Z%20TO%20*]%20AND%20
dw_lastupdatedate:[*%20TO%20*]))%20OR%20
dw_createdate:[2013-02-13T12:13:52Z%20TO%20*]

E olha que essa query louca funciona direitinho.

Categorias:Solr

Manual básico do Git

Um guia bem básico e pratico para manipular o git por base de comandos.
Quem tiver interesse na leitura segue o link:

http://rogerdudler.github.com/git-guide/index.pt_BR.html

Categorias:Dicas, Ferramentas

C# – Validando range de CEP

Desenvolvi uma validação em C# aonde uma “Área de exclusividade” (que  tem um CEP inicial e um CEP final) não podem conflitar com outras áreas.

No primeiro momento fiz a validação abaixo:

List<AreaExclusividadeDTO> conflitList = listAreaExclusividadeDTO.Where(a =>

a.CEPInicialInt <= objAreaExclusividadeDetail.CEPInicialInt &&

a.CEPFinalInt >= objAreaExclusividadeDetail.CEPFinalInt &&

a.IdObjeto != objAreaExclusividadeDetail.IdObjeto).ToList();

Depois percebi que a validação é falha quando um range de CEP está contido dentro do outro. Por exemplo:

  • Area de exclusividade 1: 04003000 a 04003999
  • Area de exclusividade 2: 04003100 a 04003200

Nesse caso, utilizei uma validação por “Enumerable.Range” conforme abaixo:

List conflitList = listAreaExclusividadeDTO.Where(a =>
(
Enumerable.Range(a.CEPInicialInt, a.CEPFinalInt - a.CEPInicialInt).
Contains(objAreaExclusividadeDetail.CEPInicialInt) == true ||
Enumerable.Range(a.CEPInicialInt, a.CEPFinalInt - a.CEPInicialInt).
Contains(objAreaExclusividadeDetail.CEPFinalInt) == true) &&
a.IdObjeto != objAreaExclusividadeDetail.IdObjeto
).ToList();


Lembrando que o segundo parâmetro do método Enumerable.Range é um “count”, e não o CEP final.
Fiquem atentos para não passar pelo mesmo erro que eu!

AWS – Liberado IP no Security Group

Pra liberar um IP no AWS para as máquinas de banco de dados faz assim:

Acessa o AWS, vai em EC2, no menu do lado esquerdo clica em “Security Groups”, busca pelo grupo desejado e clica nele.
No quadro debaixo, clica na aba “Inbound” e preenche os campos:

Port range: 0-65535
Source: xxx.xxx.xxx/32

O Source é o IP a ser liberado. Sempre termina com o “/32” no final.

Clica em Add Rule e depois em Apply Rule Change.

Categorias:Uncategorized