Forkney it: 8 projets Go qui sont intéressants à creuser dans le code source

Nous dans le district binaire allons intensifs sur Go. En deux jours, vous pouvez apprendre à comprendre l'idéologie et l'intérieur de Go, écrire du code propre et testable. Mais c'est la première étape, et ensuite - pratiquez, pratiquez, pratiquez: lisez le code de quelqu'un d'autre, écrivez et éditez le vôtre.

L'open source est idéal pour cela:

  • L'open source augmente la visibilité. Vous pouvez étudier la source de manière non sélective.
  • L'open source fournit une incitation à écrire du code aussi propre que possible et à documenter la logique.
  • Contribuer au mouvement open source améliore le karma.



En collaboration avec Sergey Tolsi, diplômé de notre cours Go, nous avons dressé une liste de projets open source de différents niveaux et orientations qui conviennent pour apprendre à écrire du bon code et en même temps rendre le monde meilleur.

Stratégie Tolsi :
«Si vous souhaitez utiliser l'open source pour la formation, décidez d'abord d'un domaine de travail spécifique et fixez-vous un objectif - par exemple, créer un site Web ou un jeu, une sorte de service - puis trouver un projet similaire ou un cadre avec des exemples. Par exemple, je travaille dans le domaine des crypto-monnaies et j'ai découvert qu'ils écrivaient sur Go une implémentation du réseau Lightning pour accélérer les transferts dans le réseau Bitcoin et le nœud le plus stable pour Ethereum est geth . »

1. Docker


Commençons par l'un des projets les plus complexes et les plus volumineux connus bien au-delà de la communauté Go. Depuis 2013, Docker est distribué gratuitement sous la licence Apache 2.0 et est un système de création de machines virtuelles isolées avec tout environnement nécessaire pour tester les applications. Son composant clé est libcontainer , la norme pour ce type de système. La meilleure implémentation du "bac à sable" par exemple est introuvable.

2. Kubernetes


Un autre projet intéressant, apparu mi-2014, est étroitement lié à Docker: Kubernetes , logiciel de gestion de groupe de conteneurs sur une large flotte d'appareils. Il est possible que vous ayez déjà traité avec lui, mais avez-vous regardé sous le capot de ce projet?

Si vous étudiez Go, cela vaut la peine de le faire, ne serait-ce que parce que Kubernetes a été écrit par des programmeurs Google, et parmi les contributeurs du projet, il y a des spécialistes de RedHat, IBM et Microsoft. La base de code Kubernetes est fournie avec un bon guide du contributeur Kubernetes , et vous pouvez discuter avec l'équipe de développement sur Slack pendant les sessions de questions / réponses régulières .

3. Synchronisation


Syncthing est un projet bien conçu sans problèmes techniques notables et bogues critiques, créé dans l'optique des pratiques Go efficaces .

Cette implémentation d'un système de partage de fichiers distribué tel que BitTorrent Sync est basée sur le protocole d'échange de blocs open source (BEP).

Par rapport à Kubernetes, Syncthing a une architecture simple composée de seulement trois couches principales. Le code du programme correspond à la bibliothèque Go standard et le combine avec LevelDB et plusieurs autres bibliothèques. Ils sont utilisés pour crypter les connexions réseau, calculer les hachages et stocker les données. Pour comprendre sa base de code aidera le guide à partir du site officiel et d'un forum animé .

4. G3N


Qu'en est-il du moteur 3D créé par les programmeurs pour les programmeurs? Ce titre est détenu par le G3N , et il est également entièrement écrit en Go. Le moteur convient aux jeux, mais se positionne comme un outil pour écrire des applications interactives.

5. GoLearn


L'apprentissage automatique et Python sont presque synonymes, mais Go est également utile pour les scientifiques des données. La bibliothèque d'apprentissage machine simple et flexible de GoLearn est écrite dans cette langue. Il utilise le shell Gonum BLAN et prend en charge les algorithmes d'apprentissage machine de base, notamment: la méthode des vecteurs de support, la régression linéaire, les réseaux de neurones, la forêt aléatoire, les arbres de décision et un classificateur bayésien naïf.

6. Gorgonia


La solution d'apprentissage automatique de bas niveau de Go - Gorgonia - est également remarquable. Cette bibliothèque, qui rappelle le concept de TensorFlow , utilise le concept de représentation des équations dans un graphique et est empaquetée dans un seul fichier binaire.

7. acra


L'étude de la base de code d' acra , un outil de chiffrement et de stockage de base de données sécurisé conçu pour les microservices sur les plates-formes mobiles et le Web, peut être une expérience intéressante. C'est l'occasion d'apprendre un code vraiment sûr et d'apprendre de l'expérience comment détecter et protéger contre les fuites de données, intégrer la cryptographie dans un projet.

De plus, la bibliothèque cliente AcraWriter est disponible non seulement sur Go, mais aussi sur Ruby, Python, NodeJS, iOS (Objective-C / Swift), Android Java et PHP - vous pouvez comparer les implémentations et découvrir certaines des subtilités du portage de logiciel dans la pratique.

La dernière version de la documentation et des didacticiels Acra est disponible sur le serveur officiel de Cossack Labs .

8. ConnectorDB


ConnectorDB convient si vous ne voulez pas seulement apprendre le code de quelqu'un d'autre, mais aussi faire quelque chose d'utile pour vous personnellement. Il s'agit d'une plate-forme open source pour déployer votre propre segment de l'Internet des objets sur la base des appareils déjà à portée de main. Il agrège les données des ordinateurs, des smartphones des navigateurs et les traite.

Une fois que vous comprenez le code, vous pouvez écrire de nouveaux modules et connecter presque n'importe quel appareil à ConnectorDB, configurer la surveillance de votre propre vie, en commençant par la surveillance de l'activité physique et en terminant par le comptage de la productivité et l'évaluation de l'humeur.

Et aussi ...


Un endroit idéal pour commencer votre recherche est la liste Awesome Go , où la communauté collecte des liens vers les meilleures bibliothèques et applications open source sur Go. De plus, le Wiki est utile pour les référentiels de langue. Il contient des listes d' articles , de cours et de livres potentiellement utiles .

En analysant le code du projet et en contribuant, vous pouvez développer les compétences acquises et mettre à jour les connaissances. Il y a une chance de s'impliquer dans le mouvement open source, et il n'y a qu'une seule façon de savoir à quelle profondeur et combien de temps. Et pour ceux qui vont commencer par les bases et qui souhaitent se joindre immédiatement au développement, les 8 et 9 décembre, un stage intensif de programmation sur Go aura lieu dans le quartier binaire.

Source: https://habr.com/ru/post/fr432022/


All Articles