مرحبا بالجميع!
اليوم سأخبر عن كيف أصبحت مهمة اختبار لمقابلة الوظيفة مكتبة
مقارنة الصور . إنها مكتبة مفتوحة المصدر ، والتي تستضيفها على جيثب.

قبل أن أبدأ ، اسمحوا لي أن أقدم نفسي. اسمي روماني أنا زوج وأب. أنا مهندس برمجيات في نظم Epam مع خبرة 4 سنوات في تكنولوجيا المعلومات.
الفكرة الرئيسية لهذا الموضوع هي أن نقول إن إنشاء منتج مفتوح المصدر لا يضيع الوقت ، لا! إنها تجربة مدهشة ، تنطلق من كل مجتمع المصادر المفتوحة. لقد حان الوقت عندما تكون مطورًا أو مديرًا للمشروع أو مديرًا للمنتجات في رأس واحد.
أثناء نمو هذه المكتبة ، كنت أعمل مع أشخاص من أكثر من 10 (!!) ، مثل الولايات المتحدة الأمريكية وألمانيا والصين وألمانيا والصين وروسيا وأوكرانيا وغيرها.
دعنا ننتقل من بداية هذه القصة ...
مهمة اختبار للمقابلة الوظيفية. أغسطس 2017.
في بداية أغسطس 2017 ، أجريت مقابلة في إحدى شركات تكنولوجيا المعلومات ، حيث كانت الخطوة الأولى هي القيام بمهمة الاختبار.
كانت المهمة هي إنشاء برنامج في Java يقارن أي صورتين بنفس الأحجام ويظهر الفرق بصريًا عن طريق رسم المستطيلات. ويمكن الاطلاع على شرط مفصل
هنا .
قررت أنني أريد أن أبذل قصارى جهدي. لهذا الغرض ، قررت استضافة مهمة الاختبار الخاصة بي على جيثب. كنت أرغب في قتل عصفورين بحجر واحد: توفير الحل ، والذي كمصدر مفتوح والبحث في كيفية عمل جيثب.
بعد مرور بعض الوقت ، وجدت Marketplace على GitHub ، والتي لديها الكثير من الخدمات لاستخدامها مع مستودعات GitHub. لمشاريع مفتوحة المصدر كلها مجانية. إنها المرة الأولى التي يكون فيها المصدر المفتوح هو أفضل مجتمع.
لقد أضفت الخدمات التالية:
- Codacy - هي خدمة رمز الجودة.
- Travis CI - أداة التكامل المستمر.
- المعاطف - تاريخ اختبار التغطية والإحصاءات
- BetterCodeHub - خدمة رمز الجودة.
يمكن إضافة نتائج هذه الخدمات إلى README كبارجة. في رأيي ، يجعل قراءة README أكثر إثارة للاهتمام.
عند الانتهاء من مهمة الاختبار ، قمت بإرسالها وانتظرت التعليقات. لدي العديد من المشكلات ، والتي كانت مهمة وتمت إضافتها إلى قسم الإصدار إلى المستودع.
واحد منهم - متداخلة المستطيلات ...
يمكن أن تتداخل المستطيلات وتُدرج واحدًا في واحد. يؤدي هذا السلوك إلى بعض البيانات المهملة في الصورة الناتجة. التأثير المرغوب: دمج المستطيلات التي شملت مستطيل واحد إلى واحد.اختبار المهمة كمكتبة. يوليو 2018
بعد بعض الوقت ، اكتشفت أن الكثير من الناس يزورون مكتبتي على جيثب. حقًا ، لم أكن أعتقد أن شخصًا مهتمًا بمشروع الاختبار الخاص بي.
شعار
بعد ذلك ، وجدت أن هناك من اقترح شعارًا. كان مصمم الرسوم البيانية دي ص. لم أكن في مجتمع المصادر المفتوحة من قبل وكان هذا الاقتراح غريبًا جدًا بالنسبة لي. لماذا يريد شخص ما أن يفعل ذلك مجانًا. لكنه أخبرني أنه يحب المساهمة في مشاريع مفتوحة المصدر. نوع من أهداف الحياة شيء. انه حقا مدهش.
شعار للمشروع - إنها فكرة رائعة وقبلتها. كان هناك العديد من الخيارات.
من

إلى

نهائي

