Postagens

Criando uma pipeline de CI/CD para aplicações Go (Golang)

Imagem
Criando uma pipeline de CI/CD para aplicações Go (Golang) Nesse artigo eu vou mostrar como podemos criar pipelines de CI/CD utilizando somente o Github. Para criarmos uma pipeline de CI/CD para aplicações Go vamos utilizar um recurso do Github chamado Github Actions, esse recurso vai permitir que, após cada Pull Request ou push para a branch master, seja realizado um lint do nosso código, sejam executados os testes unitários e seja gerado o build da nossa aplicação. Teremos também um recurso de geração de releases a cada nova tag criada no repositório. A APLICAÇÃO DE EXEMPLO Para essa explicação, construiremos um básico "Hello Word" em golang. O repositório de exemplo está acessível aqui , sinta-se à vontade para cloná-lo ou apenas acompanhá-lo. Não vou entrar em muitos detalhes sobre o código do aplicativo em si. É um aplicativo “Hello world” básico que imprime o texto “Hello GitHub” na saída padrão. Aqui está o código para o arquivo main.go: E aqui está a função “HelloGithu...

Carbon: Conhecendo a nova linguagem do Google

Imagem
Um substituto para o C++? No final de julho deste ano, o Google anunciou sua nova linguagem de programação de software, o Carbon. As notícias que seguiram foram sobre como o Carbon do Google está tentando ser um sucessor do C++.  Frustrados com a lenta evolução do C++, engenheiros do Google lançaram uma nova linguagem de programação de código aberto “experimental”, chamada Carbon, como possível sucessora do venerável mas antigo C++. Analisando a maneira como as BigTechs moldam as linguagens de programação, podemos notar que essas empresas inovam para o seu próprio benefício: assim como a Microsoft construiu o Typescript para atualizar o JavaScript, e o Kotlin foi criado para reforçar as fraquezas em Java, o Carbon poderia servir como uma linguagem sucessora para o C++, que ofereceria um ponto de partida fácil para desenvolvedores para uma linguagem mais recente que aborda conceitos de desenvolvimento modernos, como segurança de memória e generics. A  documentação  oficial...

DDD: Acessar dados com DAO ou Repository?

Imagem
  Eis a questão... No mundo da engenharia de software vejo muita confusão entre dois design patterns muito utilizados hoje em dia, o DAO e o Repository, é muito comum encontrar em fórums pela internet pessoas perguntando sobre a diferença entre os dois, outros perguntando se podem ser usados juntos e alguns afirmando que são a mesma coisa. O objetivo desse artigo é esclarecer as diferenças e semelhanças entre esses dois padrões, afim de aumentar o seu conhecimento sobre o assunto e facilitar a sua decisão de utilizar um ou outro.  O que é o DAO DAO é um padrão de integração que lida com a persistência de entidades Uma entidade é a representação de algo do mundo real que possui uma existência independente. Uma entidade pode representar um objeto com uma existência física - uma pessoa, carro ou empregado - ou pode representar um objeto com existência conceitual - uma companhia, um trabalho ou um curso universitário. O Dao tem a função de capturar e persistir os dados de um objet...

Go é uma linguagem estranha?

Imagem
Ao nos depararmos com a linguagem de programação Go pela primeira vez, ela nos parece uma linguagem muito diferente das demais, muitos lhe dão o adjetivo de "um pouco estranha", até mesmo alguns desenvolvedores experientes ficam meio confusos quando observam a sintaxe e a estrutura de código de um programa em Go pela primeira vez, especialmente pela forma como essa linguagem lida com o paradigma de orientação a objetos . As linguagens orientadas a objetos mais populares trabalham baseadas em classes e objetos, já Go não possuí classes, mas possuí em seu lugar um tipo de dado chamado struct para realizar o armazenamento de estados (para realizar um papel semelhante aos atributos) e funções que atuam sobre esses tipos struct (para realizar um papel semelhante aos métodos). Para nosso exemplo vou utilizar como modelo uma entidade denominada Criatura: Segue seu diagrama UML: A entidade acima seria implementada em Go da seguinte maneira: package main import "fmt" type Cr...