GoNotícias #22

Edição nº 22

Salve, galera da linguagem da marmota!

Abro mais uma edição da GoNotícias agradecendo a cada pessoa que assina esta lista. São neste momento 632 pessoas, muito obrigado! Esta lista é para vocês!

Não deixa de mandar seu feedback, dizer o que está achando, o que gostaria de ver, alguma sugestão que quer compartilhar, só mandar aqui neste formulário, beleza?

Na edição desta semana, temos dicas de estudo, quiz para testar conhecimentos de channels, desenvolvimento do API Gateway da DigitalOcean, refatoração, novos projetos da comunidade vindo aí, gerenciamento de memória, dicas de runtime, sync.WaitGroup, proposta de tipos de parâmetros com generics, dicas de estudo, gRPC, dependências zumbi, gerenciamento de erros, sistemas de arquivos com Redis, migração de banco de dados, conversor de arquivos de texto e muito mais!

Boa leitura!


Links

Os primeiros passos com Golang
Neste artigo, o Higor Diego compartilha como tem sido seus estudos em Go e deixa dicas para quem também está começando!

Projeto saindo do papel já no início de 2021 e com uma parceria muito massa!
2021 começando e a comunidade se movimentando! Nesse tweet, a galera da Women Who Go Curitiba dá a dica para você ter toda a atenção no que vem por aí!

Concurrency Patterns in Go: sync.WaitGroup
Você provavelmente já viu código Go com alguma variável (talvez sg) e seus métodos .Done(), .Wait() entre outros. O WaitGroup é uma ferramenta muito poderosa e comum para cenários concorrentes, e neste artigo, o Jon Calhoun traz uma explicação bem interessante desse recurso.

Diário de bordo - #3
Mais um texto da série de estudos do Ismael Carvalho, desta vez aprofundando seus estudos mais ainda na linguagem da marmota, vendo inline functions, hashes com SHA1 e uma comparação entre concorrência e paralelismo.

Go code to get the name of the function that invoked the current function
Uma explicação bacana e didática escrito pelo Salih Zain do uso do package runtime para obter, em tempo de execução, o nome do arquivo, da linha e da função chamada.

Building DigitalOcean’s API gateway
Um API Gateway é uma ferramenta comum em provedores de serviços na nuvem e usado de diversas formas. Nesse texto, o Maurício Linhares nos apresenta a versão em texto de uma apresentação explicando os desafios de se criar tal projeto do começo ao fim.

gRPC Interceptors
Esta é a parte 2 de uma série de conteúdos escrita pelo Percy Bolmér, explicando passo a passo detalhes de implementação e uso de gRPC em aplicações Go. Nesta parte, a vez é de explicar o que são Interceptors e seu papel nesse tipo de abordagem. Leitura mais do que recomendada para quem ainda não conhece gRPC e para quem já conhece e quer aprender algo novo :)

Elegance of Go’s error handling
Ok, tá aí uma coisa que muita gente reclama de primeira, que Go tem problemas para lidar com erros. Curiosamente, a linguagem faz uma das abordagens mais bacanas desse assunto, na minha humilde opinião. No texto, o Ville Hakulinen traz um exemplo de prática para essa tarefa no uso de http.Handler.

Zombie Dependencies
Uma nova parte de uma série feita pelo Dan Lorenc. Após o Dependency Jungle, que já compartilhamos aqui antes, traz um novo tipo de problemas com dependências: “Zumbis são packages praticamente mortos. Talvez formalmente descontinuados, arquivados ou colocados sob manutenção. Mas que ainda estão lá, todo pimpão rodando no seu projeto, com bugs e tudo“.

Extracting the business logic - the project
Outro artigo que é parte de uma série sobre refatoração de projetos, um assunto do qual gosto demais :D No texto, o Bartlomiej Klimczak chega numa etapa de separação entre o domínio de negócio e adição de testes.

proposal: spec: add generic programming using type parameters
Uma discussão muito interessante no repositório oficial da linguagem e que reforça ainda mais a implementação de generics: a adição de tipagem para parâmetros de funções. Vale a pena conferir!

What are the best practices in Go for efficient memory management?
Outro assunto muito relevante e sem dúvida discutido com frequência. Nessa discussão no Reddit, temos várias opiniões a respeito de como o gerenciamento de memória, ou seja, leitura recomendada :)

What is the output of the following program?
Um quiz do Golangbot para testar seus conhecimentos de channels :D

Writing Simulations Using Go
Mais um texto do Miki Tebeka, onde ele ensina como fazer uma ferramenta de simulações sem exigir conhecimento de probabilidade ou estatística, baseando em um jogo de tabuleiro - inclusive com código fonte disponível.

An unlikely database migration
Esse é um artigo de destaque desta semana. Imagine entrar num novo trampo e descobrir que o banco de dados principal da empresa é um mega arquivo de texto em JSON. Foi o que o Brad Fitzpatrick encarou. No texto, ele descreve a experiência de como foi migrar essa bucha para um banco de dados relacional.

Eventos

Learning Go - Tips for Gophers at All Levels
O próximo encontro do pessoal do GoBridge já tem data marcada! Com transmissão ao vivo, será uma excelente oportunidade de aprendizado com papo sobre carreira, ferramentas, mentoria e muito mais, não perca!

Building CLI apps in Golang & Go Module Versioning
E no mesmo dia do meetup acima, teremos também um novo encontro do pessoal do GolangNYC, com dois assuntos importantes: a evolução de Go Modules e dicas de desenvolvimento de ferramentas CLI.

Projetos

juicedata/juicefs
Uma lib de sistema de arquivos para compartilhamento de dados entre aplicações.

mrusme/journalist
Um agregador de feed RSS.

alash3al/re-txt
Uma ferramenta CLI para conversão entre arquivos de texto de formatos diferentes.

riza/gigger
Uma ferramenta CLI que busca o conteúdo de pastas .git deployadas em sites.

jboursiquot/portscan
Uma série de exemplos de scan de portas para ensino de concorrência.

hexops/cmder
Um repositório com um exemplo de padrão para ferramentas CLI, com cerca de 100 linhas de código.

dawidd6/checksumo
Uma aplicação gráfica para verificação de arquivos contra seus checksums.

go-br/estudos
Repositório de estudos diversos sobre Go.

d-tsuji/awesome-go-orms
Uma lista de diversos ORMs para Go.


E por esta semana é só! Até a semana que vem, se cuidem!