Modelos de comunicação e revisão MQTT
Publisher
Subscriber
Skill
Issue
Simule um dispositivo IoT utilizando o Eclipse Paho (escolha a implementação que quiser). Atente-se às seguintes specs:
Conceitos de TDD
Introdução ao HiveMQ
Broker em cloud e Dashboard
Skill
Issue
Nessa atividade, deve-se desenvolver a integração entre o simulador desenvolvido nas duas primeiras atividades ponderadas e um cluster configurado no HiveMQ. Para tal, deve-se garantir que o simulador é capaz de se comunicar utilizando autenticação em camada de transporte (TLS).
Introdução ao Metabase
AUR
Skill
Issue
ETAPA 1 - Dashboard Metabase
ETAPA 2 - Integração Sqlite+HiveMQ
Integração Metabase
configurações
configurações
map
configurações
dados
Skill
Issue
ETAPA 1 - Dashboard Metabase
ETAPA 2 - Integração Sqlite+HiveMQ
Introdução ao MongoDB
Aprimoramento DB e Dashboard
Atomicidade (Tudo ou nada)
Consistência (Sempre o mesmo estado, mesmo quando distribuído)
Isolamento (Uma operação pode afetar a outra)
Durabilidade (Sem perdas de dados)
BAsicamente disponível (Sempre disponível, nem sempre consistente)
Estado Suave (Permite períodos de inconsistência em transição)
Eventual consistência (Eventualmente o estado se torna consistente)
Skill
Issue
Não tenho ponderada para vocês essa semana. Podem usar esse tempo para dev =)
MongoDB Atlas
Integração MongoDB Atlas
Introdução ao Apache Kafka
Gerenciamento de escalabilidade
Skill
Issue
Seguindo os autoestudos do encontro de hoje, implemente um cluster kafka, criando drivers para um producer e um consumer na linguagem de sua preferência.
Apache Parquet + acompanhamento
Skill
Issue
Implementação da integração entre Kafka e HiveMQ
Concorrência e paralelismo
package main
import (
	"fmt"
	"time"
)
// Função que exibe uma mensagem após um sleep de 2 segundos
func printWithDelay(msg string) {
	time.Sleep(2 * time.Second)
	fmt.Println(msg)
}
func main() {
	start := time.Now() // Início da medição do tempo
	// Chamando a função 3 vezes
	printWithDelay("Mensagem 1")
	printWithDelay("Mensagem 2")
	printWithDelay("Mensagem 3")
	elapsed := time.Since(start) // Tempo total de execução
	fmt.Printf("Tempo total de execução: %s\n", elapsed)
}package main
import (
	"fmt"
	"time"
)
// Função que exibe uma mensagem após um sleep de 2 segundos
func printWithDelay(msg string) {
	time.Sleep(2 * time.Second)
	fmt.Println(msg)
}
func main() {
	start := time.Now() // Início da medição do tempo
	// Chamando a função 3 vezes
	go printWithDelay("Mensagem 1")
	go printWithDelay("Mensagem 2")
	go printWithDelay("Mensagem 3")
	elapsed := time.Since(start) // Tempo total de execução
	fmt.Printf("Tempo total de execução: %s\n", elapsed)
}package main
import (
	"fmt"
	"sync"
	"time"
)
// Função que exibe uma mensagem após um sleep de 2 segundos
func printWithDelay(msg string, wg *sync.WaitGroup) {
	defer wg.Done() // Indica que a goroutine foi concluída
	time.Sleep(2 * time.Second)
	fmt.Println(msg)
}func main() {
	var wg sync.WaitGroup // Cria um WaitGroup
	start := time.Now() // Início da medição do tempo
	// Adiciona 3 ao contador de tarefas do WaitGroup
	wg.Add(3)
	// Chamando a função 3 vezes de forma concorrente
	go printWithDelay("Mensagem 1", &wg)
	go printWithDelay("Mensagem 2", &wg)
	go printWithDelay("Mensagem 3", &wg)
	wg.Wait() // Aguarda todas as goroutines serem concluídas
	elapsed := time.Since(start) // Tempo total de execução
	fmt.Printf("Tempo total de execução: %s\n", elapsed)
}package main
import (
	"fmt"
	"time"
)
// Função que envia uma mensagem para um canal após um sleep de 2 segundos
func printWithDelay(msg string, ch chan string) {
	time.Sleep(2 * time.Second)
	ch <- msg // Envia a mensagem para o canal
}func main() {
	ch := make(chan string, 3) // Cria um canal com buffer para 3 strings
	start := time.Now() // Início da medição do tempo
	// Chamando a função 3 vezes de forma concorrente
	go printWithDelay("Mensagem 1", ch)
	go printWithDelay("Mensagem 2", ch)
	go printWithDelay("Mensagem 3", ch)
	// Recebe as mensagens do canal e imprime
	for i := 0; i < 3; i++ {
		msg := <-ch
		fmt.Println(msg)
	}
	close(ch)
	elapsed := time.Since(start) // Tempo total de execução
	fmt.Printf("Tempo total de execução: %s\n", elapsed)
}type paddedInt struct {
	value int
	_     [56]byte
}