Pressione enter para ver os resultados ou esc para cancelar.

Upgrade no ambiente de desenvolvimento LINUX: Produtividade

Muitas vezes as pessoas desenvolvedoras precisam trabalhar em projetos grandes que acabam exigindo muitos recursos no servidor. Desenvolvendo em suas máquinas, no entanto, contam com uma quantidade limitada de espaço em disco, processamento e memória, se comparados à infinidade de recursos que a cloud oferece.

Além disso, precisam rodar suas builds, seus containers, o que quer que seja, em conjunto a todas as ferramentas de trabalho, como editores de código, browsers, ferramentas de comunicação, etc. E em função disso é muito comum que eventualmente a máquina acabe sofrendo por isso.

Mas por outro lado, pessoas desenvolvedoras também costumam otimizar tudo! Então por isso vou te apresentar em uma série de posts aqui no blog da Taller sobre algumas formas de ganhar tempo com tarefas repetitivas realizando um upgrade no seu ambiente de desenvolvimento LINUX e esse primeiro post será sobre produtividade.

Upgrade no ambiente de desenvolvimento LINUXFonte: Meme Generator

Antes de mais nada, aqui vão os pré requisitos:

  • Utilizar linux;
  • Ter vontade de aprender mais sobre shell script e seu sistema operacional.

E um aviso importante:

DISCLAIMER

Upgrade no ambiente de desenvolvimento LINUX1Fonte: Wikimedia


Neste post estou ensinando alguns truques rápidos e é importante que você entenda e saiba o que está fazendo em sua máquina antes de apertar o enter. Sinalizei todos os riscos que conheço, mas a máquina é sua e não assumo responsabilidade sob quaisquer danos causados à sua máquina ou dados.

Tenha critério e não tenha muito medo de ser feliz porque é fazendo cagada que se aduba a vida, mas não mande seu adubo pra mim que a terra aqui já está bem fértil xD. Boa sorte! Agora sem mais delongas…


Produtividade

Terminais

Brincar de terminal é muito legal, te dá uma sensação de Neo no Matrix.

Upgrade no ambiente de desenvolvimento LINUX2Fonte: Giphy


Para se sentir ainda mais poderoso, você pode utilizar um terminal
diferenciado.

Existem muitas possibilidades e eu não pretendo entrar nos pormenores, mas você deve estar buscando por características que tornem seu trabalho mais fácil. Eu particularmente gosto bastante do tmux [mfn]tmux é um multiplexador de terminais, isso significa que ele roda dentro de um terminal e permite que múltiplos programas rodem dentro dele. Cada programa rodando dentro do tmux terá seu próprio terminal gerenciado por ele, que pode ser acessado pelo primeiro terminal (aquele original) do tmux.[/mfn], pois além de permitir você abrir diversas abas, ele também permite que você salve sessões, inclusive remotas, e reabra elas quando desejar, persistindo o estado do terminal após sair e fazer outras tarefas.

 

O tmux aceita comandos a partir de um conjunto de teclas, ctrl b + comando. 

Na sequência abaixo eu aplico os seguintes comandos:

  • tmux : iniciar uma sessão tmux.
  • ctrl+b + % : abrir uma sessão na horizontal.
  • ctrl+b + seta para esquerda-direita: navegar entre os terminais.
  • ctrl+b + d: (detach session) desacopla o tmux e volta para o terminal, sem matar a sessão.
  • tmux attach-session: retorna para última sessão.

Fonte: Produzida pelo autor

Utilizando detached sessions posso salvar várias configurações diferentes, inclusive com ssh em outras máquinas, e reutilizar as sessões quando precisar. Posso ter um setup de terminais para cada projeto, ou para cada workflow, por exemplo.

Existem ainda outros comandos que permitem salvar as sessões, renomeá-las, navegar diretamente entre elas sem sair do tmux, etc. Tudo vai depender da sua necessidade, avalie o que você faz e como pode utilizar o poder dos terminais para te ajudar. Neste artigo o autor apresenta algumas opções.

 

Extensões para VS Code

Costumo recomendar apenas algumas das extensões que eu uso, mas minha sugestão é que você explore e converse com seus colegas para ver quais eles utilizam, pois possivelmente eles saberão de extensões úteis para sua stack e talvez extensões que você ainda não conheça.

  • Auto Rename Tag – completa fechamento de tags automaticamente (você abre uma <div> e ele automaticamente escreve um </div> por exemplo.)
  • Bookmarks – permite que você adicione atalhos no seu código e navegue rapidamente entre eles, pegando um atalho e fugindo da navegação de diretórios que pode ser um verdadeiro mar de lama dependendo do tamanho do projeto.
  • Docker – permite que você gerencie seus containers direto do VS Code.
  • Intelisenses – escolha um para a linguagem que você programa para ter code completion, highlight, e diversas features que te ajudaram a codar mais rápido.
  • Prettier – Auto formatter para seu código ficar bonitão.
  • Linter – Integre seu linter diretamente ao VS Code e tenha feedback rápido sobre as regras do linter no seu código.

 

Aliases, functions e bashrc

Aliases são “atalhos” no terminal para comandos mais extensos, que permitem que você rode comandos sem precisar digitar ele completamente.

Upgrade no ambiente de desenvolvimento LINUX2Fonte: Produzida pelo autor


Esse é apenas um exemplo, mas você poderia usar um alias por exemplo para aquele comando de limpar o cache da memória ram.

echo 3 | sudo tee /proc/sys/vm/drop_caches

 

