Skip to content

Latest commit

 

History

History
341 lines (210 loc) · 15.3 KB

FAQ.md

File metadata and controls

341 lines (210 loc) · 15.3 KB

Dúvidas frequentes

Abaixo estão algumas orientações e dúvidas comuns ao desenvolvimento do projeto.

Se houver qualquer outra dúvida ou problema, é só procurar a monitoria ou postar uma thread no slack. Estamos juntos! 👍

Git e GitHub

‼️ Antes de começar a desenvolver
  1. Clone o repositório

    • Copie o endereço SSH do repositório e use-o para cloná-lo em sua máquina:

      Local do endereço SSH na página inicial do repositório:

      endereço SSH do repositório

    • Entre na pasta do repositório que você acabou de clonar:

      • cd <diretório-do-projeto>
  2. Crie uma branch a partir da branch main

    • Verifique que você está na branch main
      • Exemplo: git branch
    • Se não estiver, mude para a branch main
      • Exemplo: git checkout main
    • Agora crie uma branch à qual você vai submeter os commits do seu projeto
      • Você deve criar uma branch no seguinte formato: nome-de-usuario-nome-do-projeto
      • Exemplo: git checkout -b joaozinho-project-x
  3. Para cada etapa do desenvolvimento, adicione as mudanças ao stage do Git e faça um commit

    • Verifique que as mudanças ainda não estão no stage
      • Exemplo: git status (devem aparecer listadas as alterações realizadas em vermelho)
    • Adicione o novo arquivo ao stage do Git
      • Exemplo:
        • git add . (adicionando todas as mudanças - que estavam em vermelho - ao stage do Git)
        • git status (devem aparecer listadas as alterações realizadas em verde)
    • Faça o commit inicial
      • Exemplo:
        • git commit -m 'Iniciando o projeto X! #VQV 🚀' (fazendo o primeiro commit)
        • git status (deve aparecer uma mensagem tipo nothing to commit )
  4. Adicione a sua branch com o novo commit ao repositório remoto

    • Usando o exemplo anterior: git push -u origin joaozinho-sd-0x-project-x
  5. Crie um novo Pull Request (PR)

    • Vá até a página de Pull Requests do repositório no GitHub.

      Local da página de Pull Requests no repositório:

      endereço SSH do repositório

    • Clique no botão verde "New pull request"

    • Clique na caixa de seleção "Compare" e escolha a sua branch com atenção

    • Clique no botão verde "Create pull request"

    • Adicione uma descrição para o Pull Request e clique no botão verde "Create pull request"

    • Não se preocupe em preencher mais nada por enquanto!

    • Volte até a página de Pull Requests do repositório e confira que o seu Pull Request está criado

⌨️ Durante o desenvolvimento
  • Faça commits das alterações que você fizer no código regularmente

  • Lembre-se de sempre após um (ou alguns) commits atualizar o repositório remoto

  • Os comandos que você utilizará com mais frequência são:

    1. git status (para verificar o que está em vermelho - fora do stage - e o que está em verde - no stage)
    2. git add (para adicionar arquivos ao stage do Git)
    3. git commit (para criar um commit com os arquivos que estão no stage do Git)
    4. git push -u nome-da-branch (para enviar o commit para o repositório remoto na primeira vez que fizer o push de uma nova branch)
    5. git push (para enviar o commit para o repositório remoto após o passo anterior)
🤝 Depois de terminar o desenvolvimento (opcional)

Para "entregar" seu projeto, siga os passos a seguir:

  • Vá até a página DO SEU Pull Request, adicione a label de "code-review" e marque seus colegas
    • No menu à direita, clique no link "Labels" e escolha a label code-review
    • No menu à direita, clique no link "Assignees" e escolha o seu usuário
    • No menu à direita, clique no link "Reviewers" e digite students, selecione o time tryber/students-sd-xx onde xx é o número da sua turma

Se ainda houver alguma dúvida sobre como entregar seu projeto aqui tem um video explicativo.

🕵🏿 Revisando um pull request

Use o conteúdo sobre Code Review para te ajudar a revisar os Pull Requests.

Node e NPM

⚠️ Não rode o comando npm audit fix!
  • Ele atualiza várias dependências do projeto, e essa atualização gera conflitos com o avaliador.
