Postagens

Take the blue pill.

Imagem
Recentemente me envolvi em um projeto onde preciso utilizar um microcontrolador para efetuar leituras de alguns sensores e acabei optando por utilizar a linha STM32 da ST Electronics. Para construir a prova de conceito utilizei uma placa conhecida por Blue Pill . As vantagens são o preço, a facilidade de uso com o IDE Arduino e as especificações: -Microcontrolador STM32F103C8T6 Cortex-M3 de 32 Bits rodando a 72Mhz; -20Kb de RAM; -64Kb de flash; -4 Timers -2 SPI’s -2 I2C’s -2 USART’s -até 40 GPIO’s. Se você está habituado ao IDE do Arduino a maneira mais fácil de começar com o Blue Pill é o projeto stm32duino . Depois de configurado, podemos simplesmente abrir o exemplo Blink e enviar para a memória do dispositivo. O problema de verdade só começa a aparecer quando adicionamos um pouco mais de código e ultrapassamos a barreira dos 64Kb da memória flash. Este simples exemplo Blink gera um binário de 12Kb, o que para projetos maiores é um desperdício. Vou utilizar

Recuperando Software RAID Amazon AWS

Então você acaba de chegar em casa, prepara seu jantar rápido pra poder fazer qualquer outra coisa divertida pós trabalho e BOOM alertas do Nagios dizendo que seu servidor NFS está inoperante. A Amazon possui três tipos principais de armazenamento disponíveis: 1- Disco ephemeral, um tipo de armazenamento que é apagado quando a maquina é reiniciada ou desligada abruptamente. Toda instância AWS possui  uma quantidade fixa desse tipo de disco e seu tamanho varia de acordo com o tipo da instância. 2- Elastic Block Storage (EBS), que é um bloco de armazenamento anexo à instância via rede. Para o sistema operacional é exposto simplesmente como um disco local. 3- EBS com IOP's provisionados, o mesmo descrito no item 2 mas com garantia de performance. Possui custo extra por essa garantia. Para o EBS não existe necessidade de utilizarmos RAID para garantir segurança dos dados uma vez que seu proprio subsistema possui mecânismos de redundância (mesmo assim faça seus snapshots/back

Comentários no Facebook via Graph API

Estou com uma pequena tarefa de replicar a funcionalidade de comentários do Facebook para páginas sem utilizar o plugin social do mesmo. A parte de listar os comentários para uma determinada URL foi relativamente fácil de encontrar , a parte obscura mesmo é conseguir adicionar um comentário. Depois de muito garimpar, encontrei uma gem para ruby chamada Koala que faz boa parte do trabalho pesado (Autenticação e Manutenção dos requests). Essa gem possui um método put_comment  que teóricamente inclui um comentário em um objeto a partir do id, mas como saber o id de uma url no Facebook? Complicando mais ainda, como criar um registro desta url caso não exista no Facebook? Acabei chegando na seguinte receita: Encontrar o id de uma url: FQL : "select comments_fbid from link_stat where url ='[URL]'" Criar um objeto no Facebook quando o id não existir: POST em https://graph.facebook.com com os parâmetros id = [URL], scraper = true Ainda estou procurando uma

Elasticsearch e Mac OSX Mountain Lion

Minha combinação de Elasticsearch 0.17.7 e Java 1.6.0_37 não se deram muito bem e pararam de funcionar. Depois de encontrar este post do Matthew Deiters  http://coderwall.com/p/aphwwq , compreendi o problema. A versão do Java requerida para o ES 0.17 é 32 bits e o OSX esta rodando a versão 64 bits. Para forçar o Java a rodar na versão 32 bits sem possuir o painel Java Preferences é necessário passar a opção -d32 para o executável do java. Como possuo uma instalação utilizando brew, editei o arquivo /usr/local/Cellar/elasticsearch/0.17.7/bin/elasticsearch.in.sh e adicionei a seguinte linha: JAVA_OPTS="$JAVA_OPTS -d32" E tudo voltou ao normal :-)

CFTV com Zoneminder e Linux

Imagem
Resolvi a algum tempo instalar um sistema de vigilância para minha casa. Por acaso acabei encontrando no DealExtreme uma placa de captura para câmeras de vigilância que, pelos comentários, era facilmente configuravel no Linux. Tomei então a iniciativa de pesquisar um pouco e montar meu próprio sistema de monitoramento e gravação utilizando o Zoneminder . Uma das primeiras dúvidas foi qual sistema utilizar, qual *nix flawor, qual hardware, quanto de espaço para armazenamento, qual a necessidade real de processador, etc. Muitas dessas perguntas ainda não possuo uma resposta ou regra básica para determinar, mas neste texto vou descrever os passos que tomei para deixar o sistema funcional. HARDWARE: Como motor do sistema, após ver diversos comentários do tipo "utilize seu velho pc", resolvi adotar uma motherboard de "baixo consumo". Por não ser algo comum foi um pouco problemático escolher, mas acabei encontrando uma VIA PC1 da Phitronics na loja da JNE Info

Diretórios vazios com o Git

Diversas vezes eu precisei manter um diretório vazio na árvore do projeto mas como o Git é um gerenciador de conteúdo, um diretório vazio não pode existir no repo. Uma solução simples é criar um arquivo .gitignore dentro de cada diretório que você queira manter e depois adicionar todo o conteúdo da pasta, com excessão dos arquivos .gitignore, ao .gitignore padrão. Exemplo: Digamos que você quer manter a pasta public/uploads/images vazia no repo. Crie um arquivo .gitignore no caminho public/uploads/images/.gitignore Edite o arquivo .gitignore padrão (na pasta raiz do projeto) e adicione as seguinte linhas: public/uploads/images/* !.gitignore A ordem das regras é importante. Efetue um commit destas alterações adicionando os arquivos .gitignore e pronto. *Nota: Caso já existam arquivos no diretório que tenham sido comitados anteriormente, exclua os mesmos com o comando: git rm --cached /caminho/do/arquivo Happy Coding!!!

Arduino - Teste 1

Imagem
Seguindo a listinha de simples projetos para ir me familiarizando com o Arduino, o primeiro projetinho é bem simples, um botão, um led e dois resistores. A idéia é utilizar o Arduino para ler o estado do botão e dependendo do mesmo ligar ou desligar o led. Dei um pequena incrementada para fazer o led piscar enquanto o botão estiver precionado. Incrivelmente, demorei mais para tirar as fotos e fazer este post do que para montar o esquema eletrônico, o código e colocar o mesmo para rodar no Arduino.

Arduino

Imagem
Eletrônica sempre me chamou a atenção. É um pouco trabalhoso dependendo do que se vai fazer, mas como no desenvolvimento de software, com um pouco de emprenho consegue-se construir algo interessante. Em 1994 eu estudava eletro-eletrônica, mas acredito que desde 1996 eu não estudava ou construia qualquer coisa utilizando componentes eletrônicos e ferro de solda. Mais ou menos por acaso, li alguns artigos na web sobre um produto chamado Arduino . O Arduino é um projeto de eletrônica que visa facilitar o desenvolvimento de projetos de eletrônica digital e o estudo da mesma. Existem diversas vantagens em utilizar uma placa como o Arduino para estudar, e as possibilidades são inúmeras, dependendo apenas da imaginação de quem constrói. Tanto que um dos projetos mais interessantes que já vi feito com o mesmo é uma impressora 3D . A lista de projetos que se pode encontrar é grande, com uma variedade espantosa, como pode ser visto na lista de videos do Vimeo que se encontra na url http://vimeo.