كانت هذه هي المرة الأولى التي أتواصل فيها في مجتمع المصادر المفتوحة. التجربة الجديدة ، أحد معارفه الجدد.
أول خطأ من المجتمع
بعد بعض الوقت ، وجدت مشكلة في GitHub مفتوحة مع الخطأ. كان مطور من الصين.
كان الخلل حول مشكلة الصور الكبيرة. اعتاد الصور الكبيرة وحصل على StackOverflowError. لقد فوجئت بأن شخصًا ما استخدم الكود الخاص بي ووجد الخلل ، علاوة على ذلك ، أنشأ المطور مشكلة.
كان التحدي الأول لي. تحدي لفهم كيفية حل هذا الخطأ.
بعد مرور بعض الوقت ، اقترح مهندس أتمتة ضمان الجودة من روسيا حلاً لهذا الخطأ ، لكنني رفضته لأن طلب السحب لم يكن مستعدًا كما يجب. كان خطأي ، كنت بحاجة لرؤية ومحاولة فهم الحل. يمكن أن يساعدني في حلها بشكل أسرع بكثير.
بحلول ذلك الوقت كان لدي قضيتان رئيسيتان ، كانتا حاسمتين.
استخدام سطر الأوامر. خريف عام 2018
كانت المرحلة التالية من التطوير تعمل مع ريناتو أثايدز ، وهو مطور برمجيات من ستوكهولم ، السويد.
اقترح التغييرات من خلال السماح باستخدام مقارنة الصورة ك CLI التقليدية. كان من المثير للغاية أن نسمع ذلك ، حيث يريد شخص ما تمديد استخدام مقارنة الصور وفتح مكان جديد في التطوير.
قام Renato بحل جميع التعليقات التي أنشأتها وأضفت الإصدار الجديد - الإصدار 2.0. لقد بدأت في إنشاء إصدارات في مستودع جيثب. هذا مفيد حقًا ، بسبب السبب ، أنه يمكنني الحصول على جميع التغييرات بسرعة ، والتي كانت في إصدار محدد ، وكل وصف الإصدار ، ومن الذي يساهم به ، إلخ.
بعد ذلك ، طلب مني ريناتو إضافة مقارنة بين الصور إلى Maven Central. لم تكن لدي أي خبرة في نشر المكتبات إلى Maven Central و Renato سعداء بإضافة جميع التغييرات المطلوبة إلى المشروع للنشر. يسمح النشر إلى Maven Central بإضافة المكتبة كتبعية دون أي مشاكل. مشكلة واحدة كبيرة هي نشره.
ولكن قبل النشر ، كان علي إصلاح اثنين من الأخطاء الرئيسية في النظام. قضيت الكثير من الوقت لإصلاحها وفي أبريل 2019 أضفت إصدارًا جديدًا - الإصدار 2.0.2.
النشر في مافن الوسطى. أبريل 2019
لنشر المكتبة بشكل صحيح ، تحتاج إلى التعامل مع الإصدارات. بعد البحث في هذه المشكلة ، بدأت في الالتزام بالنظام التالي: MAJOR.MINOR.PATCH
حيث:
الرئيسية - إصدار عند إجراء تغييرات API غير متوافق
MINOR - إصدار عند إضافة وظائف بطريقة متوافقة مع الإصدارات السابقة
تصحيح - الإصدار عندما يجعل إصلاح الأخطاء المتوافقة مع السابقة.
الخطوة التالية هي فهم كيفية تكوين artifactId و groupId بشكل صحيح.
لقد قمت بتحديث جميع حزم بلدي:
من ua.comparison.image
إلى com.github.romankh3.image.comparison
يجعل الأمر أكثر قابلية للفهم للبحث عن حيث codebase.
وكانت النتيجة الإفراج - v2.1.0.
مساهم جديد من السويد. مايو 2019
لقد تلقيت رسالة بريد إلكتروني ، حيث طلب مني مستشار مستقل والمقاول رؤية مساهمة جديدة من ميكا. إنه مطور من السويد.
وقال إن الأشخاص الذين يعانون من ضعف البصر لديهم مشاكل في رؤية المستطيلات المختلفة إذا كانت نحيفة للغاية. أعجبتني هذه الفكرة وأضفتها إلى المشروع.
مع هذه التغييرات ، تمت إضافة مساهمة من صديق لي ، والتي أرادت ممارسة استخدام تدفق GitHub.
نتيجة لذلك ، لقد أصدرت نسخة جديدة v2.2.0.
الخطوة الجديدة للمكتبة. مايو 2019
لدي مشكلة من TobseF من كارلسروه ، ألمانيا. أراد استخدام مقارنة الصور كمكتبة للاختبارات. لكنه أراد المزيد من الوظائف.
في ذلك الوقت ، كان لدى المكتبة الطريقة الرئيسية comparImages () التي عرضت صورًا جديدة كنتيجة لذلك.
اقترح TobseF تحديث قيمة الإرجاع لأسلوب CompareImages () لإرجاع كائن ComparisonResult مع الصور قيد المقارنة ، ComparisonState (المطابقة ، missmatch ، sizemissmatch). وسوف يساعد على استخدامها في الاختبارات.
كما اقترح إضافة بعض خيارات التكوين ، والتي من شأنها أن تساعده.
أعجبتني هذه المقترحات ، لكن التغييرات لم تكن متوافقة مع الإصدارات السابقة وأزالت جزءًا من قاعدة البيانات ، والتي كنت أرغب في الاحتفاظ بها كما كانت. لهذا السبب رفضت التغييرات.
ومع ذلك ، قررت تنفيذه بنفسي. لقد كانت فكرة رائعة لتحسين مقارنة الصور.
أيضا ، اقترح ميكا تغييرات جديدة - إضافة مجالات ، والتي يمكن تجاهلها في المقارنة. إنه مفيد للاختبار أيضًا. لهذا السبب تمت إضافة هذه التغييرات أيضًا.
نتيجة لذلك ، أصدرت v3.0.0.
أصبح الإصدار 3.0.0 مكتبة حقيقية ، والتي يمكن أن تكون مفيدة للمطورين. كنت كبيرًا جدًا ، تنمو مقارنة الصور.
باستخدام في الإنتاج. يونيو 2019
في بداية يونيو ، تلقيت رسالة بريد إلكتروني من مهندس جودة التشغيل الآلي ، والذي كان لديه عدة أسئلة حول مقارنة الصورة. قال إنه يريد استخدامه في اختبارات جودة التشغيل الآلي للإنتاج.
اختبارات الإنتاج! كنت متحمس جدا لسماع ذلك. لم يكن مشروعًا للحيوانات الأليفة في جيثب ، لقد كان إنتاجًا حقيقيًا. عظيم! وصفت كل ما بوسعي.
وقال إن مقارنة الصور هي المكتبة الوحيدة التي وجدها والتي يمكنها مقارنة صورتين بمساحات مستبعدة. لكن وظائف المناطق المستثناة لم تنجح كما أراد.
نعمل معًا لمدة شهرين لتحسين المقارنة بين الصور.
ونتيجة لذلك ، كان الإصدار v3.1.1.
البحث المتخصصة. يوليو 2019
لقد فهمت أن مقارنة الصور يمكن أن تكون مفيدة لمهندس ضمان الجودة في الأتمتة لاستخدامها في الاختبارات.
لهذا السبب وجدت منتدى aqa ، حيث نشرت مقالًا حول مقارنة الصور. لقد تلقيت ردود فعل مفيدة وأصدرت v3.2.0 و v3.3.0.
من فضلك ، إذا كنت تعرف منتدى آخر ، حيث يمكن أن تظهر صورة مقارنة - اكتبه على التعليقات. وسوف يساعد مقارنة الصور لتكون أفضل مما هي عليه.
بعد ذلك ، عثرت على مستودعات GitHub ، والتي تحتوي على روابط مفيدة للمكتبات وأضفت إليها مقارنة بالصور.
الآن. نوفمبر 2019
لدى مقارنة الصور 60 بداية ، 33 شوك ، 10 استخدامات على جيثب كتبعية.
أعتقد أن هذه نتيجة رائعة لمجتمع المصادر المفتوحة الذي يساعدني في إحضار مكتبة جديدة.
إنها طريق طويل وأعتقد أن هذه ليست سوى البداية.
أود أن أقول شكراً لجميع المساهمين ، الذين يبنونني مقارنة الصور.
شكرا للقراءة.
مع أطيب التحيات ،
الرومانية.