🔽 Instalação de dependências com npm install
  • Instala as dependências Node da aplicação na pasta node_modules.
  • Os outros scripts do projeto só funcionam corretamente após rodar este comando.
🔁 Live reload com npm run dev

Usaremos o Nodemon para monitorar as mudanças nos arquivos e reiniciar o servidor automaticamente.

Este projeto já vem com as dependências relacionadas ao nodemon configuradas no arquivo package.json.

Para iniciar o servidor em modo de desenvolvimento basta executar o comando npm run dev. Este comando fará com que o servidor reinicie de forma automática ao salvar uma modificação realizada nos arquivos do projeto.

🎛 Rodando o linter com npm run lint

Usaremos o ESLint para fazer a análise estática do seu código.

Este projeto já vem com as dependências relacionadas ao linter configuradas nos arquivos package.json.

Para poder rodar o ESLint em um projeto basta executar o comando npm install dentro do projeto e depois npm run lint. Se a análise do ESLint encontrar problemas no seu código, tais problemas serão mostrados no seu terminal. Se não houver problema no seu código, nada será impresso no seu terminal.

Você pode também instalar o plugin do ESLint no VSCode. Para isso, basta fazer o download do plugin ESLint e instalá-lo.

🛠 Rodando testes com npm test

Usaremos o Jest e o Frisby para fazer os testes de API.

Este projeto já vem configurado e com suas dependências.

  • Executando todos os testes

    Para poder executar os testes, inicie sua aplicação com npm run dev, em seguida, basta executar o comando npm test e todos os seus testes serão executados.

  • Executando um teste específico

    Para executar um teste específico, inicie sua aplicação com npm run dev, em seguida, basta executar o comando npm test nome-do-teste.

    Colocamos o número do requisito como pré-fixo para facilitar, veja abaixo.

    Ex: Para executar o teste referente ao 01-getAllTalkers, basta digitar npm test 01.

    ⚠️ Importante: os comandos de testes podem ser executados tanto no terminal do seu computador quanto do Docker.

Erros comuns

⛔ Erro de porta já utilizada: EADDRINUSE ou port is already allocated

erro na porta 3001

  • Se você se deparar com esse tipo de erro, quer dizer que sua aplicação já está utilizando a porta 3001, seja com outro processo do Node.js ou algum container Docker!

    • Você pode parar todos os processos Node com o comando killall node;

    • Você pode parar um container Docker com o comando docker stop <nome-do-container>.

  • Dica: Antes de iniciar qualquer coisa, observe os containers que estão em execução em sua máquina usando o comando docker container ls;

Rodando o projeto pelo Docker

⚠️ Rode comandos do NPM de dentro do container Node
  • Caso opte por utilizar o Docker, TODOS os comandos disponíveis no package.json (npm start, npm test, npm run dev, ...) devem ser executados DENTRO do container, ou seja, no terminal que aparece após a execução do comando docker exec citado acima.
⚠️ Rode comandos do Git fora do container Node
  • O git dentro do container não vem configurado com suas credenciais. Ou faça os commits fora do container, ou configure as suas credenciais do git dentro do container.
⚠️ Use a versão 1.29 do Docker Compose
  • Para que você consiga rodar o seu projeto com docker e o avaliador funcione é fundamental que o seu docker compose esteja na versão 1.29.

    • Verifique sua versão:
    docker-compose --version

    Se não for a versão 1.29, faça os seguintes comandos para atualizar a versão:

    sudo rm /usr/local/bin/docker-compose
    sudo curl -L "<https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname> -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
🐳 Iniciando serviços com docker-compose up
  • O arquivo docker-compose.yml tem dois serviços:

    • backend: serviço Node, usado para rodar aplicação e os testes
    • db: serviço do banco de dados MySQL
  • O comando docker-compose up -d:

    • Inicia o serviço backend
      • Esse serviço irá inicializar um container chamado talker_manager (definido no arquivo docker-compose.yml).
      • A flag -d faz o container rodar em segundo plano.
      • A partir daqui você pode acessar o container via CLI com docker exec ou abri-lo no VS Code.
    • Inicia o serviço db
      • Esse serviço irá inicializar um container chamado talker_manager_db
      • Ele é usado no requisito 12

