
سأخبرك في هذا المقال كيف حاولت المشاركة في تطوير مشروع رئيسي مفتوح المصدر ، كرهت نفسي ، ثم أتمتة الروتينية وتعلمت الاستمتاع بالحياة. التفاصيل - تحت الخفض.
لماذا هذا ضروري حتى؟
عادةً ما يرغب المطورون في المشاركة في مجتمع المصادر المفتوحة لعدة أسباب. إليك بعضًا (وربما ليس كلهم):
- في الامتنان لإتاحة الفرصة لاستخدام هذا وغيرها من البرامج مجانا
- اكتساب تجربة جديدة
- لضخ سيرتك الذاتية
كنت دائمًا ما تجذبني دائمًا فرصة تعلم شيء جديد ، لاستيعاب أفضل الممارسات في تطوير البرمجيات ، ولكن كل شيء آخر ليس أقل إلحاقًا بهذه العملية.
حسنًا ، أنا في العمل ، من أين أبدأ؟
أول شيء فعله هو العثور على مهمة للعمل عليها. أنت محظوظ حقيقي ، إذا كنت بحاجة إلى تعديل بعض المكتبات لاحتياجات عملك - ابدأ مهمة ، ناقش مع المالكين وابدأ التنفيذ! خلاف ذلك ، يمكنك الرجوع إلى قائمة المهام المفتوحة في صفحة المشروع والتقاط شيء لنفسك. العثور على الحق لا يقل أهمية عن تنفيذه ، وهنا ليس بهذه البساطة. حتى لو كنت مهندسًا من ذوي الخبرة ، فقد يكون من المفيد البدء بمهام أبسط والتعرف على قاعدة الكود وعمليات التطوير المقبولة ، وبعد ذلك فقط تأخذ ميزة أكبر.
كيف تجد المهام للمبتدئين؟
منذ بعض الوقت ، بدأ جيثب لإظهار المهام المناسبة للمبتدئين.
يمكنك رؤيتهم بالانتقال من الإعلان في رأس صفحة المشكلات بعد أن استقرت على هذه "الأدوات" ، بدأ يومي المعتاد في الظهور بهذا الشكل - فتحت قائمة بالمشاريع التي كنت أرغب في العمل عليها (للحفاظ عليها في متناول يدي ، وقمت بتمييزها جميعًا بنجوم صغيرة) ، أو انتقلت إلى القسم أعلاه أو بحثت في علامات البحث التي أحتاجها ، وأبحث في وقت واحد تلك المستخدمة في هذا المشروع بالذات. وغني عن القول ، إن التجول في مستودعات 40-60 يكلف كومة هائلة من القوة وسرعان ما أشعر بالملل. في هذه العملية ، أصبحت سريع الانفعال وفقدت صبري وتركت هذا الشيء. في أحد هذه الأيام ، أدركت أنه يمكنني أتمتة عملية البحث وشرعت في ترجمة اختصاصات.
متطلبات
- يجب أن تكون المهمة مفتوحة
- لم يتم تعيين المهمة إلى أي شخص
- يجب أن توصف المهمة بالبساطة والانفتاح على المجتمع.
- يجب ألا تكون المهمة قديمة جدًا
بعد ذلك ، بدأت في تحليل مستودعات مختلفة للتسميات المستخدمة. اتضح أن هناك مجموعة كبيرة من التسميات المختلفة ، بعضها فريد لمستودعات / منظمات محددة. حساسة لحالة الأحرف ، قمت بتجميع قائمة من 60 علامة
تطوير الحلول
كأداة ، قررت استخدام Kotlin ، الذي كان مألوفًا لي بالفعل ، ونفذت الخوارزمية التالية: استعرض جميع المستودعات التي تحمل علامة النجمة ، واحصل على جميع المهام التي تناسب المتطلبات ، وقم بترتيبها حسب تاريخ التغيير ، وتجاهل القديمة منها وعرضها. يتم تقسيم القائمة الناتجة حسب الطوابع الزمنية - لهذا اليوم ، وللأمس ، وللأسبوع الماضي ، وللشهر وكل شيء آخر - وبفضل هذا أصبح الأمر أكثر ملاءمة لاستخدام البرنامج بشكل منتظم. قررت أنه في المرحلة الأولى سيكون التطبيق أداة مساعدة في وحدة التحكم ، وبالتالي فإن الإخراج يذهب فقط إلى stdout.
لقد قمت بلف النتيجة في صورة عامل ميناء ، وأتوقع أن يكون شخص ما مثبتًا على الأرجح عامل تثبيت أكثر من JRE. لا تخزن الأداة المساعدة أي حالة ، لذا فإن كل عملية إطلاق ستنفذ الخوارزمية بأكملها ، ويمكن إزالة الحاوية المستهلكة بأمان من النظام.
إليك كيفية عمل البرنامج:

