Aula 1 • Projeto 9 • Sistemas de Informação
Setup de Máquina + Discovery de Dados

Base para desenvolvimento, descoberta de dados e setup do ambiente.

🧰 Setup 🤖 Discovery 🧩 Blazor 🗄️ Dados
Prof. Afonso Brandão • 2 horas • Fevereiro 2025
Agenda do Dia
  • Setup de Máquina: 60 minutos
  • Discovery de dados com IA: 60 minutos
⚠️
Observação Importante:
No terceiro ano a daily não é mais no horário de instrução.
Objetivos da Aula
Resultados esperados
  • Garantir o .NET SDK 9 instalado e funcionando.
  • Padronizar o ambiente entre Windows, macOS e Linux.
  • Entender diferença entre SDK e Runtime.
  • Rodar um projeto Blazor com Hot Reload.
  • Usar IA para discovery de dados local e em banco.
📘 Comandos básicos e funcionamento do C#
Checklist de Setup
Antes de instalar o .NET
  • Atualize o sistema e reinicie se necessário.
  • Garanta 2 GB livres em disco.
  • Tenha um terminal funcionando (PowerShell, Terminal, bash/zsh).
  • Verifique se já existe .NET instalado:
> dotnet --list-sdks > dotnet --list-runtimes
SDK vs Runtime
O que voce precisa para desenvolver

Conceitos chave

  • Runtime: ambiente que executa a aplicacao (CLR - Common Language Runtime + bibliotecas base).
  • SDK: Software Development Kit, inclui runtime + compiladores + ferramentas (dotnet CLI, templates).
  • Para rodar uma app, runtime basta; para criar, precisa do SDK.
Resumo: Sem SDK voce nao compila; sem runtime voce nao executa.
Compilada vs Interpretada
VM, compilador e o caso do C#

Ideias essenciais

  • Compilada: codigo vira binario antes de executar.
  • Interpretada: codigo executa passo a passo em tempo de execucao.
  • Compilador: traduz codigo fonte para outro formato (ex.: IL).
  • VM (Virtual Machine): ambiente que executa o codigo intermediario (ex.: CLR).

Como o C# funciona

C# compila para IL (Intermediate Language). O CLR (Common Language Runtime) executa via JIT (Just-In-Time), gerando codigo nativo.

Por que isso e vantagem?

  • Performance com otimizacoes do JIT.
  • Portabilidade entre Windows, macOS e Linux.
  • Ecossistema forte e tooling consistente (SDK/CLI).
Instalação do DotNet
Windows via PowerShell

Usando Winget (Recomendado)

Abra o PowerShell como Administrador e execute:

> winget install Microsoft.DotNet.SDK.9

Isso instalará o SDK do .NET 9.0, que inclui o Runtime.

Verificando a Instalação

> dotnet --version

Se o comando falhar, feche e reabra o terminal para atualizar o PATH.

DotNet no Windows
Troubleshooting rápido

Diagnóstico

> where dotnet > dotnet --info
  • SDK vs Runtime: para desenvolver, precisa do SDK.
  • Versão errada: confirme se é 9.x no dotnet --info.
  • Sem Winget: baixe o instalador em dotnet.microsoft.com.
Instalação do DotNet
macOS via Homebrew

Recomendado para quem já usa brew

Atualize o Homebrew e instale o SDK:

> brew update > brew install --cask dotnet-sdk

Verificando

> dotnet --version

Em Macs com Apple Silicon, use o Terminal normal (não Rosetta).

Instalação do DotNet
macOS via instalador oficial

Instalador .pkg

Baixe o pacote correto para seu chip (Intel x64 ou Apple Silicon arm64).

Link oficial:

https://dotnet.microsoft.com/download/dotnet/9.0

Depois do install, reinicie o terminal e rode:

> dotnet --info
Instalação do DotNet
Linux (Ubuntu 22.04+)

Usando APT (Ubuntu/Debian)

