Início do grupo de estudo Fundamentos de Data Science

É com sorriso no rosto que anunciamos a criação do nosso mais novo grupo de estudos:

Com o intuito de iniciar o aprendizado sobre “Fundamentos de Data Science”, estamos criando um grupo de estudo (talks e troca de experiências) para se reunir uma vez por semana após o horário de trabalho. A ideia inicial é discutir sobre assuntos relacionados ao tema, como: Big Data, Engenharia de Software, Machine Learning, Programação em Python, Estatística, Probabilidade e como podemos aplicar “data science” em nosso dia a dia.

Continuar lendo Início do grupo de estudo Fundamentos de Data Science

Leitura de porta serial utilizando Python e Raspberry PI

Hoje vou explicar como fazer a leitura de porta serial utilizando Python e Raspberry PI.

Suponhamos que você trabalhe para um cliente que possui uma balança Toledo 820J/XIV, conectada a um display Toledo 8540, ambos fabricados em abril de 2010.

Você quer monitorar, em tempo real, a balança e publicar o valor medido, continuamente, em um webservice. Como fazer isso?

Continuar lendo Leitura de porta serial utilizando Python e Raspberry PI

Git Basics

Este post é um overview do primeiro capítulo da documentação do Git.

O que é o Git, como surgiu, controle de versão?

Controle de versão pode ser feito de diversas formas. O simples fato de organizar pastas de backup por data, ex: 2018-02-22-Backup, e em outro dia criar outra pasta com o nome 2018-03-22-Backup, já faz com que tenhamos um controle de versão. O problema é que dessa forma se torna um controle de versão pouco vantajoso, pois precisamos verificar os arquivos um a um em busca de alterações e também incluir novos arquivos.

Continuar lendo Git Basics

Deploy de aplicação no Heroku

Heroku utiliza o conceito PaaS (Plataform as a Service), onde o seu foco é a hospegadem de uma aplicação como serviço, forcenendo uam boa infraestrutura e um menor custo.Devido a isso não é possivel armazenar arquivos ou enviar email a partir do heroku, mas você pode utilizar serviços externos adicionados na sua aplicação.

Continuar lendo Deploy de aplicação no Heroku

ES6 e o suporte dos navegadores

A Web teve um início, mas não terá um fim.

ES6 não é suportado por navegadores mais antigos, que foram desenvolvidos antes do seu lançamento. Esses navegadores mais antigos foram desenvolvidos para se adaptar à versão do JavaScript naquela época (que era a ES5.1). Se você tentar rodar seu código ES6 em um navegador antigo, ele não funcionará.

Uma função arrow é executada e causa erro de sintaxe no Safari 9. Fechar
Uma função arrow é executada e causa erro de sintaxe no Safari 9.

Faz sentido que um código que não funcione em navegadores antigos, desenvolvidos em uma época anterior ao ES6, mas existem navegadores desenvolvidos após essa melhoria do JavaScript que também não suportam essa nova sintaxe e funcionalidade ainda.

Continuar lendo ES6 e o suporte dos navegadores

Javascript Transpiling

Você provavelmente já ouviu o termo “compilador”. Um compilador pega um programa escrito numa linguagem de código-fonte, por exemplo C++ e converte para outra linguagem, como código de máquina. Passar um código pelo compilador muda o nível de abstração dele. Ele aproxima um código lido por humanos a um lido por máquinas. Isto é compilar: pegar uma linguagem fonte e convertê-la a uma de nível mais baixo.

Transpiling é um subconjunto da compilação. O código fonte é convertido em código-alvo. É como o compilador, mas o código-fonte e código-alvo são do mesmo nível de abastração. Se o código-fonte for lido por humanos, a linguagem de saída também será lida por humanos.

Mas por que iríamos querer isso?

Navegadores antigos não têm suporte total ao ES6, mas suportam ES5. Assim podemos escrever o Javascript usando a sintaxe e as funcionalidades do ES6 e depois usar um Transpiling para convertê-lo de ES6 para ES5.

Programamos o que há de melhor e mais novo e convertemos para rodar em toda parte.

O transpiler JavaScript mais popular é chamado Babel.

Continuar lendo Javascript Transpiling

O que é um Polyfill?

Um polyfill é um arquivo de Javascript que preenche um buraco replicando atributos nativos para navegadores que não os possuem.

Criado por Remy Sharp (https://remysharp.com/2010/10/08/what-is-a-polyfill), um polyfill, ou polyfiller, é um pedaço de código (ou plugin) que fornece a tecnologia que o desenvolvedor espera que o navegador implemente.

Um exemplo de polyfill

O código abaixo é um polyfill para o novo método de string do ES6, startsWith():

if (!String.prototype.startsWith) {
 String.prototype.startsWith = function (searchString, position) {
   position = position || 0;
   return this.substr(position, searchString.length) === searchString;
 };
}

Continuar lendo O que é um Polyfill?

Comunicação segura utilizando GPG

Todo time de T.I. deve ter a preocupação com políticas de acessos a senhas, principalmente em se tratando de credenciais de produção.

Algumas estratégias importantes para garantir a segurança dos sistemas de informações são:

  • Rodízio constante de senhas
  • Senhas diferentes para cada usuário

Mas um problema corriqueiramente encontrado é como comunicar essas senhas com segurança entre diferentes pessoas do time.

Uma solução para esse problema de comunicação é utilizar certificados GPG, e integrá-los com clientes de e-mail, por exemplo o Thunderbird.

Continuar lendo Comunicação segura utilizando GPG

Rodando o PHP 7 via Docker

Dica para quem está utilizando Linux com Docker, e não possui PHP 7 configurado na sua máquina.

No meu caso específico, quero apenas rodar alguns testes do PHPUnit em um projeto que clonei do Github, mas não possuo o PHP 7 instalado aqui no meu Debian 8.

Criei um novo arquivo chamado /usr/local/bin/php7 contendo o conteúdo a seguir:

docker run -u `stat -c "%u:%g" .` -ti --rm -v $(pwd):/workspace php sh -c "cd /workspace; php $*"

Marquei esse arquivo com o bit de execução:

Continuar lendo Rodando o PHP 7 via Docker