❓ Duvidas sobre a diferença entre container e service? Reveja a lição Serviço vs. Container na seção de Docker na plataforma. 👍

🐳 Acessando um terminal de um container com docker exec
  • O comando docker exec -it talker_manager bash:
    • Dá acesso ao terminal interativo do container de nome talker_manager, que está rodando em segundo plano.

Dicas

✨ Desenvolvendo o projeto no VS Code de dentro do container
  • A extensão Dev Containers (que estará na seção de extensões recomendadas do VS Code) é indicada para que você possa desenvolver sua aplicação no container Docker direto no VS Code, como você faz com seus arquivos locais.

    Extensão Dev Containers do VS Code

🐞🗡️ Depuração (Debugging)

Em primeiro lugar sua aplicação precisa estar rodando o script dev via docker compose.

Existe nesse projeto uma configuração de depuração para o VScode, localizada na pasta .vscode.

Para utilizá-la você pode clicar no ícone de Run and Debug ou usar a tecla de atalho Ctrl + Shift + D:

debugger icon

Vai parecer uma interface assim no canto superior do seu VScode:

debugger_top_interface

O simbolo 🔽 é uma caixa de seleção, como um <select> HTML, este abriga os modos de depuração que o VScode encontrou, nesse projeto temos apenas uma opção a Depurar com Docker

Para iniciar a depuração basta clicar no play verde ▶️.

Se tudo der certo o debugger agora está conectado no processo que está rodando sua aplicação, você sabe que ele está funcionando se aparecer essa barrinha no topo da sua tela:

debugger control bar

Agora você consegue ativar os breakpoints ⏺️ ao lado do número da linha

debugger breakpoint

Quando clicar nele, este fica vermelho e quando a API executar essa linha, ela vai parar.

Com tudo preparado, vamos fazer um teste, vou fazer uma requisição para acionar a execução da linha 7 do src/app.js:

debugger in action

Note que todas a variáveis do escopo local (_request, response, this) de onde o cursor está podem ser inspecionadas. debugger variables

Gif com o passo a passo

debugger animation


Agora é com você! ✨

Mas vou deixar aqui uma colinha de como funciona cada ícone da barra de depuração:

  • ▶️ Continue: Vai executar o código até chegar no próximo breakpoint, dar um erro ou não haver mais o que executar;
  • ⤵️ Step Over: Executa linha atual e pula para a próxima;
  • ⬇️ Step Into: Entra dentro da função que vai ser executada na linha do cursor;
  • ⬆️ Step Out: Saí da função que vai ser executada na linha do cursor, executando o resto dela;
  • 🔄 Restart: Reinicia o processo de depuração, matando o processo atual e criando um novo.
  • ⏹️ Stop: Para o processo de depuração, mata o processo.

💡 Anota a dica: talvez você tenha se perguntado: uai, mas não tem como voltar? Realmente não tem, é um processo que só vai na direção que o código executa. Logo, para "voltar uma linha" é preciso que ativemos o gatilho que faz o depurador passar por aquela linha que a gente quer voltar, fazendo uma nova requisição por exemplo.

Rodando os testes do projeto

🧪 O avaliador pode testar os requisitos fora da ordem que aparecem no README
  • O avaliador automático não necessariamente avalia seu projeto na ordem em que os requisitos aparecem no readme. Isso acontece para deixar o processo de avaliação mais rápido. Então, não se assuste se isso acontecer, ok?

Depois de completar o projeto

🗂 Compartilhe seu portfólio!

Após finalizar os requisitos, chegou a hora de mostrar ao mundo que você aprendeu algo novo! 🚀

Siga esse guia que preparamos com carinho para disponibilizar o projeto finalizado no seu GitHub pessoal.

Esse passo é super importante para ganhar mais visibilidade no mercado de trabalho, mas também é útil para manter um back-up do seu trabalho.

E você sabia que o LinkedIn é a principal rede social profissional e compartilhar o seu aprendizado lá é muito importante para quem deseja construir uma carreira de sucesso? Compartilhe esse projeto no seu LinkedIn, marque o perfil da Trybe (@trybe) e mostre para a sua rede toda a sua evolução.