Instale o repositório da Microsoft (exemplo 22.04):

> wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb > sudo dpkg -i packages-microsoft-prod.deb > sudo apt-get update

Remova versões anteriores (opcional, mas recomendado):

> sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'

Instale o SDK do .NET 9.0:

> sudo apt-get update && \ sudo apt-get install -y dotnet-sdk-9.0

Verificando a Instalação

> dotnet --version
Nota: Se você usa outra distro (Fedora, Arch), consulte a documentação oficial.
Instalação do DotNet
Linux (Fedora)

Usando DNF

Instale o SDK diretamente:

> sudo dnf install -y dotnet-sdk-9.0

Verificando

> dotnet --version
Criando Projeto Blazor
Primeiros Passos no Terminal

Gerando o Template

O .NET 9 traz um template unificado para Blazor.

> dotnet new blazor -o MeuDashboard

Modos do Blazor

Opção Descrição
Blazor Server Renderiza no servidor, conexão SignalR.
Blazor WebAssembly Roda no browser, SPA.
Blazor Web App (.NET 9) Novo modelo unificado com SSR.

Vamos utilizar o Blazor Web App com Server Side Rendering (SSR).

SSR significa que o HTML inicial é renderizado no servidor e enviado pronto para o navegador, melhorando a primeira carga e a percepção de velocidade.

Executando a Aplicação

Entre na pasta do projeto:

> cd MeuDashboard

Inicie o servidor com Hot Reload:

> dotnet watch
Dica: O comando dotnet watch atualiza o navegador automaticamente quando você salva alterações no código!
Como o SSR Funciona (Blazor Web App)
Fluxo simplificado
1) Navegador Requisita a página 2) Servidor Renderiza o HTML (SSR) 3) Navegador Recebe HTML pronto e exibe rápido 4) Blazor Hidrata e ativa interatividade 5) App Eventos e dados seguem o fluxo do app

Resumo: SSR entrega o HTML inicial rápido; depois o Blazor ativa a experiência interativa.

Atividade do Grupo
Criar e versionar o projeto

Objetivo

Crie o projeto Blazor dentro do repositório do grupo e faça o push da estrutura inicial.

Nome do projeto: NomeDoGrupo.Dashboard

Passo a passo (exemplo)

> git clone https://gitlab.com/sua-organizacao/seu-repo.git > cd seu-repo > dotnet new blazor -o NomeDoGrupo.Dashboard > git add . > git commit -m "Cria estrutura inicial do Blazor" > git push

Dica: crie na raiz do repositório, sem pastas extras.

Checklist Pós-Instalação
Smoke test rápido

Comandos úteis

> dotnet --info > dotnet --list-sdks > dotnet --list-runtimes

Crie um projeto simples para validar:

> dotnet new console -o HelloDotNet > cd HelloDotNet > dotnet run
Anatomia de um Projeto Blazor WebApp
Entendendo a estrutura de uma solution .NET

Baseado no repositorio de exemplo: aula_dotnet_cars

Estrutura da Solution

