Nós, no distrito binário, estamos intensificando a atividade. Em dois dias, você poderá aprender a entender a ideologia e o interior do Go, escrever um código limpo e testável. Mas este é o primeiro passo, e então - pratique, pratique, pratique: leia o código de outra pessoa, escreva e edite o seu.
O código aberto é ideal para isso:
- O código aberto aumenta a visibilidade. Você pode estudar de maneira não seletiva a fonte.
- O código aberto fornece um incentivo para escrever o código o mais limpo possível e documentar a lógica.
- Contribuir para o movimento de código aberto melhora o carma.

Juntamente com Sergei
Tolsi, um graduado do nosso
curso Go, fizemos uma lista de projetos de código aberto de vários níveis e orientações, adequados para aprender a escrever um bom código e, ao mesmo tempo, tornar o mundo um lugar melhor.
Estratégia
Tolsi :
“Se você deseja usar código-fonte aberto para treinamento, primeiro decida sobre uma área específica de trabalho e defina uma meta - por exemplo, criar um site ou jogo, algum tipo de serviço - e depois encontre um projeto ou estrutura semelhante com exemplos. Por exemplo, trabalho no campo de criptomoedas e descobri que eles estão escrevendo no Go uma implementação da rede Lightning para acelerar transferências na rede Bitcoin e o nó mais estável para o Ethereum é o geth . ”
1. Docker
Vamos começar com um dos projetos mais complexos e volumosos conhecidos muito além da Comunidade Go. Desde 2013, o
Docker é distribuído gratuitamente sob a licença Apache 2.0 e é um sistema para criar máquinas virtuais isoladas com qualquer ambiente necessário para testar aplicativos. Seu componente principal,
libcontainer, é o padrão para esse tipo de sistema. A melhor implementação da "caixa de proteção", por exemplo, não pode ser encontrada.
2. Kubernetes
Outro projeto interessante, que apareceu em meados de 2014, está intimamente ligado ao Docker:
Kubernetes , software para gerenciamento de grupo de contêineres em uma grande frota de dispositivos. É possível que você já tenha lidado com ele, mas você olhou sob o capô deste projeto?
Se você estuda o Go, vale a pena fazê-lo apenas porque o Kubernetes foi escrito pelos programadores do Google e, entre os colaboradores do projeto, existem especialistas da RedHat, IBM e Microsoft. A base de código do Kubernetes é fornecida com um bom
guia do Kubernetes Contributor , e você pode conversar com a equipe de desenvolvimento no Slack durante
sessões regulares de perguntas e respostas .
3. Sincronização
O Syncthing é um projeto bem desenhado, sem problemas técnicos perceptíveis e bugs críticos, criado com base nas práticas do
Effective Go .
Essa implementação de um sistema de compartilhamento de arquivos distribuído, como o BitTorrent Sync, é baseada no protocolo de troca de bloco (BEP) de código aberto.
Comparado ao Kubernetes, o Syncthing possui uma arquitetura simples que consiste em apenas três camadas principais. O código do programa corresponde à biblioteca Go padrão e a combina com o LevelDB e várias outras bibliotecas. Eles são usados para criptografar conexões de rede, calcular hashes e armazenar dados. Entender sua base de códigos ajudará o
guia no site oficial e em um
fórum animado .
4. G3N
E o mecanismo 3D criado por programadores para programadores? Este título é
mantido pelo G3N e também está totalmente escrito em Go. O mecanismo é adequado para jogos, mas está posicionado como uma ferramenta para escrever aplicativos interativos.
5. GoLearn
Aprendizado de máquina e Python são quase sinônimos, mas Go também é útil para cientistas de dados.
A biblioteca de aprendizado de máquina simples e flexível
do GoLearn está escrita neste idioma. Ele usa o shell
Gonum BLAN e suporta algoritmos básicos de aprendizado de máquina, incluindo: método de vetor de suporte, regressão linear, redes neurais, floresta aleatória, árvores de decisão e um classificador Bayesiano ingênuo.
6. Gorgonia
A solução de aprendizado de máquina de baixo nível da Go -
Gorgonia - também é digna de nota. Essa biblioteca, remanescente do conceito de
TensorFlow , usa o conceito de representar equações em um gráfico e é empacotada em um único arquivo binário.
7. acra
Estudar a base de código da
acra , uma ferramenta de criptografia e armazenamento seguro de banco de dados projetada para microsserviços em plataformas móveis e na web, pode ser uma experiência interessante. Esta é uma oportunidade para aprender códigos verdadeiramente seguros e aprender com a experiência como detectar e proteger contra vazamentos de dados, integrar criptografia em um projeto.
Além disso, a biblioteca cliente
AcraWriter está disponível não apenas no Go, mas também no Ruby, Python, NodeJS, iOS (Objective-C / Swift), Android Java e
PHP - você pode comparar implementações e aprender algumas das sutilezas do software de portabilidade na prática.
A versão mais recente da documentação e dos tutoriais da Acra está disponível no
servidor oficial do
Cossack Labs .
8. ConnectorDB
O ConnectorDB é adequado se você não apenas deseja aprender o código de outra pessoa, mas também faz algo útil pessoalmente. Esta é uma plataforma de código aberto para implantar seu próprio segmento da Internet, com base nos dispositivos já disponíveis. Ele agrega dados de computadores, smartphones de navegadores e os processa.
Depois de entender o código, você pode escrever novos módulos e conectar quase qualquer dispositivo ao ConnectorDB, configurar o monitoramento de sua própria vida, começando com o monitoramento da atividade física e terminando com a contagem da produtividade e a avaliação do humor.
E também ...
O local ideal para iniciar sua pesquisa é
a lista Awesome Go , onde a comunidade coleta links para as melhores bibliotecas e aplicativos de código aberto do Go. Além disso, o Wiki é útil para repositórios de idiomas. Possui listas de
artigos ,
cursos e
livros potencialmente úteis .
Ao analisar o código do projeto e contribuir, você pode desenvolver habilidades adquiridas e atualizar conhecimentos. Há uma chance de se envolver no movimento de código aberto, e só há uma maneira de descobrir o quão profundo e longo. E para aqueles que vão começar com o básico e desejam ingressar imediatamente no desenvolvimento, nos dias 8 e 9 de dezembro, uma
prática intensiva em programação no Go ocorrerá no Distrito Binário.