Forkney it: 8 Gehen Sie Projekte, die interessant sind, um in den Quellcode zu graben

Wir im Binary District sind intensiv auf Go. In zwei Tagen können Sie lernen, die Ideologie und das Innere von Go zu verstehen und sauberen, testbaren Code zu schreiben. Aber dies ist der erste Schritt und dann - üben, üben, üben: Lesen Sie den Code eines anderen, schreiben und bearbeiten Sie Ihren eigenen.

Open Source ist dafür ideal:

  • Open Source erhöht die Sichtbarkeit. Sie können die Quelle nicht selektiv studieren.
  • Open Source bietet einen Anreiz, Code so sauber wie möglich zu schreiben und Logik zu dokumentieren.
  • Ein Beitrag zur Open Source-Bewegung verbessert das Karma.



Zusammen mit Sergey Tolsi, einem Absolventen unseres Go-Kurses, haben wir eine Liste von Open-Source-Projekten mit verschiedenen Ebenen und Ausrichtungen erstellt, die geeignet sind, zu lernen, wie man guten Code schreibt und gleichzeitig die Welt zu einem besseren Ort macht.

Tolsi- Strategie:
„Wenn Sie Open Source für Schulungen verwenden möchten, entscheiden Sie sich zunächst für einen bestimmten Arbeitsbereich und legen Sie ein Ziel fest - beispielsweise eine Website oder ein Spiel, eine Art Service - und suchen Sie dann ein ähnliches Projekt oder ein Framework mit Beispielen. Ich arbeite zum Beispiel im Bereich Kryptowährungen und habe herausgefunden, dass sie auf Go eine Implementierung des Lightning-Netzwerks schreiben, um Übertragungen im Bitcoin-Netzwerk zu beschleunigen, und der stabilste Knoten für Ethereum ist geth . “

1. Docker


Beginnen wir mit einem der komplexesten und umfangreichsten Projekte, die weit über die Go Community hinaus bekannt sind. Seit 2013 wird Docker unter der Apache 2.0-Lizenz frei vertrieben und ist ein System zum Erstellen isolierter virtueller Maschinen in jeder Umgebung, die zum Testen von Anwendungen erforderlich ist. Die Schlüsselkomponente libcontainer ist der Standard für diese Art von System. Die beste Implementierung der "Sandbox" zum Beispiel wird nicht gefunden.

2. Kubernetes


Ein weiteres interessantes Projekt, das Mitte 2014 erschien, ist eng mit Docker verbunden: Kubernetes , Software für das Gruppenmanagement von Containern auf einer großen Geräteflotte. Es ist möglich, dass Sie sich bereits mit ihm befasst haben, aber haben Sie unter die Haube dieses Projekts geschaut?

Wenn Sie Go studieren, lohnt es sich, dies zu tun, schon allein deshalb, weil Kubernetes von Google-Programmierern geschrieben wurde und unter den Projektmitarbeitern Spezialisten von RedHat, IBM und Microsoft sind. Die Kubernetes-Codebasis enthält einen guten Kubernetes Contributor-Leitfaden , und Sie können während regelmäßiger Fragen und Antworten mit dem Entwicklungsteam über Slack chatten.

3. Synchronisieren


Syncthing ist ein gut gestaltetes Projekt ohne erkennbare technische Probleme und kritische Fehler, das mit Blick auf effektive Go- Praktiken erstellt wurde.

Diese Implementierung eines verteilten Dateifreigabesystems wie BitTorrent Sync basiert auf dem Open Source Block Exchange Protocol (BEP).

Im Vergleich zu Kubernetes verfügt Syncthing über eine einfache Architektur, die nur aus drei Hauptschichten besteht. Der Programmcode entspricht der Standard-Go-Bibliothek und kombiniert sie mit LevelDB und mehreren anderen Bibliotheken. Sie werden verwendet, um Netzwerkverbindungen zu verschlüsseln, Hashes zu berechnen und Daten zu speichern. Um die Codebasis zu verstehen, hilft der Leitfaden von der offiziellen Website und einem lebhaften Forum .