حد الطلب
تعد المكالمة إلى واجهة برمجة تطبيقات لجهة خارجية مثالًا كلاسيكيًا لمهمة كثيفة الإيواء ، لذلك تقرر بشكل طبيعي بدء تحميل البيانات في عدة تدفقات. خلال التجربة والخطأ ، قابلت قيود واجهة برمجة تطبيقات Github. أولاً ، مع وجود عدد كبير من مؤشرات الترابط ، تم تشغيل فحص مكافحة إساءة الاستخدام على جانب Github واضطررت إلى التوقف عند 10 مؤشرات ترابط بشكل افتراضي ، مع إمكانية التكوين عبر وسيطات الإدخال.
ثانياً ، يوجد حد لعدد الطلبات - حيث لا يمكن تقديمها أكثر من 5000 طلب في الساعة. مع هذا القيد ، كل شيء أكثر تعقيدًا ، لأنه عند تمرير علامات متعددة إلى استعلام بحث ، يضع Github منطقية "و" بينهما ، وبالنظر إلى عدد العلامات في القائمة ، فلن يجد شيئًا مع احتمال 100٪ تقريبًا. في مواجهة الضياع الكبير للمكالمات إلى واجهة برمجة التطبيقات ، بدأت في تقديم طلب إضافي لجميع العلامات الموجودة في المشروع ، والتقاطع مع قائمتي ومهام طلب قطعة قطعة لهذه العلامات فقط. بإضافة طلب واحد إلى كل مستودع تخزين ، تخلصت من 50 إلى 55 طلبًا إضافيًا (كلما زاد عدد العلامات التي يدعمها البرنامج ، والمزيد من الطلبات الإضافية) للمهام على العلامات التي لا توجد لمستودع التخزين.
ومع ذلك ، قد لا يكون هذا التحسين كافيًا لبعض المستخدمين. وفقًا للتقييم السطحي ، يسمح لك الحل الحالي بتجاوز 1000 مستودع (هناك أيضًا قيود صارمة في الكود) ، مع توقع وجود 4 ملصقات بسيطة في كل مستودع. لم يصادف أحد مثل هذا التقييد حتى الآن ، لكن فكرة الحل هي في حالة تراكم. كل شيء بسيط هنا - تخزين الحالة ، وتخزين الاستجابات مؤقتًا ، في الحالات الصعبة بشكل خاص ، في الخلفية ببطء.
كيف تجد المستودعات؟
إذا لم تكن مستخدم Github نشطًا حتى الآن ، أو إذا كنت لا تستخدم وظيفة stars ، فإليك بعض النصائح للعثور على المستودعات المناسبة:
- تعرف على التقنيات التي تستخدمها في مشاريعك ، وربما يتم تقديم بعضها على جيثب
- استخدم قسم الاتجاهات الشائعة
- استخدم مستودع قوائم رائع للمواضيع التي تهمك.
إطلاق
للبدء ، سوف تحتاج إلى:
يمكن العثور على الإعدادات الأخرى (تصفية حسب اللغة ، ومستوى التوازي ، والقائمة السوداء للمستودعات) على صفحة المشروع. رابط للمشروع .
إذا كنت تفتقر إلى بعض العلامات في المشروع - إنشاء PR أو كتابة لي بشكل شخصي ، سأضيف.