Comandos DOS – Básicos
O prompt de comando (CMD ou PowerShell no Windows) permite executar comandos e scripts no sistema. Abaixo, os comandos mais usados.
Navegação e listagem
cd pasta
- Muda o diretório atual.
cd .. sobe um nível; cd \ vai para a raiz.
dir
- Lista arquivos e pastas do diretório atual.
dir /p pausa a cada tela; dir /w lista em colunas.
cls
- Limpa a tela do terminal.
Criar e remover
mkdir nome ou md nome
- Cria uma nova pasta.
rmdir nome ou rd nome
- Remove uma pasta (deve estar vazia).
rd /s remove pasta e conteúdo.
Arquivos
copy origem destino
- Copia um ou mais arquivos. Ex.:
copy a.txt b.txt
del arquivo ou erase arquivo
- Apaga arquivo(s).
del *.tmp apaga todos com extensão .tmp.
type arquivo
- Exibe o conteúdo de um arquivo de texto na tela.
ren antigo novo
- Renomeia arquivo ou pasta.
Outros
exit
- Fecha o prompt de comando.
Comandos DOS – Avançados
Comandos e recursos úteis para uso mais avançado no prompt.
Atributos e cópia avançada
attrib
- Mostra ou altera atributos de arquivos (R=somente leitura, H=oculto, S=sistema). Ex.:
attrib +r arquivo.txt
xcopy origem destino /E /I
- Copia pastas e subpastas.
/E inclui vazias; /I assume que destino é pasta.
robocopy origem destino
- Cópia robusta (Windows). Sincroniza pastas, retenta em falhas. Ex.:
robocopy C:\fonte D:\backup /MIR
Variáveis de ambiente
set
- Lista variáveis de ambiente.
set VAR=valor define (só na sessão atual). Uso: %VAR%
echo texto
- Exibe texto.
echo %VAR% mostra o valor da variável.
Redirecionamento
comando > arquivo
- Redireciona a saída para o arquivo (sobrescreve).
comando >> arquivo
- Redireciona a saída anexando ao arquivo.
comando < arquivo
- Lê a entrada do arquivo.
Arquivos .bat
Scripts em lote são arquivos .bat ou .cmd com um comando por linha. Execute com o nome do arquivo, ex.: meuscript.bat. Podem usar echo, set, if, for e chamadas a outros programas.
O que é um versionador e o que é Git
Controle de versão
Um versionador (sistema de controle de versão) guarda o histórico de alterações dos arquivos do projeto. Assim você pode ver quem mudou o quê, quando, e voltar a versões anteriores se precisar.
Principais ideias: histórico, diferenças entre versões, trabalho em equipe sem sobrescrever o trabalho dos outros.
O que é o Git
O Git é um sistema de controle de versão distribuído: cada desenvolvedor tem uma cópia completa do repositório (histórico e arquivos). O repositório pode estar só no seu computador (local) ou também em um servidor (remoto, ex.: GitHub, GitLab).
Instalar o Git no computador
Windows
Baixe o instalador em git-scm.com/download/win e execute. Ou use: winget install Git.Git ou choco install git (Chocolatey).
Mac
Instale as ferramentas de linha de comando do Xcode (já inclui Git) ou use Homebrew: brew install git.
Linux
Ubuntu/Debian: sudo apt update && sudo apt install git. Fedora: sudo dnf install git. Verifique depois com git --version.
Configurar um novo repositório
Identidade (uma vez por máquina)
git config --global user.name "Seu Nome"
git config --global user.email "seu@email.com"
Criar repositório novo (local)
cd pasta-do-projeto
git init
Isso cria a pasta .git e o repositório passa a ser versionado.
Clonar repositório existente
git clone https://github.com/usuario/repo.git
cd repo
Arquivo .gitignore
Liste arquivos e pastas que o Git deve ignorar (não versionar), um por linha. Exemplo:
node_modules/
.env
*.log
dist/
Comandos Git principais
git status
- Mostra arquivos modificados, novos e em staging.
git add arquivo ou git add .
- Adiciona alterações ao staging (prontas para commit).
git commit -m "mensagem"
- Cria um commit com as alterações em staging.
git push
- Envia commits locais para o repositório remoto.
git pull
- Baixa e integra alterações do remoto no seu branch atual.
git branch
- Lista branches.
git branch nome cria um novo branch.
git checkout branch ou git switch branch
- Muda para o branch indicado.
git merge branch
- Integra o branch indicado no branch atual.
git log
- Mostra o histórico de commits.
git remote -v
- Lista os remotos configurados (ex.: origin).
git fetch remoto
- Baixa referências e objetos do remoto sem integrar no branch atual.
Resolver problemas comuns no Git
Conflitos de merge
Quando duas alterações tocam a mesma parte do arquivo, o Git marca conflitos. Abra o arquivo, procure por <<<<<<<, =======, >>>>>>>, edite para ficar como deseja, depois:
git add arquivo
git commit -m "Resolve conflito em arquivo"
Desfazer o último commit (mantendo alterações)
git reset --soft HEAD~1
O commit some; as alterações continuam em staging.
Desfazer o último commit (descartando alterações)
git reset --hard HEAD~1
Cuidado: as alterações do último commit são perdidas.
Recuperar um arquivo de um commit anterior
git checkout COMMIT_HASH -- caminho/do/arquivo
Ou com Git mais recente: git restore --source=COMMIT_HASH -- caminho/do/arquivo
Descartar mudanças locais em um arquivo
git checkout -- arquivo
git restore arquivo
Revert vs Reset
revert: cria um novo commit que desfaz um commit anterior. Seguro para histórico já compartilhado (já enviado com push).
reset: reescreve o histórico local. Use apenas em branches que ainda não foram compartilhados ou quando souber o que está fazendo.
Git – Perguntas e respostas
Respostas diretas para as dúvidas mais comuns. Linguagem simples para você seguir passo a passo.
Preciso baixar um repositório no meu computador. Como faço?
Você quer trazer o projeto para sua máquina. No GitHub ou GitLab, abra o repositório e copie a URL (botão verde "Code" no GitHub). No terminal, na pasta onde quer deixar o projeto:
git clone https://github.com/usuario/nome-do-repo.git
cd nome-do-repo
Pronto: o projeto está na pasta nome-do-repo. O cd entra nela.
Preciso subir uma alteração minha. Quais são os comandos?
Depois de editar os arquivos, use estes comandos na ordem:
git status
git add .
git commit -m "Descrição do que você fez"
git push
git add . coloca suas alterações na “área de staging” (prontas para virar um commit). commit grava esse “pacote” com uma mensagem. push envia tudo para o servidor (GitHub/GitLab). Use git status sempre que quiser ver o que mudou.
Apareceu um conflito. Como resolvo?
Conflito acontece quando duas alterações mexeram na mesma parte do arquivo. O Git marca no arquivo com <<<<<<<, ======= e >>>>>>>. Abra o arquivo, escolha o que deve ficar (pode misturar as duas versões), apague esses marcadores, salve e faça:
git add nome-do-arquivo
git commit -m "Resolvi o conflito em nome-do-arquivo"
Depois pode dar git push de novo.
O que é um PR (Pull Request)?
É um pedido para “puxar” suas alterações para outro branch (geralmente o main). Você trabalha num branch seu, faz commit e push; aí no GitHub/GitLab você abre um Pull Request (PR) dizendo: “quero que essas mudanças entrem no main”. Alguém pode revisar, comentar e aprovar. Quando aprovado, suas alterações são incorporadas ao branch principal.
O que é automação?
É fazer o computador executar tarefas repetidas sozinho, sem você ter que rodar comando por comando. Exemplos: rodar os testes sempre que alguém dá push, fazer backup todo dia, publicar o site quando o código muda. Você configura uma vez e o sistema faz quando a condição acontecer.
O que é um pipeline?
É uma sequência de etapas automáticas que rodam em ordem. Exemplo: ao dar push, o pipeline (1) baixa o código, (2) roda os testes, (3) gera o build e (4) publica o site. Se uma etapa falhar, as próximas não rodam. Assim você garante que só vai para produção o que passou nos testes.
Python – Introdução
Python é uma linguagem de programação que prioriza clareza e simplicidade. Você escreve menos código para fazer coisas úteis.
Onde instalar
Baixe em python.org/downloads. No instalador do Windows, marque “Add Python to PATH”. No Mac/Linux costuma vir instalado ou use: brew install python3 (Mac) ou sudo apt install python3 (Ubuntu).
Primeiro programa
Crie um arquivo ola.py com:
print("Olá, mundo!")
No terminal, na pasta do arquivo, rode:
python ola.py
(No Mac/Linux pode ser python3 ola.py.) A mensagem aparece na tela.
Exercício
Crie um arquivo meu_nome.py que use print para exibir seu nome. Rode no terminal e confira o resultado.
Tente fazer antes de avançar.
Python – Variáveis e tipos
Variáveis guardam valores. Você dá um nome e atribui com =. Python entende números, texto (entre aspas) e verdadeiro/falso (True/False).
idade = 15
nome = "Maria"
aprovado = True
Para pedir algo ao usuário, use input(). O que ele digitar volta como texto (string):
resposta = input("Qual sua idade? ")
print("Você tem", resposta, "anos.")
Se precisar do valor como número, converta: int(resposta) ou float(resposta).
Exercício
Peça o nome e a idade com input, guarde em variáveis e imprima uma frase como: “Olá, [nome], você tem [idade] anos.”
Tente fazer antes de avançar.
Python – Operadores
Matemáticos: +, -, *, /, // (divisão inteira), % (resto), ** (potência).
Comparação: == (igual), != (diferente), <, >, <=, >=. O resultado é True ou False.
Lógica: and, or, not. Ex.: idade >= 18 and tem_carteira.
a = 10
b = 3
print(a // b) # 3
print(a % b) # 1
print(a == 10) # True
Exercício
Peça dois números. Calcule e mostre a soma, a diferença e o produto deles.
Tente fazer antes de avançar.
Python – Condicionais
Use if, elif e else para decidir o que o programa faz conforme uma condição.
nota = float(input("Sua nota: "))
if nota >= 7:
print("Aprovado!")
elif nota >= 5:
print("Recuperação.")
else:
print("Reprovado.")
A indentação (espaços no início da linha) define o que pertence ao if. Use 4 espaços e seja consistente.
Exercício
Peça a idade. Se for maior ou igual a 18, imprima “Maior de idade”; senão, “Menor de idade”.
Tente fazer antes de avançar.
Python – Repetição (for e while)
for repete para cada item de uma sequência (lista, range, etc.):
for i in range(5):
print(i) # 0, 1, 2, 3, 4
nomes = ["Ana", "Bruno", "Carla"]
for nome in nomes:
print("Olá,", nome)
while repete enquanto a condição for verdadeira:
contador = 0
while contador < 3:
print(contador)
contador += 1
Exercício
Use um for com range(1, 11) para imprimir os números de 1 a 10. Depois some todos esses números e imprima o total.
Tente fazer antes de avançar.
Python – Listas
Lista é uma sequência ordenada de itens entre colchetes. O primeiro índice é 0.
frutas = ["maçã", "banana", "laranja"]
print(frutas[0]) # maçã
print(frutas[-1]) # último: laranja
frutas.append("uva") # adiciona no fim
print(frutas[1:3]) # fatia: ["banana", "laranja"]
Outros métodos úteis: .insert(i, x), .remove(x), .pop(), len(lista).
Exercício
Crie uma lista com 5 nomes. Imprima o primeiro e o último. Adicione um sexto nome com append e imprima a lista inteira.
Tente fazer antes de avançar.
Python – Strings
Strings são texto. Você pode concatenar com +, repetir com *, fatiar como lista e usar f-strings para formatar:
nome = "Python"
print(f"Olá, {nome}!") # Olá, Python!
print("Oi " + nome) # Oi Python
print(nome.upper()) # PYTHON
print(" texto ".strip()) # texto
print("a,b,c".split(",")) # ["a", "b", "c"]
Exercício
Peça uma frase com input. Imprima: (1) em maiúsculas, (2) em minúsculas, (3) quantas letras tem (sem espaços).
Tente fazer antes de avançar.
Python – Funções
Função é um bloco de código com nome que você pode chamar várias vezes. Defina com def, parâmetros entre parênteses e return para devolver um valor.
def saudar(nome):
return "Olá, " + nome + "!"
print(saudar("Maria")) # Olá, Maria!
def soma(a, b):
return a + b
print(soma(3, 5)) # 8
Exercício
Crie uma função media(a, b, c) que recebe três números e retorna a média. Chame com três valores e imprima o resultado.
Tente fazer antes de avançar.
Python – Dicionários e sets
Dicionário guarda pares chave–valor. Use quando precisar “procurar por nome”:
pessoa = {"nome": "Ana", "idade": 20, "cidade": "SP"}
print(pessoa["nome"]) # Ana
pessoa["idade"] = 21
pessoa["email"] = "ana@email.com"
Set é um conjunto de itens únicos, sem ordem. Útil para remover duplicatas ou testar “está dentro?”:
numeros = {1, 2, 2, 3, 3}
print(numeros) # {1, 2, 3}
Exercício
Crie um dicionário com seu nome, idade e um hobby. Imprima cada chave e valor. Depois adicione a chave "escola" e imprima o dicionário.
Tente fazer antes de avançar.
Python – Estruturas de dados
Tupla é como uma lista, mas imutável (não dá para alterar depois de criar). Use parênteses:
coordenadas = (10, 20)
print(coordenadas[0]) # 10
Lista de listas (matriz): cada elemento é outra lista:
matriz = [[1, 2], [3, 4]]
print(matriz[1][0]) # 3
Exercício
Crie uma lista de 3 tuplas, cada uma com (nome, idade). Use um for para imprimir “Nome tem X anos” para cada uma.
Tente fazer antes de avançar.
Python – Módulos e import
Módulo é um arquivo com funções e variáveis que você pode reutilizar. Use import nome_do_arquivo (sem o .py) ou from nome import funcao.
import math
print(math.sqrt(16)) # 4.0
from math import pi
print(pi)
Para criar seu módulo: faça um arquivo meu_modulo.py com funções; no outro arquivo, import meu_modulo e use meu_modulo.minha_funcao().
Exercício
Crie um arquivo utils.py com uma função dobro(x) que retorna 2*x. Em outro arquivo, importe e chame dobro(5) e imprima o resultado.
Tente fazer antes de avançar.
Python – Arquivos
Abra arquivos com open(). Use with para fechar automaticamente ao terminar:
with open("arquivo.txt", "r", encoding="utf-8") as f:
conteudo = f.read()
print(conteudo)
with open("saida.txt", "w", encoding="utf-8") as f:
f.write("Primeira linha\n")
f.write("Segunda linha\n")
"r" = leitura, "w" = escrita (apaga o que tinha), "a" = anexar. f.readlines() devolve uma lista de linhas.
Exercício
Crie um arquivo notas.txt com três linhas de texto. Depois leia o arquivo e imprima cada linha com um número na frente (1. …, 2. …, 3. …).
Tente fazer antes de avançar.
Python – Tratamento de erros
Use try e except para não deixar o programa “cair” quando acontecer um erro:
try:
numero = int(input("Digite um número: "))
print("O dobro é", numero * 2)
except ValueError:
print("Isso não é um número válido.")
Assim, se o usuário digitar texto, você trata e mostra uma mensagem em vez de dar erro. Pode usar except Exception para pegar qualquer erro (use com cuidado).
Exercício
Peça dois números. Use try/except para: se o usuário digitar algo que não é número, avise e peça de novo; senão, mostre a divisão do primeiro pelo segundo (e trate divisão por zero).
Tente fazer antes de avançar.
Python – List comprehensions
É uma forma curta de criar uma lista a partir de outra (ou de um range), aplicando uma expressão e opcionalmente um filtro:
quadrados = [x**2 for x in range(1, 6)]
# [1, 4, 9, 16, 25]
pares = [n for n in range(10) if n % 2 == 0]
# [0, 2, 4, 6, 8]
Equivale a um for que append na lista, mas em uma linha. Use quando deixar o código mais legível.
Exercício
Crie uma list comprehension que gere os primeiros 10 múltiplos de 3 (3, 6, 9, …). Imprima a lista.
Tente fazer antes de avançar.
Python – Orientação a objetos
Classe é um “molde” que agrupa dados (atributos) e ações (métodos). O __init__ é o construtor: roda quando você cria um objeto.
class Pessoa:
def __init__(self, nome, idade):
self.nome = nome
self.idade = idade
def apresentar(self):
print(f"Sou {self.nome} e tenho {self.idade} anos.")
p = Pessoa("Ana", 20)
p.apresentar() # Sou Ana e tenho 20 anos.
self representa a própria instância. Todo método de instância recebe self como primeiro parâmetro.
Exercício
Crie uma classe Retangulo com __init__(self, largura, altura) e um método area(self) que retorna largura * altura. Crie um retângulo 5x3 e imprima a área.
Tente fazer antes de avançar.
Python – Herança
Uma classe pode herdar de outra e reutilizar ou sobrescrever métodos:
class Animal:
def __init__(self, nome):
self.nome = nome
def falar(self):
print("...")
class Cachorro(Animal):
def falar(self):
print("Au au!")
Cachorro herda de Animal. O método falar foi sobrescrito. Você pode chamar o da classe pai com super().falar().
Exercício
Crie uma classe Veiculo com atributo velocidade e método acelerar() que soma 10 à velocidade. Crie uma subclasse Carro que em acelerar() some 20. Crie um Carro, chame acelerar duas vezes e imprima a velocidade.
Tente fazer antes de avançar.
Python – Datas e tempo
Use o módulo datetime para trabalhar com data e hora:
from datetime import datetime, date, timedelta
hoje = date.today()
print(hoje) # 2025-02-04
agora = datetime.now()
print(agora.strftime("%d/%m/%Y %H:%M"))
# Diferença de dias
daqui_uma_semana = hoje + timedelta(days=7)
strftime formata a data como string. strptime faz o contrário (string → data).
Exercício
Imprima a data de hoje no formato “Dia DD/MM/AAAA”. Calcule e imprima quantos dias faltam para o seu aniversário este ano (use uma data fixa para o aniversário).
Tente fazer antes de avançar.
Python – Requisições HTTP
Para buscar dados de uma API ou site, use a biblioteca requests. Instale com pip install requests.
import requests
r = requests.get("https://api.github.com/users/octocat")
dados = r.json()
print(dados["name"])
r.json() converte a resposta em dicionário (se for JSON). r.status_code é o código HTTP (200 = OK). Sempre trate erros (conexão, 404, etc.) em programas reais.
Exercício
Use requests.get em uma API pública (ex.: https://api.github.com/users/seu_usuario). Imprima pelo menos dois campos do JSON retornado.
Tente fazer antes de avançar.
Python – Ambiente virtual (venv)
Um ambiente virtual isola as bibliotecas do projeto para não misturar com outros. Crie na pasta do projeto:
python -m venv venv
Ative: no Windows venv\Scripts\activate, no Mac/Linux source venv/bin/activate. O prompt mostra (venv). Instale o que precisar: pip install requests. Para salvar as dependências:
pip freeze > requirements.txt
Em outro computador: pip install -r requirements.txt para instalar as mesmas versões.
Exercício
Crie uma pasta, entre nela, crie um venv e ative. Instale requests. Rode pip freeze e salve o resultado em requirements.txt. Confira que o arquivo foi criado.
Tente fazer antes de avançar.
Arquitetura de soluções – O que é arquitetura
No contexto de software, arquitetura é a forma como as partes do sistema se conectam e se organizam: quem fala com quem, onde ficam os dados, como o usuário acessa o sistema. Pensar em arquitetura ajuda a construir algo que funcione bem, escale e seja fácil de manter.
Exercício
Descreva com suas palavras: o que é “arquitetura” quando a gente fala de um site ou app? Dê um exemplo de um sistema que você usa (ex.: rede social, app de delivery) e diga quais “partes” você imagina que existem (tela, servidor, banco, etc.).
Tente fazer antes de avançar.
Cliente e servidor / Front-end e back-end
Cliente é quem pede (o navegador, o app no celular). Servidor é quem responde (o computador que guarda a lógica e os dados). A comunicação entre os dois segue regras (protocolos como HTTP).
Front-end é o que o usuário vê e interage (telas, botões, formulários). Back-end é a parte que roda no servidor: regras de negócio, banco de dados, APIs. Um site completo tem os dois.
Exercício
Quando você abre um site e clica em “Login”, o que você acha que acontece no front-end e o que no back-end? Escreva em 2 ou 3 frases.
Tente fazer antes de avançar.
O que é uma API
API (Application Programming Interface) é uma “porta” que um sistema expõe para outro sistema falar com ele. O site chama a API para buscar dados (ex.: lista de produtos, previsão do tempo) em vez de acessar o banco direto. A API devolve dados em formato padrão, em geral JSON.
Exemplo: o front-end do seu site faz uma requisição “GET /produtos” e o back-end responde com a lista em JSON. Assim o front só precisa saber a URL e o formato da resposta.
Exercício
Desenhe ou descreva um fluxo: “Usuário abre a tela de produtos → front-end chama a API → back-end consulta o banco e devolve a lista → front-end exibe na tela.” Use setas ou frases na ordem.
Tente fazer antes de avançar.
Banco de dados
Banco de dados serve para guardar dados de forma organizada e durável. Em um banco relacional, os dados ficam em tabelas (linhas e colunas). Você faz consultas (queries) para ler, inserir, atualizar ou apagar. Ex.: “todos os usuários com idade > 18”, “inserir um novo pedido”.
Em linguagem simples: é como uma planilha que vários programas podem usar ao mesmo tempo, com regras para não corromper os dados.
Exercício
Imagine um site que mostra uma lista de produtos. Quais tabelas você criaria? (Ex.: produtos, categorias.) Quais colunas teria na tabela de produtos? Escreva em tópicos.
Tente fazer antes de avançar.
Escalabilidade
Escalabilidade é a capacidade do sistema de aguentar mais usuários ou mais carga sem quebrar. Escalar verticalmente = colocar mais CPU/RAM no mesmo servidor. Escalar horizontalmente = colocar mais servidores e dividir o trabalho entre eles. Horizontal costuma ser mais flexível a longo prazo.
Exercício
Um site de notícias tem um pico de acesso quando publica uma manchete. Dê uma ideia: o que você faria para o site não cair nessa hora? (Pense em cache, mais servidores ou outro recurso.)
Tente fazer antes de avançar.
Cache
Cache é uma cópia temporária de dados em um lugar mais rápido de acessar. Em vez de ir ao banco toda vez, o sistema guarda o resultado da primeira consulta (ex.: lista de produtos) na memória ou em um serviço de cache. As próximas requisições usam essa cópia até ela expirar ou ser atualizada.
Reduz idas ao banco e deixa a resposta mais rápida. O desafio é invalidar o cache quando os dados mudam.
Exercício
Num fluxo “usuário pede lista de produtos → servidor consulta banco → devolve JSON”, onde você colocaria um cache? O que faria quando alguém cadastrar um produto novo?
Tente fazer antes de avançar.
Filas e mensageria
Quando uma tarefa é pesada ou demorada (ex.: enviar e-mail, gerar relatório), em vez de fazer na hora da requisição (e deixar o usuário esperando), o sistema coloca uma “mensagem” numa fila. Um worker (processo em segundo plano) pega as mensagens da fila e executa as tarefas. Assim o usuário recebe resposta rápida e o trabalho pesado roda em background.
Exercício
Dê dois exemplos de ações em um sistema que fariam sentido colocar em fila em vez de executar na hora. Justifique em uma frase cada.
Tente fazer antes de avançar.
Segurança básica
HTTPS: tráfego criptografado entre cliente e servidor para ninguém espionar no meio do caminho. Senhas: nunca guardar em texto puro; usar hash (ex.: bcrypt) e comparar o hash na hora do login. Autenticação = “quem é você?” (login). Autorização = “o que você pode fazer?” (permissões, roles).
Exercício
Por que não devemos guardar a senha do usuário em texto puro no banco? O que fazemos em vez disso? Responda em 2 ou 3 frases.
Tente fazer antes de avançar.
Microsserviços vs monolito
Monolito: um único sistema (um deploy) com todas as funcionalidades. Mais simples de começar; pode ficar difícil de evoluir quando o time e o código crescem. Microsserviços: o sistema é dividido em vários serviços menores, cada um com uma responsabilidade (ex.: usuários, pedidos, pagamentos). Cada um pode ser desenvolvido e implantado de forma mais independente; a complexidade passa para a rede, monitoramento e consistência entre serviços.
Escolha conforme o tamanho do projeto e do time; não é obrigatório começar com microsserviços.
Exercício
Para um e-commerce pequeno (loja com catálogo, carrinho e pagamento), você começaria com monolito ou microsserviços? Por quê? (Uma frase já basta.)
Tente fazer antes de avançar.
Resiliência e falhas
Resiliência é o sistema continuar funcionando (ou se recuperando) quando algo falha. Retry: tentar de novo após uma falha temporária. Circuit breaker: depois de muitas falhas seguidas, “abre o circuito” e para de chamar o serviço que está fora; depois de um tempo tenta de novo. Assim uma falha em cascata não derruba tudo.
Exercício
Se a API de pagamento estiver fora, o que você faria no seu sistema para não travar a loja inteira? (Pense em mensagem ao usuário, fila para tentar depois, etc.)
Tente fazer antes de avançar.
Observabilidade
É conseguir entender o que está acontecendo no sistema em produção. Três pilares: logs (registro de eventos e erros), métricas (números: requisições por segundo, uso de CPU, latência) e rastreamento (seguir uma requisição por vários serviços). Com isso você descobre bugs, gargalos e comportamentos estranhos.
Exercício
Descreva um pipeline de “código até produção” com 3 etapas. Ex.: (1) desenvolvedor dá push, (2) pipeline roda testes e build, (3) deploy em produção. Escreva as etapas e o que cada uma faz.
Tente fazer antes de avançar.
Cloud – O que é computação em nuvem
Computação em nuvem é usar serviços de computador pela internet: servidores, armazenamento, banco de dados, etc. Você não precisa comprar e manter máquinas; paga pelo que usar (ou um plano). Exemplos de provedores: AWS, Google Cloud, Azure, e serviços como Netflix e Spotify que rodam na nuvem.
Exercício
Liste 3 serviços ou sites que você usa no dia a dia e que provavelmente rodam “na nuvem”. Por que você acha isso?
Tente fazer antes de avançar.
Cloud – IaaS, PaaS e SaaS
IaaS (Infrastructure as a Service): você recebe máquinas virtuais, rede, disco; instala e gerencia o que quiser (OS, aplicação). Ex.: AWS EC2. PaaS (Platform as a Service): a plataforma já oferece ambiente para rodar sua aplicação (ex.: Heroku, App Engine); você sobe o código. SaaS (Software as a Service): o software pronto, usado pela internet (Gmail, Notion, Slack).
Exercício
Classifique em IaaS, PaaS ou SaaS: (1) Netflix, (2) um servidor virtual na AWS onde você instala o que quiser, (3) um serviço que só exige fazer push do código e ele publica o site.
Tente fazer antes de avançar.
Cloud – Regiões e disponibilidade
Provedores têm regiões (datacenters em lugares do mundo, ex.: São Paulo, Virgínia). Onde os dados e as aplicações ficam importa: latência (usuário perto da região = mais rápido), leis de privacidade e custo. Disponibilidade é ter redundância (mais de um datacenter) para o serviço não cair se um falhar.
Exercício
Se você fosse criar um site só para usuários do Brasil, em qual região você colocaria os servidores? Por quê?
Tente fazer antes de avançar.
Cloud – Servidores virtuais
Um servidor virtual (ex.: EC2 na AWS) é uma “máquina” que você sobe na nuvem: escolhe o sistema operacional, CPU e memória, e instala sua aplicação. Use quando precisar de controle total ou rodar algo que não se encaixa em PaaS ou serverless. Você é responsável por atualizações e segurança do OS.
Exercício
Em que situação você escolheria um servidor virtual em vez de “só subir o código” num PaaS? Dê um exemplo.
Tente fazer antes de avançar.
Cloud – Armazenamento
Objeto (ex.: S3): guarda arquivos (fotos, vídeos, backups) com um nome (chave) e metadados. Acesso por URL ou API. Disco: volume ligado à máquina virtual, como um HD. Banco gerenciado: serviço de banco de dados (relacional ou NoSQL) que o provedor opera; você só configura e usa. Escolha conforme: muitos arquivos soltos → objeto; disco da VM → volume; dados estruturados → banco gerenciado.
Exercício
Monte uma “receita” de 3 serviços de nuvem para um site estático (HTML/CSS/JS) que tem uma API que salva dados. Diga o que cada serviço faria (ex.: um para arquivos do site, um para a API, um para o banco).
Tente fazer antes de avançar.
Cloud – Rede (VPC)
VPC (Virtual Private Cloud) é sua rede isolada na nuvem: você define sub-redes (blocos de IP), onde ficam as máquinas e como se comunicam. Grupos de segurança (firewall) controlam quem pode acessar o quê (portas, origens). Em linguagem simples: você desenha a “rua” e as “fechaduras” dos seus recursos para só o necessário ter acesso.
Exercício
Por que não é uma boa ideia deixar um banco de dados na nuvem aberto para a internet inteira? O que você faria?
Tente fazer antes de avançar.
Cloud – Serverless
Serverless (funções como serviço, ex.: AWS Lambda) é rodar código em resposta a eventos (uma requisição HTTP, um arquivo que chegou, um horário) sem você gerenciar servidor. Você só escreve a função e define quando ela dispara; o provedor escala e cobra por execução. Bom para APIs leves, processamento sob demanda e automações.
Exercício
Dê um exemplo de tarefa que faria sentido rodar como função serverless (uma frase: “Quando X acontecer, executar Y”).
Tente fazer antes de avançar.
Cloud – Containers
Container (ex.: Docker) é uma forma de empacotar sua aplicação com tudo que ela precisa (código, bibliotecas, config) em uma “caixa” que roda igual em qualquer lugar. Na nuvem, você pode rodar containers em serviços gerenciados (ex.: ECS, Kubernetes). Ideia: “empacote uma vez, rode em qualquer lugar”; facilita deploy e escalonamento.
Exercício
Em uma frase: qual a vantagem de colocar sua aplicação dentro de um container em vez de instalar direto no servidor?
Tente fazer antes de avançar.
Cloud – DevOps e CI/CD
DevOps na nuvem é usar ferramentas para integrar desenvolvimento e operação: código no repositório, testes e deploy automáticos. CI/CD: ao dar push, o pipeline (na nuvem ou em ferramentas como GitHub Actions) roda testes, faz o build e faz o deploy. Conecta com a ideia de “pipeline” do Git: commit → build → deploy em produção, tudo automatizado.
Exercício
Descreva em 3 passos um pipeline “commit → build → deploy em função serverless”. O que cada passo faria?
Tente fazer antes de avançar.
Cloud – Custos e boas práticas
Na nuvem você paga pelo que usa. Boas práticas: usar tags nos recursos para saber quanto cada projeto custa; configurar alertas quando o gasto passar de um limite; desligar ou redimensionar o que não está sendo usado; escolher o tipo certo de recurso (ex.: instâncias spot mais baratas para cargas que podem ser interrompidas). “Não deixar recurso ligado à toa” evita surpresas na fatura.
Exercício
Você deixou um servidor de teste ligado 24h por um mês e a conta veio alta. O que você faria na próxima vez para evitar isso? (Duas ideias.)
Tente fazer antes de avançar.
IA – O que é IA e o que é LLM
Inteligência artificial (IA) é a área que tenta fazer máquinas realizarem tarefas que normalmente exigiriam inteligência humana: entender texto, reconhecer imagens, responder perguntas, tomar decisões a partir de dados.
Um LLM (Large Language Model, modelo de linguagem grande) é um tipo de IA treinado em muito texto. Ele "prevê" a próxima palavra (ou pedaço de texto) a partir do contexto. Por isso consegue completar frases, responder perguntas, escrever código ou resumir um texto quando você dá um prompt (pergunta ou instrução). Ele não "sabe" como um humano; ele gera texto coerente com o que aprendeu.
Exercício
Em uma frase: qual a diferença entre "fazer uma pergunta no Google" e "fazer uma pergunta para um LLM como o ChatGPT"?
Tente fazer antes de avançar.
IA – O que é um prompt
O prompt é o texto que você envia para o modelo: a pergunta, a instrução ou o contexto que você dá para ele gerar uma resposta. Pode ser curto ("O que é Python?") ou longo (um parágrafo explicando o problema e pedindo um código).
O modelo usa o prompt como entrada e "continua" o texto a partir dele. Por isso ser claro e específico no prompt faz toda a diferença: quanto melhor você descrever o que quer, melhor tende a ser a resposta.
Exercício
Escreva um prompt curto para pedir a um LLM que explique "variável" para alguém que nunca programou. Depois reescreva o mesmo pedido de forma mais específica (ex.: "em duas frases", "com um exemplo em Python").
Tente fazer antes de avançar.
IA – Como escrever bons prompts
Dicas:
- Contexto: Diga em poucas palavras o cenário (ex.: "Sou iniciante em Python", "É para um trabalho da escola").
- Tarefa clara: Uma instrução direta ("Escreva uma função que…", "Explique em 3 tópicos").
- Formato desejado: Liste, parágrafo, código, tabela. Ex.: "Responda em tópicos" ou "Devolva só o código, sem explicação".
- Exemplos (few-shot): Mostre um exemplo do que você quer. Ex.: "Traduza para inglês: [frase 1] → [tradução 1]. Agora traduza: [frase 2]".
Evite perguntas vagas ("fala sobre programação"). Se a resposta vier errada, refine: "Na verdade quero só a sintaxe em Python" ou "Explique sem usar jargão".
Exercício
Escolha uma tarefa (ex.: "escrever um email pedindo um prazo"). Escreva primeiro um prompt vago e depois um prompt melhor, com contexto e formato definido.
Tente fazer antes de avançar.
IA – Usar o GPT (ChatGPT) da melhor forma
Organize a conversa: Use threads separadas para assuntos diferentes; assim o modelo não mistura contexto.
Refine com follow-up: Se a resposta não for o que você queria, peça de novo de forma mais específica ("em português", "mais curto", "com um exemplo").
Busca vs modelo: Para fatos atuais, datas ou notícias, a busca na web (quando o ChatGPT tem essa opção) pode complementar; o modelo tem uma "data de corte" e não sabe tudo depois disso.
Limites: O modelo pode inventar detalhes (alucinar). Para coisas críticas, confira em outra fonte. Use para ideias, rascunhos e explicações, e ajuste o que fizer sentido.
Exercício
Abra o ChatGPT (ou outro) e faça a mesma pergunta duas vezes: primeiro de forma vaga e depois com contexto e formato definido. Compare as duas respostas.
Tente fazer antes de avançar.
IA – Cursor
Cursor é um editor de código (IDE) que integra IA no fluxo de programação. Você escreve código e usa a IA para completar, explicar, refatorar ou gerar trechos a partir de instruções em linguagem natural.
Uso no dia a dia: Completar linha ou bloco (autocomplete inteligente), abrir um chat para perguntar "o que faz essa função?" ou "refatore isso para usar async", pedir que a IA edite o arquivo seguindo suas instruções. Você pode selecionar trechos e pedir mudanças só naquela parte.
Boas práticas: Seja claro no que pede; use atalhos para aceitar sugestões ou abrir o chat; mantenha o projeto e os arquivos abertos com contexto relevante para a IA responder melhor.
Exercício
Se você usa Cursor: abra um arquivo de código, selecione uma função e peça à IA para explicar o que ela faz em uma frase. Se não usar ainda, pesquise "Cursor IDE" e anote em que situação você usaria.
Tente fazer antes de avançar.
IA – Claude
Claude é um assistente de IA (modelo de linguagem) criado pela Anthropic. Você pode usar no site claude.ai ou em integrações (APIs, apps, outras ferramentas).
Assim como outros LLMs, ele responde a prompts, explica conceitos, ajuda a escrever texto ou código. As diferenças estão no "estilo" da resposta, no tamanho do contexto (quantos tokens ele "enxerga" de uma vez) e em recursos específicos (ex.: análise de documentos longos). Vale testar e comparar com o GPT para ver qual se encaixa melhor no que você precisa.
Exercício
Faça a mesma pergunta para o ChatGPT e para o Claude (no claude.ai). Compare: qual respondeu de forma mais clara ou mais útil para você?
Tente fazer antes de avançar.
IA – Outras ferramentas (Antigravity, etc.)
Além de Cursor e Claude, existem várias ferramentas que usam IA para automação, código e assistência. Antigravity e outras do tipo permitem automatizar tarefas ou conectar modelos a fluxos de trabalho.
O ecossistema muda rápido: assistentes de código (GitHub Copilot, Codeium), chatbots (ChatGPT, Claude, Gemini), ferramentas de voz (Whisper, Kokoro), e projetos open source para rodar modelos localmente (Ollama, LM Studio). O importante é saber o que você quer (escrever código, transcrever áudio, rodar um modelo na sua máquina) e escolher a ferramenta que atende. Mantenha-se curioso e acompanhe o que já é conhecido e útil na sua área.
Exercício
Liste três ferramentas de IA que você já usou ou ouviu falar (pode ser ChatGPT, Cursor, ou outra). Para cada uma, escreva em uma frase para que serve.
Tente fazer antes de avançar.
IA – Por que rodar uma LLM local
Rodar um modelo na sua máquina (local) tem vantagens: privacidade (os dados não saem do seu PC), custo (depois de instalar, não paga por uso), uso offline e controle (você escolhe o modelo e a versão).
Faz sentido quando você não quer enviar código ou textos sensíveis para a nuvem, ou quando quer experimentar sem depender de internet ou de limite de requisições. O trade-off é que modelos grandes exigem bastante RAM (e, de preferência, GPU); para máquinas mais modestas, use modelos menores (ex.: 7B parâmetros).
Exercício
Em que situação você preferiria usar uma LLM local em vez do ChatGPT na nuvem? (Uma ou duas frases.)
Tente fazer antes de avançar.
IA – Como rodar uma LLM local (open source)
Opções populares:
- Ollama: Instale em ollama.com. No terminal:
ollama run nome-do-modelo (ex.: llama3.2, mistral). Você conversa no terminal; também dá para usar via API local.
- LM Studio: Interface gráfica para baixar e rodar modelos. Bom para quem prefere não usar linha de comando.
- llama.cpp: Projeto que roda modelos no seu PC (CPU ou GPU). Mais técnico; usado por várias ferramentas por baixo dos panos.
Requisitos: RAM: 8 GB no mínimo para modelos pequenos; 16 GB ou mais para modelos maiores. GPU com bastante VRAM acelera. Comece com um modelo "7B" para testar.
# Exemplo com Ollama (após instalar)
ollama pull llama3.2
ollama run llama3.2
Exercício
Instale o Ollama (ou LM Studio), baixe um modelo pequeno e faça uma pergunta no terminal ou na interface. Anote o que funcionou e o que deu erro.
Tente fazer antes de avançar.
IA – Estruturas e projetos para sua própria LLM
Além do Ollama e do LM Studio, existem projetos open source que ajudam a servir ou integrar um modelo local: expor uma API na sua máquina (para um app ou script chamar), conectar a um front-end de chat, ou rodar em servidor. Exemplos: llama.cpp com bindings em Python, text-generation-webui (interface para conversar e baixar modelos), e documentação dos próprios repositórios (Ollama, LM Studio) para API local.
Vale explorar o GitHub em buscas como "local LLM API" ou "self-hosted LLM" e ler o README dos projetos para ver requisitos e como rodar.
Exercício
Escolha um projeto (ex.: text-generation-webui ou a API do Ollama) e leia em 3 passos como "subir" um modelo local. Anote os passos em tópicos.
Tente fazer antes de avançar.
IA – Whisper (voz para texto)
Whisper é um modelo open source da OpenAI para reconhecimento de fala: transforma áudio em texto (transcrição). Funciona offline e em vários idiomas.
Como usar: Instale (ex.: pip install openai-whisper ou use o repositório oficial no GitHub). Pela linha de comando você pode passar um arquivo de áudio e receber o texto. Em código, carregue o áudio, rode o modelo e leia a transcrição.
# Exemplo de uso via linha de comando (Whisper instalado)
# whisper audio.mp3 --model base
Use para: transcrever reuniões, legendas, ou como primeira etapa de um fluxo "voz → texto → LLM → resposta".
Exercício
Grave um áudio curto (celular ou PC) e use o Whisper para transcrever. Se não puder instalar, pesquise "Whisper online" e use uma versão em navegador e anote o resultado.
Tente fazer antes de avançar.
IA – Kokoro (texto para voz)
Kokoro é um projeto de síntese de fala (TTS – text-to-speech): transforma texto em áudio, ou seja, "a IA responde por voz". É open source e pode ser usado localmente.
Você passa um texto e o modelo gera um arquivo de áudio (ou stream) com a fala. Assim você monta um pipeline: a LLM gera a resposta em texto e o Kokoro (ou outro TTS) transforma em voz para tocar no alto-falante. Projetos que integram LLM + Whisper + Kokoro permitem "conversa por voz" totalmente local: você fala, o Whisper transcreve, a LLM responde, o Kokoro fala.
Procure no GitHub por "Kokoro TTS" ou "Kokoro speech" para instruções de instalação e uso.
Exercício
Pesquise "Kokoro TTS" e anote em 2 passos como gerar um áudio a partir de uma frase. Se encontrar um demo online, teste com uma frase curta.
Tente fazer antes de avançar.
IA – Montando um fluxo: LLM + voz
O fluxo completo de "conversa por voz" com IA local pode ser:
- Microfone → áudio da sua fala.
- Whisper → transcreve o áudio em texto.
- LLM local (ex.: via Ollama) → recebe o texto, gera a resposta em texto.
- Kokoro (ou outro TTS) → transforma o texto da resposta em áudio.
- Alto-falante → toca o áudio.
Você pode implementar esse pipeline em um script (Python, por exemplo): capturar áudio, chamar Whisper, enviar o texto para a API da LLM local, pegar a resposta e enviar para o Kokoro, e reproduzir o áudio. Projetos open source já fazem isso; vale procurar "local voice assistant" ou "LLM + Whisper + TTS".
Exercício
Descreva com suas palavras os 5 passos do fluxo "microfone até o alto-falante" e diga qual ferramenta (Whisper, LLM, Kokoro) entra em cada passo.
Tente fazer antes de avançar.