Cesar Gimenes

Programação, Eletrônica, Golang, UNIX e muito mais papo nerd

Como usar goConfig

goConfig goConfig é um pacote para tornar fácil implementar as três principais formas de configuração de um sistema, ou seja, ler parâmetros da linha de comando, variáveis de ambiente e arquivos de configuração. A ideia é tornar a lentura da configuração bem simples porque a tendência a complexidade do seu sistema aumentar e não tem porque ter mais complexidade só porque você quer adicionar mais um parâmetro ou mais uma variável de ambiente.

Go lendo arquivo com bufio

Lexer, tokenizer, scanner… Tenho vários projetos que poderiam se beneficiar de um lexer genérico e escrito em Go, então resolvi brincar com a ideia de escrever o meu próprio. Eu sei, eu poderia ter usado text/scanner mas depois de alguns testes achei ele difícil de expandir, também poderia ter usado um dos muitos que estão prontos por ai, mas não encontrei nada que eu não precisasse aprender uma nova ferramenta alem da linguagem ou mergulhar na mente do criador original para entender o que ele queria fazer.

go usando time e canais

Pacote time Eu sou o primeiro a torcer o nariz para o pacote time, principalmente pela maneira como a formatação de datas é feita, mas um recurso muito interessante é poder criar um canal que retorna a cada X tempo e assim podemos executar ações periódicas. Veja como isso é feito Primeiro criamos um canal que vai retornar a cada X tempo, no caso do exemplo 300 milissegundos.

Go plugins

Plugins A possibilidade de criar plugins é um novo recurso da versão 1.8 que por enquanto funciona apenas no Linux. Um plugin basicamente é uma biblioteca externa que pode ser carregada dinamicamente, o uso é bem simples. O mesmo recurso deve ser incluso no macOS na versão 1.9 e provavelmente em outras plataformas. Por enquanto para todos poderem experimentar sugerimos subir um container Docker. O comando abaixo abre um container Docker com uma maquina virtual pronta para executar a versão 1.

GitHub a rede social do programador

Talk is cheap. Show me the code. - Linus Torvalds em uma mensagem para a linux-kernel mailing list em 25/08/2000 Lone Gunman Durante a maior parte da minha carreira eu trabalhei sozinho ou em equipes muito pequenas, é fácil manter controle de versão quando se esta sozinho, qualquer sistema vai funcionar desde que ele não entre na sua frente e seja minimamente eficiente, eu programo desde os anos 90 e já passei por tudo, desde copiar todo o projeto para um outro diretório, ou zipar o projeto com a data da mudança, CVS, SVN, e agora Git.

NASA OpenMCT com Intel Edison

Já criei vários sistemas de telemetria e de vez em quando era necessário escrever um dashboard para exibir os dados, eu estava planejando criar um dashboard mais flexível e configurável que eu pudesse usar em vários projetos quando esbarrei com o OpenMCT. O OpenMCT é um frontend para qualquer coisa capaz de gerar dados de telemetria, assim eu posso me focar no backend que para mim é a parte mais divertida e a única coisa que preciso fazer é criar um “telemetry provider” para o OpenMCT, que basicamente significa responder corretamente a algumas chamadas de websocket.

Assembly, assembler e linguagem de maquina

#Assembly, assembler e linguagem de maquina. São coisas diferentes! São três coisas diferentes mas relacionadas e as pessoas vivem confundindo, então vamos a explicação. Assembly É uma linguagem de programação composta por mnemônicos simples. Ela reflete um para um as instruções da plataforma que estiver sendo usada. Escrevendo código Assembly você sabe exatamente o que o processador esta fazendo e tem acesso a recursos que podem não estar disponíveis em linguagens de mais alto nível… falando nisso podemos chamar Assembly de uma linguagem de baixo nível, nesse caso não é ruim, quer dizer apenas mais perto do hardware.

Zero Configuration Networking

Zeroconf Eu estou sempre criando e carregando dispositivos diversos na minha rede com varias finalidades diferentes. Por dispositivos diversos quero dizer que eles podem mesmo ser qualquer coisa, pode ser por exemplo um SBC para fazer alguma coisa relacionada a IoT, pode ser uma maquina virtual para testar algum software que não quero testar nos sistemas principais, e pode facilmente ser uma VM descartável que vou subir só para fazer um teste rápido e descartar em seguida.

Instalando ffmpeg no Intel Edison

Os tutoriais que encontrei para instalar o ffmpeg no Edison envolvem adicionar repositórios e instalar usando opkg update e install. Isso é ruim porque muitas vezes esses repositórios estão desatualizados e a instalação muitas vezes quebra com outras coisas que estão funcionando. Mas tem uma forma muito mais simples de instalar qualquer coisa no Edison, é só explorar o fato do processador ser um 80x86 puro sangue, então é só encontrar a versão compilada estaticamente para i386 e seu software vai funcionar out of box.

Go transformando imagem PNG em código C

Já tem algum tempo eu estava desenvolvendo um projeto usando a DISCO-F746NG, uma placa bem interessante e com muitos recursos. Um dos recursos mais legais é o LCD-TFT com 4.3” e multi-touch. E a programação da placa é feita usando mbed que é um ambiente bastante bom apesar de eu torcer o nariz para ele. Apesar de muitas qualidades essa placa não tem recursos muito avançados para tratamento de imagem via hardware, para desenhar você simplesmente escreve na memória de vídeo… no bom e velho estilo dos anos 90 gravando pixel a pixel :D