Arquivar agosto 2016

Spatialite Ubuntu 16

A biblioteca e o projeto spatialite são bastante especiais. Ela permite que você use um banco de dados SQLite como repositório de dados espaciais, com várias tabelas e relações.

Ela é bastante poderosa neste sentido, pois facilita que usuários GIS armazenem e compartilhem seus dados de forma mais simples, ao invés de enviar um monte de shapefiles para cima e para baixo.

No nosso caso, o problemas são com o Django, não com a biblioteca em si. Devido a algumas mudanças, o Django não consegue rodar, usando ela.

Bem, de acordo com a nova versão do Django e da SpatiaLite, algumas coisas mudaram de lugar e nem sempre o Django consegue encontrar a biblioteca.

Se vocẽ ver um erro do tipo:

Unable to load the SpatiaLite library extension “libspatialite.so.7” because: /usr/lib/x86_64-linux-gnu/libspatialite.so.7: undefined symbol:
sqlite3_spatialite_init

você encontrou o mesmo problema que nós.

Isto foi experimentado na versão do Ubuntu 16.04 e provavelmente afeta a todos os derivados (no nosso caso, afetou o Mint).

A resolução é simples. Instale algumas coisas e defina uma variável de ambiente:

Instale:

sudo apt-get install libspatialite3-mod-spatialite

Configure sua variável de ambiente:

echo SPATIALITE_LIBRARY_PATH="mod_spatialite" >> ~/.bashrc

Reinicie seu shell para que ele possa ler a configuração (ou dê um source no mesmo, tanto faz :D).

No Django, configure:

SPATIALITE_LIBRARY_PATH = 'mod_spatialite'

E aí, tiveram problemas com essa atualização?

Abraços

Hubot e ChatOps

Vocês conhecem o projeto do github, o Hubot?

O hubot é um bot, capaz de te ajudar em diversas tarefas dentro da sua organização. Ele funciona recebendo comandos de uma sala, existente no seu sofware de mensagens instantâneas. Existem vários adaptadores, para programas, como Skype, slack e o mattermost, que é o software que usamos aqui.

Basicamente, você precisa de uma instância dele rodando em algum lugar e conectá-lo ao seu software de mensagens instatâneas.

Não vou entrar em detalhes aqui, pois o processo é diferente para cada software, mas é bastante fácil. Temos uma instância rodando no Heroku.

Deem uma conferida na documentação de como subir o bot, aqui.

Mas como vamos gerenciar nossos projetos?

Aqui na Sigma usamos o Gitlab como nosso gerenciador de repositórios. Não só repositórios, mas tudo mais que o Gitlab traz, de graça para você, como:

  • Usuários
  • Projetos
  • Issues
  • Milestones
  • Merge Requests (similar o Pull Request do Github)
  • Entre outras coisas bacanas!

O que fizemos foi criar um plugin para o Hubot, que escuta alguns comandos específicos, vai no Gitlab, faz as contas referentes ao andamento do projeto e responde no canal do Mattermost.

Bem bacana! Usamos isto para reportar para nosso clientes o andamento dos projetos e gerar gráficos como este aqui em baixo:

Burndown

O hubot, no entanto, pode escutar os seguintes comandos:

>

hubot gitlab search [termo]

hubot gitlab list projects (lista os projetos existentes no Gitlab)

hubot gitlab list milestones [project_id] (lista milestones do projeto)

hubot gitlab list issues [project_id] (list issues do projeto);

hubot gitlab progress [project_id] (gera a medida de progresso do projeto)

São poucos comandos no momento, mas estamos planejando expandir esse camarada. O bacana do hubot é que ele funciona muito bem com qualquer tipo de mensageiro instantaneo que possua um adaptador para ele, ou seja, isso pode ser aplicado mesmo se vocẽ não usa o slack ou o mattermost.

Um exemplo em funcionamento:

Gitlab Agile

É bem simples e dá estatísticas atualizadas!

Como sempre, publicamos nosso pacote no npm e ele é aberto em nosso Gitlab. O mesmo já foi puxado ~300 vezes, desde sexta-feira. É uma métrica e tanto para um projeto tão pequeno, mas acredito que deve ser útil para outras pessoas.

No nosso roadmap, ainda iremos implementar o cadastro de sprints, sua abertura e fechamento, bem como a geração inteira do gráfico através do hubot. Hoje só geramos as estatísticas, mas não é difícil gerar o gráfico completo.

E aí pessoal, curtiram? Fiquem a vontade para forkar, testar e adicionar novos comandos caso tenham interesse.