Postagens

Gerenciar o Docker como um usuário não raiz

Imagem
Se você utiliza o Docker em seu Linux e toda vez tem que ficar digitando a senha do super usuário (sudo), hoje vou mostrar como executá-lo sem precisar do sudo.

O que iremos fazer é criar um grupo Unix com o nome de docker e adicionar os usuários que terão acesso ao docker sem precisar utilizar o sudo.

Para maiores detalhes sobre esse passo a passo, você pode conferir o original na documentação do Docker.

1- Crie o grupo Unix:
sudo groupadd docker
2- Adicione os usuários ao grupo:
sudo usermod -aG docker $USER Por padrão $USER é o usuário da sua sessão mas se preferir adicionar outro usuário bata subistitui-lo pelo nome do usuário. Para visualizar os usuários do seu sistema, basta digitar users no terminal.

3- Faça logoff ou reinicie seu computador para as configurações serem aplicadas.

4- Para ver se tudo está funcionando corretamente, execute o comando:
docker run hello-world
Se tudo estiver ocorrido bem, você verá algo parecido com a imagem abaixo:

HTTPie: Uma alternativa amigável ao curl

Imagem
HTTPie é um cliente HTTP de linha de comando com uma interface de usuário intuitiva, suporte a JSON, destaque de sintaxe, downloads semelhantes a wget, plug-ins e muito mais.

Seu objetivo é tornar a interação da CLI com os serviços da Web o mais amigável possível. Ele fornece um comando http simples que permite o envio de solicitações HTTP arbitrárias usando uma sintaxe simples e natural e exibe saída colorida. O HTTPie pode ser usado para teste, depuração e interação geral com servidores HTTP.

O HTTPie consiste em um único comando http projetado para depuração indolor e interação com servidores HTTP, APIs RESTful e serviços da Web, que ele realiza por:
- Padrões sensíveis
- Sintaxe de comando expressiva e intuitiva
- Saída de terminal colorida e formatada
- Suporte JSON incorporado
- Sessões persistentes
- Upload de formulários e arquivos
- Suporte a HTTPS, proxies e autenticação
- Suporte para dados de solicitação e cabeçalhos arbitrários
- Downloads semelhantes ao Wget
- Extensões

Gtop: Um painel de monitoramento do sistema para terminal

Imagem
Ferramentas de linha de comando como "top" dificultam a visualização do uso da CPU em aplicativos de vários processos (como Apache e Chrome), picos ao longo do tempo e uso de memória.

Afim de facilitar esse processo, existem diversas ferramentas como o vtop, htop e o gtop.

Mas o que é o Gtop?
O gtop é uma ferramenta que lê informações sobre processos e o estado do sistema no modo dinâmico. Está escrito em node.js e pode ser facilmente estendido. Para verificar seu código fonte basta acessar o github.

Qual a diferença entre o vtop e o gtop?
Com o VTOP você consegue monitorar apenas o CPU, Memória e os PID. Já com o GTOP você consegue monitorar CPU, Memória, SWAP, PID, Network e o Disco.

Outra diferença entre os dois é que com o VTOP você consegue matar um determinado PID, setar um intervalo em que o monitorar irá atualizar os dados mostrados na tela, consegue também mudar o tema do monitor, desativar interação com o mouse e definir um tempo para o monitor ser fechado automatic…

Vtop: Um monitor de atividade do sistema para terminal

Imagem
Ferramentas de linha de comando como "top" dificultam a visualização do uso da CPU em aplicativos de vários processos (como Apache e Chrome), picos ao longo do tempo e uso de memória.

Afim de facilitar esse processo, existem diversas ferramentas como o vtop, htop e o gtop.

Mas o que é o Vtop?
O Vtop é um monitor de atividades de código aberto e gratuito para a linha de comando. Está escrito em node.js e pode ser facilmente estendido. Por que não verificar o código fonte?

Qual a diferença entre o vtop e o gtop?
Com o VTOP você consegue monitorar apenas o CPU, Memória e os PID. Já com o GTOP você consegue monitorar CPU, Memória, SWAP, PID, Network e o Disco.

Outra diferença entre os dois é que com o VTOP você consegue matar um determinado PID, setar um intervalo em que o monitorar irá atualizar os dados mostrados na tela, consegue também mudar o tema do monitor, desativar interação com o mouse e definir um tempo para o monitor ser fechado automaticamente. Já com o GTOP não temo…

G Cloud: Gerando chave de autenticação para o Google Cloud

Imagem
Para integrar uma aplicação com os serviços disponibilizados pelo Google Cloud, será nescessário gerar uma chave de autenticação para que a sua aplicação possa ter permissão de comunicar com os serviços da Google.

Se você é marinheiro de primeira viagem, conseguir essa chave acessando o painel do google cloud é um puco tanto complexo.

Logo abaixo está o passo a passo de como obter as chaves de autenticação. Para maiores informações você pode acessar a documentação oficial, clicando aqui.

1- Já na página inicial do console do G Cloud, acesse as opções:

2- No botão "Gerar Credenciais" teremos algumas opções.

2.1- Chave de API
Será criada uma chave de API Simples que poderá ser usada em alguns serviços como exemplo o Google Maps, onde você pode passá-la pela URL da API.

2.2- Id do cliente do OAuth
Essa opção serve para sua aplicação poder ter uma opção de login ou sincronização dos dados com o Google.

2.3- Conta de Serviço
Essa opção irá gerar uma chave em um arquivo JSON e pode se…

