Hallo allerseits!
Heute werde ich darüber berichten, wie aus der Testaufgabe zum Vorstellungsgespräch der Bibliotheksbildvergleich wurde. Es ist eine Open-Source-Bibliothek, die auf GitHub gehostet wird.

Bevor ich anfange, möchte ich mich vorstellen. Ich heiße Roman. Ich bin Ehemann und Vater. Ich bin ein Software-Ingenieur bei Epam Systems mit 4 Jahren Erfahrung in der IT.
Die Hauptidee dieses Themas ist zu sagen, dass das Erstellen eines Open-Source-Produkts keine Zeitverschwendung ist, nein! Es ist eine erstaunliche Erfahrung, die von der gesamten Open-Source-Community gemacht wird. Es ist eine Zeit, in der Sie Entwickler, Projektmanager und Produktmanager in einem Kopf sind.
Während diese Bibliothek wächst, habe ich mit Leuten aus mehr als 10 (!!) Ländern gearbeitet, wie den USA, Deutschland, China, Indien, Russland, der Ukraine usw.
Lassen Sie uns am Anfang dieser Geschichte weitermachen ...
Testaufgabe zum Vorstellungsgespräch. August 2017.
Anfang August 2017 hatte ich ein Interview in einem IT-Unternehmen, bei dem der erste Schritt darin bestand, die Testaufgabe zu erledigen.
Die Aufgabe bestand darin, ein Programm in Java zu erstellen, das zwei beliebige Bilder mit derselben Größe vergleicht und den Unterschied visuell durch Zeichnen von Rechtecken darstellt. Eine detaillierte Anforderung finden Sie
hier .
Ich beschloss, mein Bestes zu geben. Zu diesem Zweck habe ich mich entschieden, meine Testaufgabe auf GitHub zu hosten. Ich wollte zwei Fliegen mit einer Klappe schlagen: die Lösung zur Verfügung stellen, die als Open Source funktioniert und nachforscht, wie GitHub funktioniert.
Nach einiger Zeit fand ich Marketplace auf GitHub, das viele Dienste für die GitHub-Repositorys bietet. Für Open-Source-Projekte alles kostenlos. Es ist das erste Mal, dass Open Source die beste Community ist.
Ich habe die nächsten Dienste hinzugefügt:
- Codacy - ist ein Dienst mit Codequalität.
- Travis CI - Kontinuierliches Integrationstool.
- Overalls - Testberichterstattung und Statistiken
- BetterCodeHub - Code-Qualitätsservice.
Die Ergebnisse dieser Dienste können als Lastkahn zu README hinzugefügt werden. Meiner Meinung nach ist es interessanter, README zu lesen.
Als die Testaufgabe erledigt war, habe ich sie gesendet und auf Feedback gewartet. Ich habe mehrere Probleme, die wichtig waren und dem Abschnitt ISSUE zum Repository hinzugefügt wurden.
Eines davon - überlappende Rechtecke ...
Rechtecke können sich überlappen und eins zu eins eingefügt werden. Dieses Verhalten führt zu etwas Müll auf dem resultierenden Bild. Gewünschter Effekt: Rechtecke, die eins zu eins enthalten, zu einem Rechteck zusammenfügen.Testaufgabe als Bibliothek. Juli 2018
Nach einiger Zeit erkundete ich, dass viele Leute meine Bibliothek auf GitHub besuchen. Wirklich, ich hätte nicht gedacht, dass sich jemand für mein Testprojekt interessiert.
Logo
Als nächstes stellte ich fest, dass jemand ein Logo vorgeschlagen hatte. Es war ein Grafikdesigner dee-y. Ich war vorher noch nicht in der Open-Source-Community und dieser Vorschlag war wirklich seltsam für mich. Warum jemand es kostenlos machen will. Aber er erzählte mir, dass er es liebte, an Open-Source-Projekten mitzuwirken. Eine Art Lebenszielsache. Es ist wirklich unglaublich.
Logo für das Projekt - es ist eine coole Idee und ich habe sie angenommen. Es gab viele Möglichkeiten.
Von

Zu

Final