Volkswagen.Dashboard.WebApi.sln │ ├── Volkswagen.Dashboard.WebApi/ ← API REST │ ├── Controllers/ │ ├── Program.cs │ └── *.csproj │ ├── Volkswagen.Dashboard.Web/ ← Blazor SSR │ ├── Components/Pages/*.razor │ ├── Program.cs │ └── *.csproj │ ├── Volkswagen.Dashboard.Services/ ← Negocio │ └── *.csproj │ ├── Volkswagen.Dashboard.Repository/ ← Dados │ └── *.csproj │ ├── Volkswagen.Dashboard.Tests/ ← Testes │ └── *.csproj │ └── docker-compose.yml

O que cada arquivo faz

.sln (Solution)
Agrupa todos os projetos. E o ponto de entrada do Visual Studio/Rider. Nao contem codigo, apenas referencias aos .csproj.
.csproj (Projeto C#)
Define o target framework (net9.0), pacotes NuGet e referencias entre projetos. Cada pasta com .csproj e um projeto independente.
Projetos diferentes, responsabilidades diferentes:
WebApi = endpoints REST (Controllers)
Web = interface do usuario (Blazor SSR, paginas .razor)
Services = regras de negocio (validacoes, logica)
Repository = acesso ao banco (Dapper, queries SQL)
Tests = testes unitarios (xUnit, nao vai pra producao)
Cadeia de dependencias:
WebApi → Services → Repository
Web → Services (via API HTTP)
Tests → Services + Repository
Virtualizacao e Containers
Base para ambientes reproduziveis

O que e

  • Virtualizacao: cria uma maquina virtual completa (SO + kernel).
  • Container: isola processos compartilhando o kernel do host.

Como o Docker funciona

  • Imagens sao receitas imutaveis.
  • Containers sao instancias em execucao dessas imagens.
  • Docker Compose orquestra multiplos servicos.
Por que usar: ambiente identico para o time e facil de reproduzir.
Instalacao do Docker
Docker + Docker Compose

Windows

  • Instale o Docker Desktop e habilite WSL 2.
  • Download: docker.com

macOS

  • Instale o Docker Desktop (Intel ou Apple Silicon).
  • Download: docker.com

Linux

Verificacao rapida

> docker --version > docker compose version
Discovery de Dados com IA
Setup Atual do Antigravity (Google)

O que é o Antigravity?

Antigravity é o editor com Agentes de IA do Google para desenvolvimento assistido.

  • Integração nativa com Agentes de IA.
  • Suporte ao Protocolo MCP (Model Context Protocol).
  • Permite que a IA "veja" e "manipule" seu projeto inteiramente.

Instalação

Use o fluxo oficial atual: faça o download em antigravity.google/download, instale o app e conclua o login com sua conta Google.

> agy --version

No Linux, a CLI oficial instalada pelo app é agy. Se o comando ainda não existir no terminal, finalize a instalação pelo aplicativo antes de seguir.

Discovery em Arquivos
Analisando Dados Locais

Usando o Antigravity para Discovery

Ao invés de rodar scripts manuais, vamos pedir para o Agente analisar os dados.

1. Abra a pasta do projeto no Antigravity pela CLI oficial:

> agy ./meu-projeto-dados

2. Abra o chat do Agente (Cmd+L ou Ctrl+L) e digite:

"Analise os arquivos CSV na pasta /data e me dê um resumo estatístico das colunas, verificando valores nulos e outliers."

O Agente lerá os arquivos e gerará a análise diretamente no editor!

Discovery em Banco de Dados
Setup com Docker Compose

Servidor do Inteli

O PostgreSQL já está disponível no servidor geral do Inteli.

Esse servidor só pode ser utilizado dentro da rede do Inteli.

Se você precisar trabalhar fora, faça um dump dos dados e crie um servidor PostgreSQL local para desenvolvimento.

Conexão no DBeaver

  • Tipo de banco: PostgreSQL
  • Host: 10.8.8.10
  • Porta: 9999
  • Database: app_db
  • Usuário: inteli
  • Senha: inteli123

String JDBC:

jdbc:postgresql://10.8.8.10:9999/app_db

Vamos utilizar o Dapper para conexão e criação de queries no banco de dados.

Repositório para estudo antecipado (estrutura completa): https://github.com/afonsolelis/aula_dotnet_cars

Explorando o Schema
Discovery Manual via Terminal

Acessando o Banco

> docker compose exec db psql -U user -d mydatabase

Queries de Discovery

Liste todas as tabelas:

SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';

Descubra as colunas de uma tabela:

SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'nome_da_tabela';
Repositório de Estudo
Estrutura completa do projeto
🚀 Mão na Massa!

Agora é com vocês.

  • ✅ Setup de Máquina Completo
  • ✅ Projeto Criado
  • ✅ Exploração dos Dados