4 pessoas já começaram a estudar hoje
44pessoasjá começaram a estudar hoje
já começaram a estudar hoje

Enquanto você avalia,

44pessoas já começaram a estudar hoje

Dê o próximo passo e inicie sua carreira

Dê o próximo passo e inicie sua carreira agora mesmo

Comece agora
  • Home

    Escolha seu Plano

    • Plus 2430% OFF
    • Pro 2430% OFF
    • Ultra Lab 2430% OFF

    Carreiras Alura

    Evolua com profundidade técnica, direção clara e aplicação prática.

    Jornadas guiadas do básico ao avançado com checkpoints práticos, desenhadas para quem busca profundidade e protagonismo técnico.

    Iniciante

    Comece do zero com uma trilha clara e progressiva.

    Fundamentos práticos para dar os primeiros passos com segurança e construir uma base sólida.

    Intermediário

    Continue sua evolução com cursos que conectam fundamentos, ferramentas e prática profissional. Ganhe autonomia, e avance para projetos mais completos.

    Avançado

    Aprofunde temas técnicos e estratégicos para enfrentar desafios mais complexos. Explore boas práticas, arquitetura, performance com visão profissional.

    CURSOS

    Ver mais cursos de Back-end
    • Pensamento computacional: fundamentos da computação e lógica de programação
    • Lógica de programação: mergulhe em programação com JavaScript
    • DDD: fundamentos do design orientado a domínio
    • ASP.NET: autenticação e autorização em APIs e aplicações web
    • Microsserviços: migração de monólitos e modularização

    CURSOS

    Ver mais cursos de Dados
    • Python para Dados: primeiros passos
    • Excel: domine o editor de planilhas
    • Engenharia de Dados: Orquestração de Pipelines com Apache Airflow
    • Power BI Desktop: construindo meu primeiro dashboard
    • Governança e Arquitetura de Dados

    CURSOS

    Ver mais cursos de Inteligência Artificial
    • IA: Explorando o Potencial da Inteligência Artificial Generativa
    • Engenharia de Prompt: Criando Prompts Eficazes para IA Generativa
    • Claude para Análise de Dados: prompts, integrações e automações
    • Agno: criando agentes e sistemas multiagente
    • Engenharia de software na era da IA: segurança de aplicações com agentes, MCPs e código gerado por IA

    CURSOS

    Ver mais cursos de Front-end
    • HTML e CSS: ambiente, estrutura e estilo
    • React: realizando testes avançados com Jest e Testing Library
    • React: integrando TypeScript em projetos
    • JavaScript: aprendendo a programar
    • React: aplicando arquiteturas de Micro frontends

    CURSOS

    Ver mais cursos de DevOps
    • Sistema Operacional Linux: fundamentos e administração prática
    • Containers e Docker: empacotamento, isolamento e gestão
    • Redes: dos conceitos iniciais à criação de uma intranet
    • Linux: gerenciando diretórios, arquivos, permissões e processos
    • Cibersegurança: Fundamentos e práticas integradas

    CURSOS

    Ver mais cursos de UX & Design
    • UX Research: mapeando a experiência da pessoa usuária
    • UX/UI Design: Entregando produtos digitais com IA
    • UI Design: Prototipação e animações interativas
    • Figma: Conhecendo o programa
    • Product Design: métricas e ciclo de vida do produto

    CURSOS

    Ver mais cursos de Inovação e Gestão
    • Canva: Criação de landing pages e e-mail marketing
    • Agilidade: como ela pode ajudar a criar um time de alta performance
    • Google Analytics 4: Extrair insights e configurar eventos
    • Management 3.0: gerencie o ambiente, não as pessoas
    • Automação de processos com n8n: Inteligência de dados para Marketing

    CURSOS

    Ver mais cursos de Mobile
    • React Native: Estilização e Layouts com Flexbox e StyleSheet
    • Flutter: Graphql e suporte offline
    • Android com Gemini: Trabalhando com textos e imagens na IA
    • Dart: trabalhando com orientação a objetos
    • React Native: Dominando Listas com FlatList e ScrollView

    CARREIRAS

    Ver mais carreiras
    • Especialista em IA
    • Engenharia de IA
    • Ai native software engineering
    • Arquitetura de Soluções com IA
    • AI Product Design
    • Engenharia de Machine Learning
    • Desenvolvimento Front-End React
    • Engenharia de Dados
    • Cloud Security
    • Social Media Marketing
    • Engenharia de Agentes de IA

    CURSOS

    • Engenharia de Prompt: Prompts Eficazes para IA Generativa
    • Claude Code: Criando sua Primeira Aplicação
    • Python: Crie sua Primeira Aplicação
    • Git e GitHub: Compartilhando e Colaborando
    • N8N: Fluxos de Trabalho Avançados

    CURSOS

    • Copilot Studio: Solução Multiagentes
    • Padrões de API HTTP e Modelagem de APIs
    • Python para Análise de Dados com SQL
    • Docker: Criando e Gerenciando Containers
    • Design com IA: Otimizando o Processo Criativo

    CURSOS

    • Model Context Protocol (MCP)
    • Spec-Driven Development: Dev Assistido por Agentes
    • Arquitetura de Sistemas Distribuídos com Java
    • Governança de Modelos e Reprodutibilidade
    • Pentest: Vulnerabilidades em Aplicações Web

    Escolha seu Plano

    • Plus 2430% OFF
    • Pro 2430% OFF
    • Ultra Lab 2430% OFF

    Skills & Go

    O Skills & Go é para Tech Leads, Product Managers, estrategistas e early adopters que transformam ideias em soluções de alto impacto. Em cursos ao vivo e 100% online, você domina a nova era da IA em tempo real.

    Aulas ao vivo

    Saiba mais
    • Agentic Engineering: orquestre multiplos agentes com confiabilidade
    • Building AI Products: transforme ideias em produtos reais com IA
    • AI Data Strategy: transforme dados em decisões estratégicas com IA

    Escolha seu Plano

    • Plus 2430% OFF
    • Pro 2430% OFF
    • Ultra Lab 2430% OFF

    Eventos Alura

    Nossos eventos são pensados para quem quer estar à frente das mudanças em tecnologia, IA e inovação. Em experiências presenciais, você acompanha tendências e se conecta com especialistas que estão moldando o futuro.

    Próximos eventos

    • IA Conference
    • Alura Signals
  • Talent Lab
  • IA
  • Artigos
  • Para Empresas