Es war das erste Mal, dass ich in der Open-Source-Community kommunizierte. Die neue Erfahrung, eine neue Bekanntschaft.
Der erste Fehler aus der Community
Nach einiger Zeit fand ich ein offenes GitHub-Problem mit dem Fehler. Es war ein Entwickler aus China.
Der Fehler betraf das Problem mit großen Bildern. Er verwendete große Bilder und hat StackOverflowError. Ich war überrascht, dass jemand meinen Code verwendet und den Fehler gefunden hat. Außerdem hat der Entwickler ein Problem erstellt.
Es war meine erste Herausforderung. Fordern Sie heraus, wie Sie diesen Fehler beheben können.
Nach einiger Zeit schlug der QS-Automatisierungstechniker aus Russland eine Lösung für diesen Fehler vor, die ich jedoch ablehnte, da der Pull-Request nicht so vorbereitet war, wie er sein musste. Es war meine Schuld, ich musste sehen und versuchen, die Lösung zu verstehen. Es könnte mir helfen, es viel schneller zu lösen.
Zu diesem Zeitpunkt hatte ich zwei Hauptprobleme, die kritisch waren.
Befehlszeilenverwendung. Herbst 2018
Der nächste Schritt in der Entwicklung war die Zusammenarbeit mit Renato Athaydes, einem Softwareentwickler aus Stockholm, Schweden.
Er schlug Änderungen vor, indem er den Bildvergleich als traditionelle CLI zuließ. Es war so aufregend zu hören, dass jemand die Nutzung des Bildvergleichs erweitern und eine neue Nische in der Entwicklung eröffnen möchte.
Renato hat alle von mir erstellten Kommentare aufgelöst und ich habe die neue Version v2.0 hinzugefügt. Ich habe begonnen, Veröffentlichungen im GitHub-Repository zu erstellen. Dies ist sehr nützlich, da ich schnell alle Änderungen erhalten kann, die in einer bestimmten Version enthalten waren, die Beschreibung der Version, wer sie beisteuert usw.
Als nächstes bat mich Renato, einen Bildvergleich zu Maven Central hinzuzufügen. Ich habe keine Erfahrung mit dem Veröffentlichen von Bibliotheken in Maven Central und Renato hat sich darüber gefreut, alle erforderlichen Änderungen an dem Projekt für das Veröffentlichen vorzunehmen. Durch das Veröffentlichen in Maven Central kann die Bibliothek problemlos als Abhängigkeit hinzugefügt werden. Ein großes Problem war die Veröffentlichung.
Vor der Veröffentlichung musste ich zwei große Fehler im System beheben. Ich habe viel Zeit aufgewendet, um sie zu reparieren, und im April 2019 habe ich die neue Version v.2.0.2 hinzugefügt.
Veröffentlichung in Maven Central. April 2019
Um die Bibliothek ordnungsgemäß zu veröffentlichen, müssen Sie sich mit der Versionsverwaltung befassen. Nachdem ich dieses Problem untersucht hatte, begann ich, mich an das folgende Schema zu halten: MAJOR.MINOR.PATCH
wo:
MAJOR - Version, wenn inkompatible API-Änderungen vorgenommen werden
MINOR - Version, wenn Funktionen abwärtskompatibel hinzugefügt werden
PATCH - Version, wenn abwärtskompatible Fehler behoben werden.
Der nächste Schritt besteht darin, zu verstehen, wie Artefakt-ID und Gruppen-ID richtig konfiguriert werden.
Ich habe alle meine Pakete aktualisiert:
von ua.comparison.image
zu com.github.romankh3.image.comparison
Dies macht die Suche dort, wo sich die Codebasis befindet, verständlicher.
Und das Ergebnis war Release - v2.1.0.
Neuer Mitarbeiter aus Schweden. Mai 2019
Ich habe eine E-Mail erhalten, in der ein unabhängiger Berater und der Auftragnehmer mich baten, einen neuen Beitrag von Mika zu sehen. Es ist ein Entwickler aus Schweden.
Er sagte, dass Menschen mit schlechtem Sehvermögen Probleme haben, die verschiedenen Rechtecke zu sehen, wenn sie zu dünn sind. Ich mochte diese Idee und fügte sie dem Projekt hinzu.
Mit diesen Änderungen habe ich einen Beitrag von einem Freund von mir hinzugefügt, der mit GitHub Flow üben wollte.
Als Ergebnis habe ich eine neue Version v2.2.0 veröffentlicht.
Der neue Schritt der Bibliothek. Mai 2019
Ich habe eine Ausgabe von TobseF aus Karlsruhe. Er wollte den Bildvergleich als Bibliothek für Tests nutzen. Aber er wollte mehr Funktionalität.
Zu diesem Zeitpunkt verfügte die Bibliothek über die Hauptmethode compareImages (), die als Ergebnis neue Bilder zurückgab.
TobseF schlug vor, den Rückgabewert der compareImages () -Methode zu aktualisieren, um das ComparisonResult-Objekt mit Bildern im Vergleich ComparisonState (match, missmatch, sizemissmatch) zurückzugeben. Es wird helfen, in Tests zu verwenden.
Außerdem schlug er vor, einige Konfigurationsoptionen hinzuzufügen, die ihm helfen würden.
Ich mochte diese Vorschläge, aber Änderungen waren nicht abwärtskompatibel und entfernten einen Teil der Codebasis, die ich beibehalten wollte. Deshalb habe ich Änderungen abgelehnt.
Trotzdem habe ich mich entschlossen, es selbst umzusetzen. Es war eine großartige Idee, um den Bildvergleich zu verbessern.
Außerdem schlug Mika neue Änderungen vor - fügen Sie Bereiche hinzu, die im Vergleich ignoriert werden können. Es ist auch zum Testen hilfreich. Deshalb wurden diese Änderungen auch hinzugefügt.
Infolgedessen wurde Version 3.0.0 veröffentlicht.
Version 3.0.0 wurde zu einer echten Bibliothek, die für Entwickler nützlich sein kann. Ich war so toll, dass der Bildvergleich wächst.
Verwendung in der Produktion. Juni 2019
Anfang Juni erhielt ich eine E-Mail von einem Automatisierungs-QS-Ingenieur, der mehrere Fragen zum Bildvergleich hatte. Er sagte, er wolle es in QS-Tests zur Automatisierung für die Produktion verwenden.
Produktionstests! Ich war so aufgeregt, es zu hören. Es war kein Lieblingsprojekt auf GitHub, es war eine echte Produktion. Großartig! Ich habe alles beschrieben, was ich konnte.
Er sagte, dass der Bildvergleich die einzige Bibliothek sei, die zwei Bilder mit ausgeschlossenen Bereichen vergleichen könne. Die Funktionalität der ausgeschlossenen Bereiche funktionierte jedoch nicht wie gewünscht.
Wir arbeiten seit zwei Monaten zusammen, um den Bildvergleich zu verbessern.
Als Ergebnis wurde Version 3.1.1 veröffentlicht.
Nischensuche. Juli 2019
Ich habe verstanden, dass ein Bildvergleich für einen Automatisierungs-QS-Techniker nützlich sein kann, um ihn in Tests zu verwenden.
Deshalb habe ich ein aqa-Forum gefunden, in dem ich einen Artikel zum Bildvergleich veröffentlicht habe. Ich habe nützliches Feedback und habe v3.2.0 und v3.3.0 veröffentlicht.
Bitte, wenn Sie ein anderes Forum kennen, in dem Bildvergleich angezeigt werden kann - schreiben Sie es auf Kommentare. Es wird dazu beitragen, dass der Bildvergleich besser ist als er ist.
Als nächstes fand ich GitHub-Repositorys, die nützliche Links zu den Bibliotheken enthalten und ihnen einen Bildvergleich hinzufügten.
Jetzt November 2019
Bildvergleich hat 60 Starts, 33 Gabeln, 10 Verwendungen von Github als Abhängigkeit.
Ich denke, dass dies ein großartiges Ergebnis der Open-Source-Community ist, die mir hilft, eine neue Bibliothek einzurichten.
Es ist ein langer Weg und ich glaube, das ist nur der Anfang.
Ich möchte mich bei allen Mitwirkenden bedanken, die einen Bildvergleich mit mir aufbauen.
Danke fürs Lesen.
Viele Grüße
Roman