Upgrade no ambiente de desenvolvimento LINUX2

Fonte : Elaborada pelo autor

Esse 3 aí significa que o script executou corretamente. Na prática o comando manda um echo 3 e o | envia esse output para o próximo comando, que escreve o 3 dentro do arquivo /proc/sys/vm/drop_caches.

 

Legal, mas se você fechar o terminal e abrir de novo, vai perceber que seu alias não funciona mais.

Upgrade no ambiente de desenvolvimento LINUX2Fonte: Produzida pelo autor


Isso ocorre pois o alias persiste somente durante a sessão shell. Para resolver isso, podemos utilizar o bashrc. Esse arquivo normalmente fica na pasta
home de cada usuário, no ~/.bashrc e contém variáveis de ambiente que são carregadas toda vez que você inicia uma sessão no terminal. Então vamos colocar nosso alias lá dentro.

Fonte: Produzida pelo autor
Fonte: Produzida pelo autor

 

Coloquei o comando na última linha do arquivo. Dá pra ver que já existem coisas no arquivo, isso são variáveis colocadas pelo próprio sistema ou aplicações que você instala e precisam dessas variáveis, por isso não altere nada do que já existe aqui a menos que precise e saiba o que está fazendo.

 

Agora basta salvar, sair e reiniciar o terminal. É importante reiniciar pois as alterações não foram carregadas ainda para essa sessão, mas se quiser utilizar sem perder essa sessão, você pode dar um source ~/.bashrc

Fonte: Produzida pelo autor

 

Voilá, agora que você já sabe utilizar alias, vamos dar um upgrade para o próximo nível: functions.

Já imaginou se você pudesse chamar funções do seu terminal, igual faz no seu código? Invocar uma série de operações com um objetivo, passando parâmetros e recebendo retornos, etc? Seria muito bom se fosse possível né? Mas é.

Upgrade no ambiente de desenvolvimento LINUX5Fonte: Produzida pelo autor


Essa é uma função que tenho, também no meu ~/.bashrc, que basicamente entra no diretório workspace, e se houver algum parâmetro (aqui eu pego os parâmetros usando “$1”, “$2”, e assim por diante), navego para aquela pasta.

Por exemplo:

Upgrade no ambiente de desenvolvimento LINUX3Fonte: Produzida pelo autor


Bacana né? Mas vamos além…

Normalmente quando quero entrar numa pasta do meu workspace, é por que vou trabalhar nela, então faz sentido abrir o meu vs code. Dá uma olhada nessa função:

Fonte: Produzida pelo autor


Aqui o que estou fazendo é: chamando a primeira função que criei para entrar no diretório do projeto, e com o comando code . &
estou basicamente passando o diretório atual (.) para o comando code, que abre o vs code. O & serve para que o linux saiba que esse processo deve ocorrer em background, desacoplando do shell.

 

Fonte: Produzida pelo autor

 

Legal né?

Agora é só usar a imaginação.

Outro exemplo que eu uso é para remover branchs locais e remotas. Observe:

Upgrade no ambiente de desenvolvimento LINUX9Fonte: Produzida pelo autor

 

A função recebe como parâmetro o nome da branch, e ao executar, remove a branch local na primeira linha, e na segunda envia o comando para deletar a branch na origin.

Automatize tarefas repetitivas usando as functions. 

Aprender um pouquinho de shell script vai aumentar seu KI consideravelmente e complementar suas habilidades de desenvolvedor, então quando puder aproveite para estudar um pouquinho que mal não fará!

Fonte: Meme Fandom


Uma coisa que é interessante de se fazer toda vez que terminar uma sessão de trabalho é analisar o que está em seu
history. Quando um comando se repetir muitas vezes você saberá que pode otimizar seu trabalho com um script, function ou alias.

 

history |  cut -c7- | sort  | uniq -c | sort -nr | head -n 20

O comando acima lista os 20 comandos mais usados (faça um alias com ele)

Fonte: Produzida pelo autor


Pelo meu comando é possível observar que é possível construir alguns alias para digitar menos, principalmente com comandos git e comandos para rodar aplicações. Posso criar um comando para o git add . como um
ga por exemplo. Automatize aquilo que achar que vai agregar ao seu workflow, também não precisa ficar obcecado com isso.

 

Um detalhe importante é: ao abrir novas sessões no seu terminal, o history vai ficar sem os comandos de algumas delas. Se você, como eu, deseja manter o histórico completo para saber exatamente o que fez na máquina e não perder nenhum detalhe. Coloque esse código abaixo no seu .bashrc:

 

Comando para não perder o history entre sessões.

# Evita duplicatas
HISTCONTROL=ignoredups:erasedups
# Quando sair do shell, fazer um append no arquivo do history,
ao invés de sobrescrever shopt -s histappend

# Após cada comando, fazer um append no arquivo
do history e reler o arquivo.
PROMPT_COMMAND=”${PROMPT_COMMAND:+$PROMPT_COMMAND$’\n’}history -a;
history -c; history -r

 

Até logo

Bom, era isso por agora. No próximo artigo sobre upgrade no ambiente de desenvolvimento LINUX veremos como você pode gerenciar seus recursos de máquina, continuando com a ideia de melhorar seu ambiente de desenvolvimento local. Deixo meu até logo com uma citação do mestre criador do Linux:

No código aberto real, você tem o direito de controlar seu próprio destino.
In real open source, you have the right to control your own destiny.

– Linus Torvalds

Referências

Acompanhe as últimas do blog