Pular para o conteúdo principal

victorstein.dev

53/100 Dias de Golang - Websockets com Melody

# Websockets com Melody

WebSockets são uma tecnologia essencial para aplicações que exigem comunicação bidirecional em tempo real, como chats, dashboards, jogos e sistemas colaborativos. Encontrei essa lib chamada Melody. Vamos construir um mesmo chat de mensagens só que agora com uma interface web. Esse exemplo está na documentação da biblioteca.

package main

import (
	"net/http"

	"github.com/olahol/melody"
)

func main() {
	m := melody.New()

	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		http.ServeFile(w, r, "index.html")
	})

	http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
		m.HandleRequest(w, r)
	})

	m.HandleMessage(func(s *melody.Session, msg []byte) {
		m.Broadcast(msg)
	})

	http.ListenAndServe(":5000", nil)
}

Na mesma pasta do projeto adicione um index.html

Ler Mais

52/100 Dias de Golang - Chat Golang

# Chat Golang

Continuando no assunto de redes, vamos melhorar o script do dia 51 e fazer um chat, esse chat deve receber várias conexões e cada mensagem deve ser recebida por todos os usuários conectados no server - a famosa mensagem em broadcasting. Nosso server deve guardar uma lista de clientes conectados, deve ter uma função handleConnection() para lidar com cada conexão e uma função broadcaster() que é responsável por enviar a mensagem para todos os usuários conectados. As duas função serão goroutines e irão se comunicar via chanels. O nosso client será bem simples vai se conectar ao servidor, ficar recebendo e enviando as mensagens, a função que lê as mensagems deve ser uma goroutine também.

Ler Mais

51/100 Dias de Golang - Criando um servidor TCP em Go

# Criando um servidor TCP em Go

Estava pensando em quais assuntos fazer para o blog, quero explorar mais sobre testes, fazer uma aplicação com banco de dados, ver como funciona migrations, scrapping de dados, TUI, gRCP, criar alguma aplicação com Fyne, como publicar um pacote e outro tema que pensei foi um conteúdo mais voltado para redes e gostei desse. Então vamos construir um servidor TCP - talvez em outro post podemos fazer uma sala de bate papo. Nesse vamos fazer um servidor TCP que fica esperando conexões de clientes, recebe mensagens e responde um “Olá User”.

Ler Mais

50/100 Dias de Golang - Metade de 100

# Metade de 100

Esse é o post 51 - o blog é de programação, o primeiro tinha que ser de índice 0. Vou fazer um agrupado de todos os posts seguindo a sequência do roadmap.sh - Sim, no dia 100 vou fazer isso novamente com todos os posts…rsrs. No final mostro o código Go que usei para pegar o nome e o path de cada arquivo.

# Learn the Basics

# Going Deeper

# CLI’s

# ORM’s

# Web Frameworks

# Logging

# API Clients

# Testing your Apps

# Perdidos

Para fazer esse Post, abri cada arquivo, peguei o título, formatei para o link em .md - Fiz isso até o post 3, depois disso automatizei.

Ler Mais

49/100 Dias de Golang - Aplicação para buscar previsão do tempo - Parte 6

# Aplicação para buscar previsão do tempo - Parte 6

Hoje vou alterar implementar aquela execução que planejei na Parte 5.

Començando pelo main.go. Bem simples, só chamando o Execute da pasta cmd.

package main

import (
	"cidadeTempo/cmd"
)

func main() {
	cmd.Execute()
}

Vamos para os arquivos da pasta cmd. Esse é o arquivo principal, criado pelo Cobra. Só adicionei mais algumas descrições e exemplos de uso. Perceba aqui que o método Execute está com a primeira letra maíuscula, pois ele será exportado, se você tentar no main.go chamar o cmd.init() verá que não é possível

Ler Mais

48/100 Dias de Golang - Aplicação para buscar previsão do tempo - Parte 5

# Aplicação para buscar previsão do tempo - Parte 5

Hoje vamos dar uma olhada em como organizar a aplicação, separar os arquivos, separar as regras de negócio da aplicação e ver a estrutura de pastas de projetos golang. Encontrei várias fontes sobre esse tema, muitas discussões e a resposta é que depende do tamanho do projeto, qual arquitetura você pretende usar e vários outros fatores. Vou deixar uma lista dos melhores artigos aqui:

Ler Mais

47/100 Dias de Golang - Aplicação para buscar previsão do tempo - Parte 4

# Aplicação para buscar previsão do tempo - Parte 4

Vamos trabalhar com a formatação dos JSON’s nesse post. Atualmente estamos somente exibindo o retorno da API, vamos formatar e exibir somente os campos que temos interesse.

Vamo primeiro editar o arquivo cidade.go. Devemos criar o formato de resposta do JSON. No nosso caso o JSON é uma lista de várias cidade com Nome, ID e Estado

type Cidade []struct {
	Nome   string `json:"nome"`
	ID     int    `json:"id"`
	Estado string `json:"estado"`
}

Na função requestsCidade temos que definir uma variável do tipo Cidade

Ler Mais

46/100 Dias de Golang - Aplicação para buscar previsão do tempo - Parte 3

# Aplicação para buscar previsão do tempo - Parte 3

Nesse post vamos criar o comanda do tempo, recebemos um ID de cidade e retornamos como está o tempo nela. Vamos começar alterando o arquivo tempo.go para receber a flag cidadeID

var cidadeID string

func init() {
	rootCmd.AddCommand(tempoCmd)
	tempoCmd.Flags().StringVarP(&cidadeID, "cidadeID", "i", "1", "ID da cidade")
}

Agora já temos acesso ao ID da cidade, podemos montar o request para a API

Ler Mais

45/100 Dias de Golang - Aplicação para buscar previsão do tempo - Parte 2

# Aplicação para buscar previsão do tempo - Parte 2

Vamos começar criando o projeto Golang:

go mod init cidadeTempo

E instalar as depêndências. Para CLI vamos usar o Cobra. Já vimos sobre o Cobra no dia 40

go get -u github.com/spf13/cobra@latest

E iniciar o projeto:

cobra-cli init

A estrutura do projeto deve ficar assim:

.
├── cmd
│   └── root.go
├── go.mod
├── go.sum
├── LICENSE
└── main.go

E vamos adicionar nossos comando principais, cidade e tempo

Ler Mais

44/100 Dias de Golang - Aplicação para buscar previsão do tempo - Parte 1

# Aplicação para buscar previsão do tempo - Parte 1

Nesses próximos dias vamos construir uma aplicação que será utilizada através de uma CLI que consulta uma API e exibe os dados de resultado. Vamos usar como base a BrasilAPI. Fazer uma CLI onde podemos buscar a previsão do tempo das cidades do Brasil, para isso teremos dois comando principais, buscar ID da cidade e buscar a previsão da cidade com base nesse ID. Podemos incrementar a aplicação, mas o básico será isso. Veja como funcionam as rotas:

Ler Mais