4. G3N


Was ist mit der 3D-Engine, die von Programmierern für Programmierer erstellt wurde? Dieser Titel wird von der G3N gehalten und ist auch vollständig in Go geschrieben. Die Engine eignet sich für Spiele, ist jedoch als Werkzeug zum Schreiben interaktiver Anwendungen positioniert.

5. GoLearn


Maschinelles Lernen und Python sind fast synonym, aber Go ist auch für Datenwissenschaftler nützlich. Die einfache und flexible Bibliothek für maschinelles Lernen von GoLearn ist in dieser Sprache verfasst. Es verwendet die Gonum BLAN- Shell und unterstützt grundlegende Algorithmen für maschinelles Lernen, darunter: Support-Vektor-Methode, lineare Regression, neuronale Netze, Zufallswald, Entscheidungsbäume und einen naiven Bayes'schen Klassifikator.

6. Gorgonia


Bemerkenswert ist auch Go's Low-Level-Lösung für maschinelles Lernen - Gorgonia . Diese Bibliothek, die an das Konzept von TensorFlow erinnert , verwendet das Konzept der Darstellung von Gleichungen in einem Diagramm und ist in einer einzelnen Binärdatei verpackt.

7. Acra


Das Studium der Codebasis von acra , einem Tool für Verschlüsselung und sichere Datenbankspeicherung, das für Microservices auf mobilen Plattformen und im Internet entwickelt wurde, kann eine interessante Erfahrung sein. Dies ist eine Gelegenheit, wirklich sicheren Code zu lernen und aus Erfahrung zu lernen, wie man Datenlecks erkennt und schützt und Kryptografie in ein Projekt integriert.

Darüber hinaus ist die AcraWriter-Clientbibliothek nicht nur für Go verfügbar, sondern auch für Ruby, Python, NodeJS, iOS (Objective-C / Swift), Android Java und PHP. Sie können Implementierungen vergleichen und einige Feinheiten der Portierungssoftware in der Praxis erlernen.

Die neueste Version der Acra-Dokumentation und -Tutorials ist auf dem offiziellen Cossack Labs-Server verfügbar.

8. ConnectorDB


ConnectorDB ist geeignet, wenn Sie nicht nur den Code eines anderen lernen möchten, sondern auch persönlich etwas Nützliches für sich tun möchten. Dies ist eine Open-Source-Plattform für die Bereitstellung Ihres eigenen Segments des Internet der Dinge auf der Grundlage bereits vorhandener Geräte. Es aggregiert Daten von Computern, Smartphones von Browsern und verarbeitet sie.

Sobald Sie den Code verstanden haben, können Sie neue Module schreiben und fast jedes Gerät an ConnectorDB anschließen, die Überwachung Ihres eigenen Lebens einrichten, angefangen bei der Überwachung der körperlichen Aktivität bis hin zur Zählung der Produktivität und Bewertung der Stimmung.

Und auch ...


Ein idealer Ort, um Ihre Suche zu starten, ist die Awesome Go-Liste , in der die Community Links zu den besten Open Source-Bibliotheken und -Anwendungen auf Go sammelt. Darüber hinaus ist das Wiki nützlich für Sprachrepositorys. Es enthält Listen potenziell nützlicher Artikel , Kurse und Bücher .

Indem Sie den Projektcode analysieren und Beiträge leisten, können Sie erworbene Fähigkeiten entwickeln und Wissen aktualisieren. Es gibt eine Chance, sich an der Open-Source-Bewegung zu beteiligen, und es gibt nur einen Weg, um herauszufinden, wie tief und lang. Und für diejenigen, die mit den Grundlagen beginnen und sofort an der Entwicklung teilnehmen möchten, findet am 8. und 9. Dezember im Binary District ein praktisches Programmierprogramm für Go statt.

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


All Articles