Python: Conhecendo a declaração With

Imagem
A declaração a "with" foi inserida ao Python na PEP 343 em 2005. Com ela conseguimos tornar o código mais limpo, legível e seguro.

Resumidamente ela é um gerenciador de contexto reponsável por garantir que determinados recursos sejam liberados independente se o código deu sucesso ou erro.

O exemplo mais comum e de melhor entendimento é o de leitura de arquivos. Suponha que um arquivo é aberto. Quem irá garantir que o mesmo será fechado? Por mais que você coloque no código de forma explícita que ele deve ser fechado, se ocorrer uma exceção, sairá do escopo sem executar o restante do código pulando o fechamento.

Para esse caso normalmente usaríamos o try/finally, pois o finally iria garantir que o arquivo seria fechado. Mais lembre-se que o with alem de garantir segurança ele visa um código mais limpo e menos complexo.

Mas afinal, como é um código que utiliza o "with"? Veja abaixo: Na linha 1 utilizamos o "with", logo em seguida chamamos a função "ope…

asdf-vm: Gerenciador de versão extensível com suporte a várias linguagens e ferramentas de desenvolvimento

Imagem
Nos dias de hoje é muito comum você ter que lidar com diversas versões de diversas linguagens ao mesmo tempo.

Com o asdf você vai perceber como isso se torna muito fácil de se gerenciar e o melhor é que ele tem diversos plugins, como exemplo: node.js, python, go, ruby, redis, mysql, clojure, erlang, dart, flutter, dotnet-core, docker-slim entre outros.

Instalação
A instalação dele é muito simples bastando apenas rodar alguns comandos em seu terminal. Para isso basta acessar o site oficial, clicando aqui, para ver os comandos de instalação.

Para confirmar que a instalação foi efetuada, abra seu terminal novamente e rode o comando asdf.

Adicionando e instalando um plugin
1- Ver os plugins disponíveis para instalação:
asdf plugin list all Você pode também acessar a página oficial para ver todos os plugins disponíveis.

2- Adicionar um plugin:
asdf plugin add NOME_PLUGIN Exemplo: asdf plugin add nodejs

3- Ver os plugins já adicionados:
asdf plugin list
4- Ver as versões de pacotes disponíveis de u…

Python: Duas formas de criar um Switch Case

Imagem
Todos nós que trabalhamos na área de desenvolvimento sabemos que nas linguagens mais populares temos como opção utilizar a condicional switch/case, mas para quem trabalha com Python sabe-se que isso não existe na linguagem.

Como forma de contornar o problema irei demonstrar duas formas para você poder implementar em seu código.

1- Utilizando dicionário
O que iremos fazer nesse procedimento é criar uma variável do tipo dicionário e utilizando a função get iremos capturar um valor do dicionário.

Segue o exemplo:
Vamos entender o que está escrito nesse código?

Nas linhas 1, 4 e 7 estamos apenas criando funções que iram dar um print na tela assim que elas forem chamadas.

Na linha 11 criamos uma variável do tipo dicionário e nela definimos a key como sendo a nossa condicional do case e o valor sendo as funções criadas anteriormente. Vale lembrar que nesse momento ainda não executamos as funções, elas são executadas quando colocamos () na frente delas.

A linha 16 é o ponto chave de tudo. N…

Pyenv: Gerenciando versões Python

Imagem
Se você trabalha com vários projetos Python sabe como é complicado lidar com as versões do Python para cada projeto.

Com intuito de auxilizar os desenvolvedores a gerenciar melhor as versões do Python, surgiu em 2011 uma biblioteca open source chamada pyenv.

Com ela a gente consegue criar um virtualenv com uma versão especifica do Python e isso simplifica muito a nossa vida.

Instalação em ambiente Linux
Primeiramente você precisa instalar os pré-requisitos da biblioteca. Para isso você pode acessar esse link e seguir os passo a passo.

Após a instalação dos pré-requisitos iremos instalar a biblioteca. O passo a passo para a instalação você irá encontrar aqui.

Instalação em ambiente Windows
O passo a passo para a instalação no ambiente windows você irá encontrar nesse link.

Conhecendo a biblioteca
O primeiro comando e o mais importante é o pyenv. Se a sua instalação foi bem sucedida assim que você digitar esse comando no terminal você irá ver algo parecido com a imagem abaixo:

Agora que t…

Redis + Docker Compose: Criando uma instância do Redis com Docker Compose

Imagem
Recentemente fiz uma postagem explicando como criar uma instância do Redis com Docker a partir de comandos digitados diretamento no terminal.

Hoje iremos aprender a como criar a mesma instância a partir de um arquivo docker compose.

Primeiramente você precisa criar um arquivo chamado docker-compose.yml e salvá-lo em algum diretório do seu computador. Dentro desse arquivo você irá colocar todo o conteúdo como especificado abaixo:

Explicando algumas linhas do arquivo
- Linha 5: informamos qual a imagem do Docker Hub que iremos baixar assim que rodar o arquivo;
- Linha 6: nessa linha temos dois comandos: o primeiro é --requirepass SUASENHA e serve para setar uma senha de acesso ao banco de dados e o segundo --appendonly yes serve para falarmos que iremos utilizar volume no Redis;
- Linha 8: aqui estamos expondo a porta 6379 para outras aplicações conseguirem se comunicar com o Redis;
- Linha 10: essa linha é para especificar onde será salvo os dados do Redis e com isso os dados deixaram …