Ver planos
Links principais
  • Planos e Promoções
  • Carreiras

    Ver todas
    • Especialista em IA
    • Engenharia de IA
    • Ai native software engineering
    • Arquitetura de Soluções com IA
    • AI Product Design
    • Engenharia de Machine Learning
    • Desenvolvimento Front-End React
    • Engenharia de Dados
    • Cloud Security
    • Social Media Marketing
    • Engenharia de Agentes de IA
    Entrar Ver Planos
  • Área de Interesse

    Entrar Ver Planos
  • Aulas ao Vivo - Skills & Go

    • Agentic Engineering: orquestre multiplos agentes com confiabilidade
    • Building AI Products: transforme ideias em produtos reais com IA
    • AI Data Strategy: transforme dados em decisões estratégicas com IA
    Entrar Ver Planos
  • Senioridade

    Entrar Ver Planos
  • Eventos Alura

    • IA Conference
    • Alura Signals
    Entrar Ver Planos
  • Links complementares do menu mobile
  • Talent lab
  • Inteligência Artificial
  • Pós Graduações
  • Artigos
  • Para Empresas
  • Sobre a Alura
  • Grupo Alun
  • Entrar
    • Home
    • Carreiras
    • Skills & Go
    • Talent Lab
    • Inteligência Artificial
    • Pós Graduações
    • Artigos
    • Sobre a Alura
    • Grupo Alun
    LoginContato
    • Plano Pro 24
    • Plano Plus 24
    • Plano Ultra Lab 24
    • LinkedIn
    • Instagram
    • YouTube

    Institucional

    • Sobre nós
    • Trabalhe Conosco
    • Para Empresas
    • Para Escolas
    • Política de Privacidade
    • Compromisso de Integridade
    • Termos de Uso
    • Canal de Ética
    • Código de Ética
    • Fale Conosco
    • Documentos Institucionais
    • Status
    Institucional
    • Sobre nós
    • Trabalhe Conosco
    • Para Empresas
    • Para Escolas
    • Política de Privacidade
    • Compromisso de Integridade
    • Termos de Uso
    • Canal de Ética
    • Código de Ética
    • Fale Conosco
    • Documentos Institucionais
    • Status

    A Alura

    • Como Funciona
    • Inteligência Artificial
    • Plataforma
    • Depoimentos
    • Instrutores(as)
    • Dev em <T>
    • Luri, a Inteligência Artificial da Alura
    • IA Conference
    • Cursos Imersivos
    • Perguntas Frequentes
    A Alura
    • Como Funciona
    • Inteligência Artificial
    • Plataforma
    • Depoimentos
    • Instrutores(as)
    • Dev em <T>
    • Luri, a Inteligência Artificial da Alura
    • IA Conference
    • Cursos Imersivos
    • Perguntas Frequentes

    Conteúdos

    • Alura Cases
    • Imersões
    • Artigos
    • Podcasts
    • Artigos de educação corporativa
    Conteúdos
    • Alura Cases
    • Imersões
    • Artigos
    • Podcasts
    • Artigos de educação corporativa
    Uma Empresa do GrupoLogo Grupo Alun

    Outras empresas do Grupo Alun

    • FIAP
    • STARTSE
    • PM3
    • LUMINA

    Ao submeter seu e-mail, você concorda com a política de privacidade da Alura.

    Redes Sociais & Apps

    instagram
    youtube
    tiktok
    x
    appStore
    googlePlay
    Uma Empresa do GrupoLogo Grupo Alun

    Outras empresas do Grupo Alun

    • FIAP
    • STARTSE
    • PM3
    • LUMINA

    Ao submeter seu e-mail, você concorda com a política de privacidade da Alura.

    Redes Sociais & Apps

    instagram
    youtube
    tiktok
    x
    appStore
    googlePlay
    Alura

    O que você quer aprender?

    FiltrosFiltrar por:

    Tipos de conteúdo
    Categorias
    • ArtigosBack-end

      Artigo Python para análise de dados: um guia para a habilidade mais valorizada do mercado

      Aprenda a usar Python, Pandas e NumPy para transformar dados brutos em insights estratégicos. Guia completo sobre tipos de análise e a carreira.

    • DevOps

      Terraform no Google Cloud

      Neste Alura+ vamos aprender como podemos criar uma máquina virtual no Google Cloud Platform usando o Terraform e ver as diferenças entre o Google Cloud Platform e a AWS. * [Site do Terraform]( * [Download do Terraform]( * [Console do Google Cloud]( * [Documentação do Google Cloud no Terraform]( # Transcrição Na formação de Infraestrutura como Código, utilizamos sempre a AWS como provedora. Mas como fazemos para usar o Terraform com outros provedores, como o Google Cloud, por exemplo? Para tirar essa dúvida, vamos subir uma máquina no Google Cloud e verificar o quanto esse processo difere de uma máquina na AWS. Vamos lá? De início, vamos entrar no site do Terraform e clicar em "Tutoriais", no painel superior, para carregar os tutoriais iniciais e podermos mexer com cada plataforma. No caso, sempre usamos AWS; desta vez, acessaremos os **tutoriais do Google Cloud**. Nessa nova página, veremos todos os tutoriais disponíveis, como "O que é Infraestrutura como Código com o Terraform?" e "Instalando Terrafom". Caso você ainda não conheça o conceito de infraestrutura como código ou ainda não tenha o Terraform instalado, recomendamos dar uma olhada nesses dois primeiros tutoriais e fazer a nossa formação de Infraestrutura com Código também. Nesse vídeo, vamos direto para o tutorial "*Build Infrastructure*" (em português, "**Montando a Infraestrutura**") para começarmos a construir nossa infraestrutura com o Google Cloud. Primeiramente, há uma breve explicação sobre o que é o Google Cloud e temos um aviso inicial de que usaremos o nível gratuito (*free tier*) do Google Cloud Platform (GCP) para o provisionamento dos componentes desse tutorial. Caso comecemos a provisionar outros recursos, podemos mudar para a versão paga. No nosso caso, a máquina virtual que pretendemos provisionar faz parte do *free tier*. A seguir, temos a seção de pré-requisitos. É preciso ter uma **conta no Google Cloud Platform**. Caso você ainda não tenha, é possível criá-la no site do GCP — é de graça. Para conhecer mais sobre os serviços inclusos no *free tier*, podemos acessar a página de informações do Programa Gratuito do Google Cloud. Outro pré-requisito é ter, **no mínimo, a versão 0.15.3 do Terraform** instalada no seu computador. Se você estiver com o Terraform atualizado, já tem uma versão compatível, provavelmente 1.0 ou posterior. Atendidos os pré-requisitos, vamos checar o que precisamos para realmente começar a criar, na seção "*Set up GCP*". O primeiro item é **criar um projeto no GCP**. Vamos clicar no link disponibilizado no tutorial, que nos direcionará ao console do GCP para criar um projeto. Daremos o nome "Alura" para nosso projeto. Logo abaixo do campo de nome, será gerado um ID. No meu caso, é "alura-348223". O seu será diferente, pois os identificadores são únicos, nunca se repetem. À direita desse ID, temos a opção de editá-lo, se for de nosso interesse. Eu vou manter "alura-348223". Não vamos modificar os campos "Billing account" nem "Location", relativos respectivamente à cobrança (caso sejam criados recursos fora do *free tier*) e à organização. Podemos clicar no botão "Create" e, após alguns segundos, veremos nosso projeto criado, com todas as partes prontas. Voltando ao tutorial do site do Terraform, o segundo item é **ligar o *compute engine* do nosso projeto**. Novamente, vamos clicar no link disponibilizado no tutorial, que nos direcionará para a tela do *Compute Engine API* no console do GCP. Outra forma de chegar nessa página é acessando o menu do GCP, no canto esquerdo superior, selecionando a opção "Compute Engine". Nessa tela, clicaremos no botão "Enable" para habilitar e conseguirmos criar elementos relacionados às máquinas virtuais. Esse processo pode demorar alguns minutos, dependerá da carga sobre o Google no momento. De volta ao tutorial, o terceiro item em "Set up GCP" é **criar uma chave de serviço para nossa conta**. Clicaremos no link disponibilizado no tutorial, que nos direcionará para a página *Service Accounts*, dentro da área "IAM & Admin" do console do GCP. Outra maneira de chegar a esta tela é pelo menu do GCP, acessando "IAM & Admin > Service Accounts". Em seguida, vamos selecionar o projeto "Alura". Nessa nova página, constataremos que já temos uma conta de serviços. Para manter a organização e não nos confundirmos com as chaves e credenciais (partes de segurança muito importantes), vamos **criar outra conta de serviços**. No painel superior da tela, pressionaremos "Create Service Account". O campo relativo ao nome é opcional. Já o ID é obrigatório, como indicado pela presença do asterisco. Nosso ID será "terraform". Logo abaixo desse campo, será automaticamente criado um e-mail para essa conta de serviços. No momento, não precisamos nos preocupar com ele. A seguir, clicaremos no botão "Create and Continue". Agora, precisamos **selecionar um cargo (*role*)**. No tutorial do Terraform, no item 4 referente à criação da chave de serviço, é especificado que nesse campo devemos escolher "Project > Editor" e clicar em "Continue". Dessa forma, essa conta terá permissão para editar qualquer parte do projeto. Pressionaremos o botão "Done" para concluir a criação da conta do Terraform. Na sequência, vamos **criar uma chave para essa conta**. Seguindo o tutorial, vamos selecionar a conta de serviços e acessar a aba "Keys" (chaves) no painel superior. Em seguida, clicando em "Add Key", vamos escolher a opção "Create new key", definir o "Key Type" como JSON e clicar em "Create". O *download* da chave será feito automaticamente em nosso computador e veremos uma mensagem contendo o nome dela. Voltando ao tutorial, antes da seção "Write configuration", temos outro aviso (*warning*). Ele nos informa que ***esse arquivo da chave dá acesso total ao nosso projeto no Google Cloud Platform, então é importante o tratarmos como qualquer outra credencial secreta***, como a senha que usamos para entrar no console do GCP. Ou seja, não é uma boa prática salvar essa chave de acesso em um repositório, por exemplo, pois qualquer pessoa terá acesso ao projeto, se essa chave "vazar". Porém, caso isso aconteça, podemos acessar o menu "IAM & Admin > Service Accounts", entrar na nossa conta e apagar a chave. Depois, criamos outra. Temos a opção de criar várias chaves, só é importante mantermos o controle e a organização delas. Podemos, então, **começar a escrever as configurações do nosso projeto**. Em nosso computador, vamos criar uma pasta chamada "GCP" (abreviação de Google Cloud Platform) e abri-la no Visual Studio Code. Dentro dela, criaremos um arquivo chamado main.tf — um arquivo Terraform. Tudo que formos escrever ficará dentro dele. No tutorial, o início da seção "Write Configuration" explica como criar essa pasta e o arquivo main.tf por comandos no terminal. No caso, optamos pela criação manual. Em seguida, temos um bloco de código de exemplo: terraform { required_providers { google = { source = "hashicorp/google" version = "3.5.0" } } } provider "google" { credentials = file(".json") project = "" region = "us-central1" zone = "us-central1-c" } resource "google_compute_network" "vpc_network" { name = "terraform-network" } Vamos analisar esse trecho, composto por três blocos. De início, temos um bloco terraform referente às configurações que usaremos no projeto do Terraform. Da linha 2 a 6, constam dados do provedor: trata-se do provedor do Google, já com informações da fonte (source) e da versão (version). Da linha 10 a 16, temos o segundo bloco, com configurações desse provedor. A linha 11 contém as credenciais que serão carregadas de um arquivo .json. Na linha 13, precisamos informar o ID do projeto. Nas linhas seguintes, teremos dados relativos à região e à zona — assim como a AWS, o Google trabalha com regiões. Nesse exemplo, temos region = "us-central1" e zone = "us-central1-c", ou seja, estaremos usando o provedor do Google na região central dos Estados Unidos, na zona de disponibilidade C. Das linhas 18 a 20, temos o último bloco, com a opção de criação de um recurso, uma VPC. No momento, não queremos uma VPC, apenas uma máquina virtual. Mais adiante, consultaremos a documentação com esse objetivo. Portanto, vamos copiar apenas os dois primeiros blocos (da linha 1 até a 16) e colá-lo no arquivo main.tf. Feito isso, ainda precisamos configurar dois itens nesse arquivo: **indicar a chave de acesso na linha 11 e definir o ID do projeto na linha 13**. Vamos incluir a chave de acesso no projeto, movendo o arquivo .json para a pasta GCP. Em seguida, daremos uma olhada na estrutura e no conteúdo dessa chave. Primeiramente, ela contém um tipo, que é uma conta de serviço. Depois, temos o ID do projeto e o ID de uma chave privada. Em seguida, consta a chave privada em si, que é bastante longa. Vemos, então, o e-mail do cliente (no caso, da conta de serviço), o ID desse cliente e um link de autorização seguido de um link do *token* para poder acessar as informações. Por fim, há dois certificados, um do provedor e outro do cliente. Voltando ao arquivo main.tf, é necessário alterar a origem das credenciais, na linha 11. Como o nome do arquivo .json é muito extenso, no painel à esquerda vamos clicar com o botão direito do *mouse* sobre ele e renoméa-lo para chave.json. Desse modo, podemos modificar a linha 11 para credentials = file("chave.json"), indicando que as credenciais vêm desse arquivo. Quanto ao ID do projeto (na linha 13), podemos obter essa informação no console do Google Cloud Platform ou no arquivo chave.json, em project_id. No meu caso, a linha 13 ficará project = "alura-348223", lembrando que cada usuário terá um ID diferente. Assim, temos nosso Google Cloud configurado para uso. O próximo passo será **criar a máquina virtual**. No navegador, vamos voltar à página inicial do site do Terraform. Desta vez, no painel superior, acessaremos "Registry" — o registro Terraform. Descendo um pouco a página, temos as opções de *providers*. Vamos clicar em Google Cloud Platform. A princípio, veremos o *overview* do que é o Google Cloud. No topo da página, à direita, acessaremos a **documentação**. Na lateral esquerda, há uma lista extensa de recursos à nossa disposição. Anteriormente no Google Cloud, acionamos o *Compute Engine API*, portanto vamos expandir o tópico "*Compute Engine*" dessa lista. Dentro dele, temos uma série de recursos — estamos buscando por máquinas virtuais, que geralmente têm o nome VM (*virtual machine*) ou *Instance* (instância). No caso, encontraremos o subtópico "google_compute_instance". Clicando em "**google_compute_instance**", descobriremos que se trata de um recurso que gerencia uma instância de uma máquina virtual utilizando o Google Cloud Engine (GCE). Para mais informações, podemos acessar a documentação oficial da API. Aparentemente, este recurso faz exatamente o que precisamos. Mais abaixo nessa página, temos um exemplo de uso. Vamos deixar de lado as primeiras cinco linhas referentes à *service account* e copiar o resto. Colaremos esse trecho ao final do nosso arquivo main.tf: # código anterior omitido resource "google_compute_instance" "default" { name = "test" machine_type = "e2-medium" zone = "us-central1-a" tags = ["foo", "bar"] boot_disk { initialize_params { image = "debian-cloud/debian-9" } } // Local SSD disk scratch_disk { interface = "SCSI" } network_interface { network = "default" access_config { // Ephemeral public IP } } metadata = { foo = "bar" } metadata_startup_script = "echo hi > /test.txt" service_account { # Google recommends custom service accounts that have cloud-platform scope and permissions granted via IAM Roles. email = google_service_account.default.email scopes = ["cloud-platform"] } } Em seguida, vamos remover as partes que não são necessárias para nós. Na linha 18, temos o recurso "google_compute_instance". Vamos substituir o nome lógico "default" por "PrimeiraVM". Na linha seguinte, podemos alterar o nome que aparecerá no console do Google: em vez de "test", usaremos "PrimeiraVM" também. Em machine_type (tipo de máquina), precisamos tomar um pouco de cuidado. A máquina atual, "e2-medium", não é suportada pelo *free tier*! Então, vamos mudar para "e2-micro", que se enquadra no nível gratuito. Quanto à zona, vamos usar a mesma que especificamos anteriormente: "us-central1-c": # código anterior omitido resource "google_compute_instance" "PrimeiraVM" { name = "PrimeiraVM" machine_type = "e2-micro" zone = "us-central1-c" # código posterior omitido As tags não são necessárias, podemos removê-las (linha 23). Por outro lado, precisaremos do disco de *boot* (boot_disk), porque é o disco principal do nosso sistema. Na linha 24, temos os parâmetros iniciais: segundo o exemplo, usaremos uma imagem do Debian, na versão 9. Vamos manter desta forma. Em seguida, é oferecido um SSD local: o scratch_disk, um disco para escrever e ler itens temporários. Não precisamos disso e ele não é suportado no *free tier*, então vamos removê-lo (linhas 29 a 32). Agora, na linha 29, temos a interface de rede, necessária para a comunicação. Vamos manter network = "default" e não modificaremos o access_config, para que ele gere um IP público para nossa máquina. Os metadados (linhas 36 a 38) são desnecessários, vamos removê-los. Em seguida, temos o metadata_startup_script. Se quisermos rodar algum comando no momento de criação da nossa máquina, podemos utilizar essa *tag*. Vamos mantê-la e mudar seu valor para "echo oi > /teste.txt". Dessa forma, será escrito "oi" no arquivo teste.txt, no *root*. Por fim, a partir da linha 38, temos um *service account*. Como já configuramos anteriormente o *provider*, essa parte também não é necessária, vamos apagar da linha 38 até a 42. Então, **a segunda parte do arquivo ficará assim**: # código anterior omitido resource "google_compute_instance" "PrimeiraVM" { name = "PrimeiraVM" machine_type = "e2-micro" zone = "us-central1-c" boot_disk { initialize_params { image = "debian-cloud/debian-9" } } network_interface { network = "default" access_config { // Ephemeral public IP } } metadata_startup_script = "echo oi > /teste.txt" } Pressionando "Ctrl + S", salvaremos o arquivo. Já podemos **executar essas configurações para verificar se funcionam**. Na barra superior do VS Code, vamos em "Terminal > Novo Terminal". No terminal, vamos checar se estamos na pasta GCP. Uma vez dentro da pasta, executaremos o comando ls para verificar se os arquivos estão conforme o esperado: temos chave.json e main.tf. Tudo em ordem, vamos rodar um clear para limpar o terminal. Então, vamos **executar o comando terraform init** para iniciar todas as configurações do Terrafom, fazer o *download* da infraestrutura do provedor e deixar tudo pronto para a execução. Terminado esse processo, vamos **rodar o terraform apply**. Assim, a ideia é pegar o nosso plano e criar uma *compute instance* chamada PrimeiraVM. No console, podemos verificar todas as configurações dessa instância e, ao final, temos o plano total "Plan: 1 to add, 0 to change, 0 to destroy" (1 para criar, 0 para mudar e 0 para destruir). Para confirmar, digitaremos "yes". Durante essa operação, teremos um erro alegando que o nome "PrimeiraVM" é inválido, pois não podemos usar letras maiúsculas, apenas caracteres no padrão [a-z0-9]. Logo, na linha 19 do arquivo main.tf, vamos alterar para name = "primeiravm" e salvar. Em seguida, executaremos o terraform apply novamente, digitaremos "yes" para confirmar e esperaremos enquanto esse processo é executado. No meu caso, a operação foi rápida, apenas 11 segundos. Mas esse tempo pode variar de acordo com a conexão da internet ou da carga sobre os servidores do Google e assim por diante. Para verificar se a máquina foi devidamente criada, vamos voltar ao console do Google Cloud Platform, no navegador. No menu, vamos em "Compute Engine". Nesta página, há uma tabela com as instâncias de máquina virtual e veremos a "primeiravm". O IP dela está na coluna "External IP". Para acessá-la via SSH, selecionaremos o *checkbox* à esquerda e clicaremos no botão "SSH". Dessa forma, a chave SSH será colocada dentro da nossa máquina virtual, pois não fizemos isso antes. Essa é uma das vantagem do Google sobre a AWS: não precisamos colocar as chaves logo que criamos a máquina, ele faz esse procedimento para nós depois. Após alguns segundos, estaremos na nossa máquina. Vamos executar o comando ls / para ver os arquivos que temos dentro da máquina virtual. Um deles é o teste.txt, vamos abri-lo com cat /teste.text. Veremos o texto "oi" que configuramos anteriormente, ou seja, a instância foi criada e o arquivo .txt foi inserido no *root* da máquina virtual. Pronto, criamos a configuramos uma máquina virtual com o Google Cloud! **E se não quisermos mais essa infraestrutura?** Podemos encerrá-la por meio do comando terraform destroy, que vai **destruir a infraestrutura**. Assim, o plano não terá nada para criar ou modificar e um recurso para destruir. Vamos digitar "yes" para confirmar a ação e a máquina será apagada. No meu caso, esse processo demorou 37 segundos, mas esse tempo pode variar. Dessa forma, a infraestrutura foi destruída. O projeto não foi apagado, apenas removemos a infraestrutura, que podia gerar custos. Agora que vimos tudo isso, vamos elencar as **diferenças entre a máquina virtual que criamos no Google Cloud e uma máquina virtual que geralmente criamos na AWS**. Primeiro, no arquivo main.tf, no bloco terrafom que vai da linha 1 a 8, temos que trocar o nome do provedor, bem como o source. Além disso, o método de utilizar credenciais e fazer *login* no Google e na AWS são diferentes. Na AWS, fazemos o *login* pela linha de comando com aws configure. No Google, usamos credenciais via arquivo. O recurso criado também muda de nome entre esses dois provedores. **Na AWS, temos o EC2 Instance e, no Google, o Google Compute Instance**. São nomes e recursos diferentes e também têm configurações distintas. Por exemplo, na AWS especificamos zonas por VPC, não por máquinas. Ambos, porém, precisam de um nome e de um tipo de maáquina (machine_type). Quanto ao boot_disk, no Google definimos pela imagem. No caso, escolhemos o Debian, versão 9. Na AWS, usamos as AMIs, que são parecidas, porém têm nome diferente. Precisamos saber a AMI correta para cada região. Em questão de rede, na AWS não precisamos configurar uma interface de rede. Ele já vem com uma interface e um IP público por padrão. No Google Cloud, temos que especificar esses elementos. Ademais, temos o metadata_startup_script que determina o que será feito inicialmente, em que inserimos o código entre aspas. Na AWS, esse processo é mais complicado, temos que colocar o end_of_file ou end_of_tape, algo nesse sentido para identificar onde começa e onde termina. De forma geral, **esses provedores são bem próximos em termos de criação**. O Google também fornece uma VPC padrão, que é um jeito que de acessarmos essas máquinas. Por fim, vamos revisar tudo que fizemos nesse vídeo. Criamos um projeto e uma chave de acesso para acessá-lo. Depois, configuramos uma máquina virtual do tipo e2-micro (suportada no *free tier*) e especificamos a zona onde ela ficaria — no *datacenter* central dos Estados Unidos, na zona de disponibilidade C. Determinamos o sistema utilizado na máquina, uma interface de rede e um *script* para rodar na criação da instância. Espero que você tenham gostado. Até o próximo Alura+!

    Ainda não estuda com a gente?

    Invista na transformação da sua carreira!

    Comece agora
  • Back-end

    Classe Object C#

    # Transcrição Olá, tudo bom? Meu nome é **André Bessa**, faço parte do time de instrutores da Alura. Neste vídeo, vamos tratar da **classe Object**, muito importante na plataforma .NET. Para tratar desse assunto, vamos usar o projeto de um módulo de cliente do banco ByteBank, em que definiremos novos comportamentos para a classe Cliente. Por exemplo, podemos exibir todas as informações de um cliente de uma vez só, em vez de chamar vários métodos de ConsoleWriteLine(). Essa implementação é interessante, pois outros desenvolvedores do projeto também poderão utilizar essa classe de maneira mais fácil. Com o projeto aberto no Visual Studio Community 2022, no arquivo Program.cs, notaremos que atualmente a exibição dos dados do usuário é feita com Console.WriteLine(), um método padrão para projetos console. Já no arquivo Cliente.cs, veremos que a classe Cliente é bem simples, tem apenas suas propriedades autoimplementadas com get e set: CPF, nome, e-mail e idade. Voltando ao Program.cs, a partir da linha 3, definimos um novo objeto do tipo Cliente e passamos informações para suas quatro propriedades: Cliente cliente = new Cliente(); cliente.Nome = "André"; cliente.Cpf = "111.444.666-88"; cliente.Email = "[email protected]"; cliente.Idade 23; Na sequência, para exibir esses dados, usamos Console.WriteLine() chamando cliente.Nome, cliente.Cpf e cliente.Idade: Console.WriteLine(cliente.Nome); Console.WriteLine(cliente.Cpf); Console.WriteLine(cliente.Idade); Essa construção não está muito boa, pois estamos escrevendo três linhas de código para exibir informações do nosso objeto. Nossa meta é que o desenvolvedor consiga obter esse resultado simplesmente passando o objeto cliente como parâmetro ao Console.WriteLine(). Vamos adicionar essa opção na linha 13: using ModuloCliente; Cliente cliente = new Cliente(); cliente.Nome = "André"; cliente.Cpf = "111.444.666-88"; cliente.Email = "[email protected]"; cliente.Idade 23; Console.WriteLine(cliente.Nome); Console.WriteLine(cliente.Cpf); Console.WriteLine(cliente.Idade); Console.WriteLine(cliente); Ao posicionar o *mouse* sobre um parâmetro, é possível verificar mais informações sobre ele, como seu tipo. Nos três primeiros casos, o método Console.WriteLine() está recebendo Nome (*string*), Cpf (*string*) e Idade (inteiro). Já quando passamos cliente como parâmetro, trata-se de um **objeto** — é mais complexo, porém o código não alega nenhum erro. A classe Console tem algumas sobrecargas do método WriteLine() que recebem tipos diferentes, mas será que uma delas recebe o tipo Cliente? Para investigar esse tópico, vamos acessar os **metadados** da classe Console. Basta pressionar e segurar a tecla "Ctrl" e clicar sobre a palavra Console (por exemplo, no início da linha 13). Desse modo, abrimos os metadados da classe, onde conseguimos visualizar as propriedades e os métodos disponíveis nela. A partir da linha 1667, podemos verificar as sobrecargas do método WriteLine(): há uma que recebe bool, uma que recebe decimal, outra que recebe long e, na linha 1821, encontraremos uma sobrecarga que recebe um object. A seguir, vamos entender melhor o que é o tipo object. Voltando ao Program.cs, o Console.WriteLine() não resulta em erro quando passamos como parâmetro um objeto completo (como cliente), porque Cliente é um Object. Vamos dar uma olhada nos metadados de Object também. Na linha 15, escreveremos "Object" e clicaremos nele, segurando a tecla "Ctrl". Observando os metadados, notamos que a classe Object também tem alguns métodos disponíveis. Por exemplo, na linha 22, temos public virtual bool Equals(object? obj) — considerando nossos conhecimentos das regras de sobrecarga e sobrescrita, sabemos que esse método deve ser sobrescrito. Temos também GetHashCode(), GetType(), MemberwiseClone(), ReferenceEquals() e ToString(). Se nossa classe é um object, quer dizer que temos todos esses métodos disponíveis nela! Voltando ao Program.cs, na linha 13, vamos acrescentar um **ponto** após cliente para acessar suas propriedades e métodos. Veremos Nome, Cpf, Email e também ToString, GetType, GetHashCode, entre outros. Ou seja, a classe Cliente herda de Object! **Todas as classes do . NET herdam explícita ou implicitamente da classe Object.** Vamos remover a palavra Object da linha 13, pois não vamos usá-la mais. Em seguida, vamos ao arquivo Cliente.cs para fazer um teste. Na linha 9, para indicar que a classe Cliente herda de Object, utilizaremos o operador dois pontos (**:**) seguido da classe da qual estamos herdando: public class Cliente:Object Note que não ocorre nenhum erro, porém essa construção é redundante, pois o compilador do C# já entende que essa classe herda de Object. Tanto que já tínhamos aqueles métodos disponíveis (ToString e Equals, por exemplo). Portanto, vamos apagar :Object. Vamos relembrar qual era nosso objetivo inicial: usar um método para exibir todas as informações do objeto cliente. Para tanto, após as propriedades da classe Cliente, vamos sobrescrever o método ToString() que é virtualna classe Object. Na linha 16, basta digitarmos override e pressionar a barra de espaço para o Visual Studio mostrar algumas sugestões de métodos para sobrescrever. Ao selecionar ToString(), a IDE gerará automaticamente uma estrutura que chama ToString() da classe base, isto é, de Object: public override string ToString() { return base.ToString(); } Para testar, vamos ao Program.cs e passaremos cliente.ToString() como parâmetro do Console.WriteLine(), na linha 13: Console.WriteLine(cliente.ToString()); Em seguida, vamos rodar a aplicação, clicando no *play* no menu superior do Visual Studio. O projeto será compilado e renderizado. Como resultado, serão exibidas as propriedades que passamos aos três primeiros Console.WriteLine() seguido de "ModuloCliente.Cliente", como era mostrado anteriormente. Quando passamos um objeto para o WriteLine(), ele invoca o método ToString() do objeto. Como não há implementação, ele invoca da classe base (Object), que retorna o nome da classe. Então, na classe Cliente, em vez de retornar da classe base, vamos **redefinir o método ToString()**: public override string ToString() { return $"Nome: {this.Nome}, \n" + $"Email: {this.Email}, \n" + $"Idade: {this. Idade}, \n" + $"Cpf: {this.Cpf}"; } > A expressão \n serve para criar uma quebra de linha. Assim, definimos como as informações serão exibidas, quando invocarmos o método ToString() de Cliente. Vamos salvar e testar, pressionando o *play* na parte superior do Visual Studio. A partir da quarta linha, veremos o resultado do método ToString() de Cliente. Vale lembrar que, quando passamos o objeto completo para o Console.WriteLine(), ele também invoca o ToString(): Nome: André, Email: [email protected], Idade: 23, Cpf: 111.444.666-88 Então, aprendemos que existe uma superclasse do .NET chamada Object da qual todas as classes herdam. Não somente as classes, todos os tipos do .NET também herdam de Object, por meio da classe ValueType! Por exemplo, um inteiro, um float, um double. A Struct que representa os inteiros (o int), por exemplo, herda de ValueType. Dessa maneira, o inteiro também herda de Object pelo mecanismo da herança. Basicamente, no .NET, temos dois tipos de objetos: por referência (onde entram nossas classes) e os ValueType (os tipos de valor, como inteiro): ![Diagrama sobre a classe Object. Há três níveis. No nível inferior, à direita, há um quadrado representando Struct. No segundo nível, há dois quadrados: ValueType à direita e MinhaClasse à esquerda. No nível superior, há um grande quadrado representando Class Object, com três métodos de exemplo. Há uma seta que liga Struct a ValueType, uma seta que liga ValueType a Classe Object e uma seta que liga MinhaClasse a Class Object.]( Como tem sido sua experiência aprendendo C# e orientação a objetos na Alura? Tem gostado? Não deixe de praticar bastante. Nos vemos na próxima!

  • Back-end

    VSCode: Dicas e truques

    Tudo o que você precisa saber para tornar seu desenvolvimento mais prático dentro do VSCode. # Transcrição da aula Olá! Eu sou o Leonardo e nesse Alura+ vou apresentar para vocês um pouco do Visual Studio Code, também conhecido como VSCode ou VSC. O Visual Studio Code é uma IDE muito utilizada atualmente e com várias opções de atalhos e customizações. Com o VSCode aberto, começaremos a escrever código. Para isso, podemos criar um novo arquivo ou abrir uma pasta. Nesse caso, vou abrir uma pasta, o que facilita mantermos o código organizado. A pasta será criada no diretório "Documentos/Alura/Alura+ VSC". Não teremos nenhuma mudança visual grande, não abrimos nenhum editor e ainda não podemos escrever nenhum código. Isso porque ainda não temos um arquivo onde escrever esse código. Do lado esquerdo da tela, temos o "Explorer" do VSCode, que é onde ficam organizados nossos arquivos e editores. Dentro dos arquivos, temos a pasta "Alura+ VSC", onde estará o nosso código. Passando o mouse sobre esse menu, veremos algumas opções: * New File (novo arquivo) * New Folder (nova pasta) * Refresh Explorer (para atualizar o Explorer, por exemplo quando colocamos um arquivo por fora e ele não é detectado automaticamente) * Collapse Folders in Explorer (minimizar pastas no Explorer) Clicaremos em "New File" e, na caixa de texto que se abriu, digitaremos o nome do arquivo: app.js. O arquivo será criado e uma nova aba se abrirá no editor de código. Tínhamos outra aba aberta, "Getting Started", que podemos fechar. Começaremos criando uma variável. Como nosso arquivo é um .js, trabalharemos com Javascript. Ao começarmos a digitar const, uma caixa de sugestões será exibida, algo que pode nos ajudar a escrever o código. Criaremos a const nome com o valor igual a leo. const nome = "leo" Podemos mudar de ideia e, ao invés dessa const, fazer um console.log. Se apagarmos parte do nosso código, veremos que a caixa de diálogo não se abrirá novamente. Para que ela apareça, apertamos o comando "Ctrl + Espaço". Utilizando o "Enter", selecionaremos a palavra console e continuaremos o preenchimento com console.log(). Se quiséssemos o console.timeLog(), poderíamos nos dirigir a ele utilizando as setas para cima e para baixo. Mas além do Javascript, que outras linguagens de programação o VSCode suporta? No canto inferior direito da IDE, veremos a palavra "Javascript" como linguagem selecionada - isso porque estamos trabalhando com um arquivo .js e ele fez a detecção automaticamente. Se clicarmos nessa opção, abriremos um menu com todas as linguagens que podemos utilizar dentro do Visual Studio Code, dentre elas C, C++, Docker (dockerfile), Go, JSON, Lua, Markdown, dentre outras várias possibilidades. Vamos continuar trabalhando com Javascript. Se fôssemos escrever um código completo nesse Alura+, ele seria muito longo. Ao invés disso, pegaremos um código pré-preparado e o copiaremos para o arquivo app.js. Usaremos "Ctrl + A" para selecionar o conteúdo de source.js, "Ctrl + C" para copiá-lo e "Ctrl + V" para copiá-lo" no nosso arquivo. A primeira coisa que faremos é executar esse código. Porém, navegar pelas pastas dentro do console é um pouco trabalhoso. O Visual Studio Code também nos ajuda com isso, pois possui um terminal integrado. Abriremos o menu "Terminal" na parte superior da tela e clicaremos em "New Terminal", fazendo com que o console seja aberto na parte inferior da tela. Para executarmos, usaremos o comando node seguido do nome do arquivo. node app.js Ao pressionarmos "Enter", veremos que nada acontecerá. Note que a nossa tela está um pouco pequena, e podemos aumentá-la segurando a tecla "Ctrl" e usando o "+" do teclado. Da mesma forma, "Ctrl -" reduz o zoom da tela. Mas por que nosso código não retornou nada? Isso aconteceu pois esquecemos de salvar o conteúdo de app.js. O Visual Studio Code não salva os arquivos automaticamente. Isso é visível pelo aviso "1 unsaved" - ou seja, "um arquivo não salvo" - na área de editores do nosso menu. Além disso, tem uma "bolinha" ao lado do nome do arquivo app.js, tanto nos editores abertos quanto na sua aba, algo que também indica que o arquivo não foi salvo. Para salvar, usaremos o atalho "Ctrl + S" ou o menu "File > Save" (Arquivo > Salvar). Após salvarmos, voltaremos ao terminal e usaremos a tecla para cima do teclado para retornarmos ao último comando, node app.js. Ao pressionarmos "Enter", teremos duas saídas: > 8 > > [ 1 ] Vamos analisar o que nosso código faz para chegar a essas saídas. // idades = [30, 35, 28] // nomes = ["Ana", "Juliana", "Leonardo"] // faculdade = ["false, true, true"] // funcionarios = [nomes,idades,faculdade] // function eMaiorQue10(value) { // return value >= 10; // } // var filtrado = numeros.filter(eMaiorQue10); // //filtrado [é 12, 130, 44] // console.log(filtrado) const notas1 = [10, 6.5 , 8, 7.5] const notas2 = [9, 6, 6 ] const notas3 = [8.5, 9.5] const notasGerais = [notas1, notas2, notas3] let media = 0 for (let i = 0; i Word Wrap", cujo atalho é "Alt + Z". Isso fará com que parte do texto seja jogada para a próxima linha, que na verdade é uma continuação da linha 42 e não tem numeração, mantendo a 43 vazia. Salvaremos o arquivo e o executaremos novamente para verificarmos se não quebramos o código. Como temos o mesmo retorno, tudo continua correto. Outro ponto interessante: repare que na linha 39, o código console.log("retornou") parece "apagado", enquanto os demais códigos têm cores mais vivas. Ao deixarmos o ponteiro do mouse sobre ela, veremos a mensagem "Unreachable code detected", informando que o código dessa linha não é executado. Para resolvermos isso, podemos clicar sobre a linha e pressionar "Ctrl + .", abrindo o menu "Quick fix" (reparo rápido), que sugerirá remover essa linha. Como não queremos removê-la, mas sim executá-la, precisaremos encontrar outra alternativa - por exemplo, colocá-la antes do return da função teste() já que o essa instrução encerra a execução da função. Poderíamos recortar e colar o código, mas também existe outra maneira: segurar a tecla "Alt" com o cursor sobre a linha e pressionar a tecla para cima do teclado, movendo o código console.log("retornou") uma linha para cima. Após salvarmos e executarmos, continuaremos não recebendo nada, o que acontece pois a função teste() não é chamada nenhuma vez. Resolveremos isso incluindo a chamada da função. //... console.log(media) teste() function teste() { console.log("retornou") return 10 } //... Limparemos o console com clear e executaremos node app.js novamente. Podemos acessar esse código rapidamente pressionando para cima no teclado duas vezes. Como retorno, teremos: > 8 > > retornou > > [ 1 ] Agora nossa saída mudou, antes era só 8 e [ 1 ]. Vamos ver se realmente teve alteração? Usaremos "Alt + baixo" no teclado para descermos o console.log("retornou") para a linha original. Ao salvar e executar, voltaremos a ter o retorno anterior - ou seja, realmente funcionou. Quando estamos criando código, nem sempre tudo ocorre como esperado, e às vezes cometemos erros, por exemplo de sintaxe. Para testarmos isso, vamos incluir um erro bastante óbvio em nosso código: um + sozinho em uma linha. Repare que o VSCode realçará esse +, sublinhando-o. Além disso, o nome do arquivo app.js será realçado em vermelho tanto no menu "Open Editors" quanto na aba aberta, com o número "1" ao lado do nome, indicando o número de erros. No canto superior direito, temos também um pequeno resumo do nosso código, que inclui uma linha vermelha no ponto em que colocamos o +; e na barra de rolagem um tracinho será exibido na altura do erro. Nesse arquivo está fácil encontrarmos o erro, afinal nós o colocamos propositalmente. Porém, em códigos mais extensos, às vezes fica difícil encontrar os erros. Para contornar isso, podemos usar o atalho "F8" para navegar diretamente ao próximo erro, indicando também qual é o erro - nesse caso, temos a mensagem *"expression expected"*, ou seja, o Javascript espera uma expressão. Vamos simplesmente apagar o + que estava sozinho na linha e fechar a caixa de diálogo clicando no "x". Note que, após apagarmos o erro, a expressão *"expression expected"* ficara mais escura, indicando que foi resolvida. O Visual Studio Code também nos traz outras funcionalidades que podem ajudar no desenvolvimento. Vamos começar passando pelo array texto usando a expressão for. let texto = ["oi", "ok"] for A estrutura do for é bastante conhecida, e não precisamos fazê-la manualmente toda vez. Sendo assim, escreveremos for e usaremos "Ctrl + Espaço" para abrir a caixa de sugestões. Selecionaremos a opção For Loop. Ela é na verdade um *snippet*, um trecho de código já pronto para utilização. Ao clicarmos, toda a estrutura do for será montada no editor: let texto = ["oi", "ok"] for (let index = 0; index = 10; // } // var filtrado = numeros.filter(eMaiorQue10); // //filtrado [é 12, 130, 44] // console.log(filtrado) Poderíamos apagar as barras (//) linha por linha, mas existe o atalho "Ctrl + ;" (ou "Command + ;" no Mac), que permite comentar ou descomentar trechos de código. Mas e se quisermos alterar esse atalho de "Ctrl + ;" para "Ctrl + /"? Para isso, clicaremos na engrenagem no canto inferior esquerdo (*"Manage"*) e acessaremos o menu *"Keyboard Shortcuts"* (atalhos de teclado), cujo atalho é "Ctrl + K > Ctrl + S". Na nova aba, pesquisaremos por *"comment"* (comentário em inglês) e clicaremos duas vezes em *"Toggle line comment"*, opção que permite "trocar" o comentário da linha - ou seja, se ela está comentada, deixará de estar; se não estiver comentada, será comentada. Será aberta uma caixa de texto pedindo para digitarmos a nova combinação, em nosso caso "Ctrl + /". A caixa será preenchida com "ctrl+abnt_c1" e logo abaixo teremos o significado desse código, que é o atalho que digitamos. Após pressionarmos "Enter", o conteúdo será salvo. O interessante desse menu *"keyboard shortcuts"* é a possibilidade de encontrar todos os atalhos do VSCode, como *"cut"*, o clássico "Ctrl + X", e o *"copy"*, "Ctrl + C". No último caso, o VSCode também aceita "Ctrl + Insert". No arquivo app.js, selecionaremos o trecho comentado e pressionaremos "Ctrl + /" para descomentarmos. idades = [30, 35, 28] nomes = ["Ana", "Juliana", "Leonardo"] faculdade = ["false, true, true"] funcionarios = [nomes,idades,faculdade] function eMaiorQue10(value) { return value >= 10; } var filtrado = numeros.filter(eMaiorQue10); //filtrado [é 12, 130, 44] console.log(filtrado) Assim conseguiremos descomentar o bloco inteiro de código. Mais abaixo, vemos que a linha filtrado [é 12, 130, 44] continua comentada. Isso acontece pois ela já era um comentário - inclusive, se selecionarmos o bloco inteiro e o comentarmos novamente, a linha será comentada duas vezes (// //). Isso é útil pois conseguimos guardar o que já era comentário anteriormente em nosso código, evitando problemas. Já vimos os principais atalhos do VSCode, e agora conheceremos outras funções que ele nos oferece. Uma delas é o "Source Control", também conhecido como "Git" para quem já tem costume. Acessado a partir do menu à esquerda da tela (e pelo atalho "Ctrl + Shift + G"), ele nos permite inicializar um repositório Git ou publicar nosso código no Github - ou seja, o VSCode tem integração com o Github. Se escolhermos "Publish to Github", a IDE nos perguntará se a extensão pode utilizar nosso login, abrindo uma janela do navegador pedindo autorização para acessar nosso Github. Caso você não esteja logado, será necessário usar seu usuário e senha. Na janela seguinte, basta autorizar o acesso, clicar em "Abrir Visual Studio Code" e, de volta no programa, em "Open". Na parte superior da rela, teremos uma caixa de diálogo onde é possível criar um repositório, sugerindo o nome da nossa pasta ("Alura+ VSC"). Podemos publicá-lo como um repositório privado ou público. Não criaremos o repositório nesse vídeo, mas, caso você queira, basta fazer todo o percurso normal do Git, incluindo commit, push e assim por diante. Vamos falar um pouco sobre as extensões do VSCode, que também são bem úteis. Acessadas pelo menu à esquerda (e também pelo atalho "Ctrl + Shift + X"), elas permitem incluir mais funcionalidades ao VSCode. Como estamos trabalhando com Javascript, o ESLint é uma extensão bastante utilizada. É um formatador de código que inclui algumas boas práticas em Javascript. Pesquisando por ESLint e clicando em "install", ele será instalado. O ESLint é um caso especial dentre as extensões, pois precisa ter a biblioteca instalada na máquina - algo que pode ser feito usando o comando npm install eslint, para usá-lo somente no projeto atual, ou npm install -g eslint para instalá-lo globalmente. Outra extensão interessante é a Live Share. Desenvolvida pela Microsoft, essa ferramenta permite compartilhar código com outra pessoa em tempo real, como um arquivo do Google Docs ou do Office 365. Isso é legal quando você está trabalhando em grupo e é necessário editar o mesmo arquivo sem que seja necessário ficar "disputando o teclado" ou narrando o código para alguém digitar. Basta todas as pessoas baixarem o Live Share para que possam editar o mesmo código. O Live Server também é bem interessante. É um jeito rápido de desenvolver sites, muito útil para quem desenvolve em HTML, CSS e Javascript para Web. Ele abre um servidor em uma porta, que podemos acessar pelo navegador para explorar os efeitos do código no site que estamos desenvolvendo. Para quem trabalha com banco de dados SQL, temos a SQLTools, que ajuda a formatar o seu banco de dados, gerar queries, explorar os conteúdos salvos, dentre outras funcionalidades. Se você desenvolve em Java, temos a extensão da Language Support (suporte de linguagem) da Redhat, uma grande empresa bastante conhecida por quem trabalha com Linux. Existem algumas linguagens ou plataformas que não são suportadas pelo Visual Studio Code, por exemplo os microcontroladores. Nesse caso, podemos usar o PlataformIO, uma IDE que trabalha "em cima" do VSCode, oferecendo algumas plataformas como Atmel AVR (para Arduino), Expressif 32 e assim por diante. Também é uma plataforma boa para desenvolver com IOT, com frameworks para Arduino, por exemplo, substitindo a IDE própria do Arduino, que não é muito amigável em termos de possibilidades (como atalhos e sugestões). Já passamos por vários atalhos de teclado e funções do Visual Studio Code, nos familiarizamos com sua interface e aprendemos a começar projetos do zero ou abrir projetos já existentes. Também aprendemos a usar o terminal integrado e a integração com o Github, além de conhecermos algumas extensões. Devemos nos lembrar que as extensões do VSCode existem para expandir as possibilidades e tornar nosso trabalho mais ágil. Uma opção que acabei não comentando é a troca de tema do VSCode, acessada pelo menu à esquerda da tela o pelo atalho "Ctrl + K > Ctrl + T". Existem vários temas disponíveis, alguns claros (*light)* e outros escuros (*dark*), e outros como o *Tomorrow Night Blue*, que deixa a interface mais azul. Espero vocês na próxima!

  • Artigos

    Artigo Moonshot AI lança Kimi K3, o maior modelo aberto de IA do mundo

    Moonshot AI lança Kimi K3, modelo aberto de IA com 2,8 trilhões de parâmetros, visão nativa e contexto de 1 milhão de tokens.

  • Artigos

    Artigo LinkedIn cria botão para denunciar posts feitos por IA

    LinkedIn permite denunciar posts gerados por IA com novo botão "AI slop". Saiba como funciona e por que a plataforma amplia moderação de conteúdo

  • ArtigosInteligência Artificial

    Artigo Builder: o que é e como se tornar um na era da IA

    Entenda o conceito de builder, de onde ele vem, o que muda na prática para quem cria software com IA e como desenvolver esse perfil.

  • ArtigosInteligência Artificial

    Artigo Estratégia de dados com IA: o que é e como aplicar

    Entenda o que é estratégia de dados com IA: componentes, arquitetura, ferramentas, boas práticas de governança, roadmap e carreira.

  • ArtigosBack-end

    Artigo Guia completo sobre engenharia de computação e carreira

    Descubra tudo sobre Engenharia de Computação: áreas de atuação, mercado de trabalho, diferenças da Ciência da Computação e como escolher sua formação. Guia completo e atualizado.

  • ArtigosBack-end

    Artigo PHP: um guia completo sobre essa linguagem de programação

    Conheça a linguagem de programação PHP de forma completa, desde a história, sintaxe, onde e como usar e muito mais!

  • 1Página 1…72Página 72…115Página 115
    1Página 1…70Página 7071Página 7172Página 7273Página 73
    74
    Página 74
    …
    115Página 115