# Como (tentar) ser mais produtivo como Dev
---
<!-- .slide: data-background="#f71302" -->
## Atenção!
Minha conexão está instável, pode cair
(valeu NET!)
---
## Quem sou eu?
- Fabio Perrella
- Líder Técnico do time "Projetos Estruturantes" (é o novo "Novo-provisionamento")
---
## Também já trabalhei nos projetos...
- Email, SMTP, Criador de Sites (PHP/Wordpress e Rails/BackboneJS), Email Marketing (PHP e Rails/Mongo), Webstore, etc..
---
<!-- .slide: data-background="#df03fc" -->
## De onde veio a ideia dessa talk?
Frete de "Pareamento entre equipes diferentes"
---
## Agenda
- Velocidade na digitação :runner:
- Dicas para o editor de texto
- Dicas no terminal
- Dicas de git
- Dicas com a gem VCR
- Dicas no Gitlab
- Dicas no Firefox :heartpulse:
- Dicas no Ubuntu
- Dicas de Print Screen :heart_eyes:
- Outras ferramentas
---
# Antes de tudo..
A tarefa que vou começar está bem especificada?
Não vou jogar meu tempo fora?
<!-- .slide: data-background="#fcb603" -->
---
# Algumas regras para ser mais eficiente...
---
<!-- .slide: data-background="#1A237E" -->
# 1. **Evitar usar o mouse!**
---
<!-- .slide: data-background="#aab531" -->
# 2. Tentar melhorar processos repetitivos por outros mais eficientes
---
## Exemplo
Troquei o Gitk pelo Tig!
- Gitk é lento, feio, velho e exige o uso do mouse.
- Tig é leve, rápido, elegante e tem atalhos que não preciso do mouse.
---
## Exemplo 2 (TODO)
### Criar RITM para change:
1. verificar disponibilidade da data/horário
1. abrir service now e clicar no catálogo
1. preencher formulário
1. adicionar evento ao meu calendário
1. avisar na sala do rocket e escrever o texto pra isso
---
<!-- .slide: data-background="#1fab44" -->
# Digitação
---
![](https://i.imgur.com/EnWNenw.png)
[Segundo o Akita](https://www.youtube.com/watch?v=tEXX1jdpZN8), se estivermos abaixo de 70 palavras por minuto, precisamos treinar!
---
## Teste
https://10fastfingers.com
(pra mim deu uma média de 55 :cry:)
### Sites pra aprender
- typingclub.com (estou treinando)
- keybr.com
- typing.io
---
<!-- .slide: data-background="#ab361f" -->
# Dicas no editor de texto
---
Uso o Sublime Text, mas acho que as dicas se aplicam pra qualquer editor!
---
A idéia é mostrar coisas que dá pra fazer.
**Mas não aconselho tentar adotar tudo de uma vez!**
---
## Editor de texto
- fuzzy open file (ctrl + p) :exclamation:
- uso de projetos
- ctrl + alt + p pra trocar projeto
- uso o plugin [ProjectManager](https://github.com/randy3k/ProjectManager) pra facilitar
---
## Editor de texto
- atalho para fazer folding de trecho de código (procurar por `"command": "fold"` nos key bindings)
- plugin para salvar o estado do code folding/cursor num projeto (plugin [BufferScroll](https://github.com/titoBouzout/BufferScroll)) :exclamation:
---
## Editor de texto
- atalho para fechar todos os arquivos abertos, criei esse:
```json
{ "keys": ["ctrl+alt+c"], "command": "close_all" }`)
```
- atalho para selecionar todas ocorrências (alt+F3)
- atalho para selecionar próximas ocorrências de uma seleção (ctrl+d / F3)
- seleção vertical para editar múltiplas linhas (alt + shift + arrow (up/down))
---
## Editor de texto
- atalho *go to definition* :exclamation:
- F12 ou *ctrl+t+t* (com plugin [Ctags](https://github.com/SublimeText/CTags))
- ctrl - ou < para voltar
- atalho *jump back* (alt + -) :exclamation:
- atalho *jump foward* (alt + shift + -)
---
## Editor de texto
- split de tela :exclamation:
- limitar linha em 80 rows
- atalho para slipt, mover cursor entre os panels
- atalho para mover arquivo de um panel para outro
- [post que fiz com essas dicas](https://blog.locaweb.com.br/artigos/dicas-para-aumentar-produtividade-com-sublime-text-3/)
---
## Editor de texto
- atalho para selecionar o texto dentro de uma string (plugin [Select Quote](https://packagecontrol.io/packages/Select%20Quoted))
- atalho para copiar o path com a linha de onde esta o cursor :exclamation:
- plugin [Copy Filepath With Line Numbers](https://packagecontrol.io/packages/Copy%20Filepath%20With%20Line%20Numbers)
- criação de atalho
```json
{ "keys": ["ctrl+alt+."], "command": "copy_reference" }
```
.
---
## Editor de texto
- atalho para duplicar linha (ctrl + shift + d)
- atalho para excluir linha (ctrl + shift + k)
- atalho para juntar linha de baixo com a atual (ctrl + j)
- atalho para paste and indent (ctrl + shift + v)
---
## Editor de texto
- atalho para switch entre teste e código :exclamation:
- plugin [rails_go_to_spec](https://github.com/sporto/rails_go_to_spec)
- atalho para rodar comandos (ctrl + shift + p)
- atalho para mostrar arquivo no sidebar
```json
{ "keys": ["ctrl+shift+r"], "command": "reveal_in_side_bar"},
```
---
## Editor de texto
- atalho para mostrar/esconder o *side bar* (ctrl + k + b)
- atalho para ir para a linha X (ctrl + g)
- atalho para "ir ao símbolo" (ctrl + r). É um jeito fácil de pular para as definições de um método
---
<!-- .slide: data-background="#1a3d11" -->
# Dicas no terminal
---
## Terminal
- atalho para busca de comandos (`ctrl + r`)
- atalho para limpar a tela (`ctrl + l`)
- [autojump](https://github.com/wting/autojump) para mudar de diretório
- usar alias ([meus alias](https://github.com/fabioperrella/dotfiles/blob/master/dotfiles/.aliasesrc)), exemplos:
```bash
alias be="bundle exec"
alias r="bundle exec rspec"
alias ro="bundle exec rspec --only-failures"
alias rr="VCR_MODE=rec r"
alias rn="r --next-failure"
alias t="tig"
alias b="bundle install"
```
---
## Terminal
- TMUX
- para digitar token da nibbler só 1 vez!
- split de tela
- para não perder sessão se a rede cair
- difícil, mas vale a pena [aprender](https://www.youtube.com/watch?v=5iXzqN8-34E)
- [usar o ~/.ssh/config](https://linuxize.com/post/using-the-ssh-config-file/)
- usar gsh para fazer ssh em várias máquinas ao mesmo tempo
---
## Terminal
### Navegação do cursor
![](https://i.imgur.com/wkQO60M.png)
github.com/fliptheweb/bash-shortcuts-cheat-sheet
---
## Terminal
Configurar o PS1 mostrando branch do git
![](https://i.imgur.com/0YmfiEv.png)
Código deste está [aqui](https://github.com/fabioperrella/dotfiles/blob/master/dotfiles/.gitpromptrc)
---
## Terminal
Tenha uma boa ferramenta de diff. Exemplo: [Meld](https://meldmerge.org/)
![](https://i.imgur.com/C4wxSKl.png)
---
<!-- .slide: data-background="#0e6962" -->
# Dicas de Git
---
## Git
Uso de um client facilita em algumas tarefas:
- histórico de alterações de 1 arquivo
- *git add* interativo
- git log bonito:
![](https://i.imgur.com/R7Co5pz.png)
---
## Git
### Client Tig
- github.com/jonas/tig
- Fiz um post falando sobre ele [no blog da Locaweb](https://blog.locaweb.com.br/geral/tig-client-para-git-no-terminal/)
---
## Git
Uso de aliases do git, ex:
```bash
[alias]
d = diff --color
a = add
st = status
pt = push --tags
```
Mais exemplos no [meu dotfiles](https://github.com/fabioperrella/dotfiles/blob/master/dotfiles/.gitconfig)
---
## Git
Algumas confs para facilitar trabalhar com branches:
```bash
[branch]
autosetuprebase = always
[merge]
ff = no
commit = no
tool = meld
[pull]
rebase = preserve
[push]
default = current
```
---
## Git
Diff mais bonito com o [diff-so-fancy](https://github.com/so-fancy/diff-so-fancy)
```bash
[core]
pager = diff-so-fancy | less --tabs=4 -RFX
```
![](https://i.imgur.com/S8h3YgY.png)
---
<!-- .slide: data-background="#880ced" -->
# Testes com a gem VCR
---
## VCR
Fiz um [post com 10 dicas de VCR](https://fabioperrella.github.io/10_tips_to_help_using_the_VCR_gem_in_your_ruby_test_suite.html)
Ex: Tenha um jeito fácil de regravar o cassette de um teste específico
```bash
$ VCR_MODE=rec bundle exec rspec spec/some_class_spec.rb:30
# com meus alias
$ rr spec/some_class_spec.rb:30
```
---
<!-- .slide: data-background="#b0d6bb" -->
## Gitlab
---
## Gitlab
- abuse do histórico do browser! ex: *code prod merg* (Firefox :heart:)
- em um projeto, o alias `t` abre o *find by path*
- em um MR, o `n` e o `p` navegam entre as dicussões
- em um MR, o `j` e o `k` navegam entre os arquivos
Mais em docs.gitlab.com/ee/user/shortcuts.html
---
## No client de Email
- agrupar mensagens tipo thread para facilitar leitura dos comentários em MRs
![](https://i.imgur.com/Yc5PlCG.png)
Obs: uso o Thunderbird principalmente para ter um calendário com alerta.
---
<!-- .slide: data-background="#c45f1b" -->
## Browser (Firefox)
---
## Firefox
- Plugin [Multi-Account Containers](https://github.com/mozilla/multi-account-containers#readme) para ter seções diferentes em cada aba!
- atalho para navegar entre as abas (ctrl + PgUp / ctrl + PgDown)
- atalho para mover abas (ctrl + shift + PgUp / ctrl + shift + PgDown)
- atalho para fechar aba (ctrl + w)
- atalho para voltar a url anterior (alt + left)
---
<!-- .slide: data-background="#142ce0" -->
## Zoom
---
## Zoom
Configuração para copiar a url da meeting automaticamente
![](https://i.imgur.com/LitlBRU.png)
---
<!-- .slide: data-background="#7f068a" -->
## Rocketchat
---
## Rocketchat
- atalho ctrl + k para pesquisar por sala / pessoa
- seta pra cima pra editar última mensagem
- atalho **"+:"** para [reaction na ultima msg](https://github.com/RocketChat/Rocket.Chat/pull/7569)
---
<!-- .slide: data-background="#726d73" -->
## Ubuntu
---
## Ubuntu
- atalho para play/pause/próxima música
- atalho para aumentar/diminuir volume
- atalho para travar tela
- atalho para maximizar tela
- atalho para posicionar telas "lado a lado"
---
<!-- .slide: data-background="#ff1500" -->
## Print Screen -> clipboard -> ctrl + v
Economizei muitos anos de vida com essa!
![](https://i.imgur.com/6JR6yPY.png)
---
<!-- .slide: data-background="#c2979c" -->
## Outras ferramentas/coisas
---
## Outros
- hackmd.io (markdown, slides, etc..)
- https://hackmd.io/s/how-to-create-slide-deck
- jsonlint.com (formatação de json)
---
## Outros (Locaweb)
- https://hank.locaweb.com.br/resources (para fazer requests com service-ticket)
![](https://i.imgur.com/csrAulj.png)
---
## Outros (Locaweb)
- gem [locaweb-tools](https://code.locaweb.com.br/locawebcommon/locaweb_tools) para incrementar tag de repositório Git
```bash
$ lwt bumptag minor
```
---
<!-- .slide: data-background="#276e29" -->
# Valeu!
`@fabioperrella`
[Formulário de feeback](https://forms.gle/4QMe3niPJoC3ghpT7)
![](https://i.imgur.com/c9NR5Xq.png)
{"metaMigratedAt":"2023-06-15T08:03:09.546Z","metaMigratedFrom":"YAML","title":"Como (tentar) ser mais produtivo como Dev","breaks":true,"description":"O que uso de ferramentas para (tentar) melhorar minha produtividade","contributors":"[{\"id\":\"36c0d3a9-a53e-4b0d-98a4-47132925bdd4\",\"add\":14029,\"del\":3401}]"}