E-Dobavki - خدمة ويب للبحث عن المضافات الغذائية بلغة Java وSpring Boot، كتبها طلابي

مقدمة

لقد حدث أنني قمت منذ عامين تقريبًا بتدريس البرمجة في إحدى مدارس تكنولوجيا المعلومات في كييف. لقد بدأت في القيام بذلك من أجل المتعة فقط. لقد كتبت ذات مرة مدونة برمجة، ثم تخليت عنها. لكن الرغبة في إخبار الأشياء المفيدة للأشخاص المهتمين لم تختف.

لغتي الرئيسية هي جافا. لقد كتبت عليها ألعابًا للهواتف المحمولة وبرامج للاتصالات اللاسلكية وخدمات الويب المختلفة. وأنا أقوم بتدريس جافا.

هنا أريد أن أحكي قصة تدريب مجموعتي الأخيرة. كيف انتقلوا من بدء التدريب إلى كتابة خدمة ويب عاملة. خدمة ويب مفيدة للعثور على المكملات الغذائية. مجانا، لا الإعلان والتسجيل والرسائل النصية القصيرة.

الخدمة نفسها هنا - E-Dobavki.com.

E-Dobavki - خدمة ويب للبحث عن المضافات الغذائية بلغة Java وSpring Boot، كتبها طلابي

المشروع تعليمي ولا يحتوي على أي إعلانات. كما أفهم من هذا المنشور، يمكنك توفير روابط لمثل هذه المشاريع.

قبل أن أصف المشروع نفسه، سأخبركم قليلاً عن عملية التعلم للمجموعة، وبدون ذلك لن تكتمل الصورة.

9 أشهر تدريب

في المدرسة التي أقوم بالتدريس فيها، تنقسم دورة Java إلى جزأين. في المجمل، تستغرق الدورة حوالي 2 أشهر، مع جميع فترات الراحة (عطلة رأس السنة، وقت لكتابة المشاريع المتوسطة).

الجزء الأول يعرف الطلاب على المفاهيم الأساسية للغة. المتغيرات والأساليب وأساسيات OOP وكل تلك الأشياء.

ينص الجزء الثاني من الدورة على أن الطالب يفهم بالفعل بشكل أو بآخر كيفية الكتابة بلغة جافا، ويمكن إعطاؤه مكدسًا تكنولوجيًا "للبالغين". يبدأ كل شيء بـ SQL، ثم JDBC، ثم Hibernate. ثم HTTP، servlets. التالي هو الربيع، قليلا عن git و maven. ويكتب الطلاب المشاريع النهائية.

وتنقسم كل التدريب إلى وحدات. لقد أجريت دروسًا مرتين في الأسبوع. مدة الدرس الواحد ساعتان.

طريقتي في التعلم

لقد أصدرت 5 مجموعات. يبدو الأمر كثيرًا لمدة عامين، لكنني كنت دائمًا أقود مجموعتين بالتوازي.

لقد حاولت أساليب مختلفة.

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

الخيار الثاني الذي جئت إليه والذي أعمل عليه الآن هو عدم تكريس جزئين كاملين للنظرية. بدلًا من ذلك، أقوم بمزج أقسام قصيرة من النظرية لمدة تتراوح بين 5 و10 دقائق، ثم أقوم بتعزيزها على الفور بأمثلة عملية. هذا النهج يعمل بشكل أفضل.

إذا كان هناك ما يكفي من الوقت، فإنني أدعو الطلاب إلى مكاني، وأجلسهم على جهاز الكمبيوتر المحمول الخاص بي، ويقومون بأمثلة عملية بأنفسهم. إنه يعمل بشكل رائع، لكن لسوء الحظ يستغرق الكثير من الوقت.

لا يصل الجميع إلى النهاية

كان الكشف بالنسبة لي هو حقيقة أن المجموعة بأكملها لم تصل إلى نهاية الدورة.

وفقًا لملاحظاتي، نصف الطلاب فقط يكتبون المشروع النهائي. يتم القضاء على معظمهم خلال الجزء الأول من الدورة. وأولئك الذين وصلوا إلى الجزء الثاني عادة لا يسقطون.

يغادرون لأسباب مختلفة.

الأول هو التعقيد. بغض النظر عما يقولونه، جافا ليست أبسط لغة. لكتابة حتى أبسط برنامج، تحتاج إلى فهم مفهوم الطبقة، والطريقة. ولفهم لماذا تحتاج إلى الكتابة الفراغ العام الثابت الرئيسي (String[] arg) هناك عدد قليل من المفاهيم لفهم.

قارن هذا بـ Turbo Pascal، وهو ما بدأ به العديد من الأشخاص، بما فيهم أنا:

begin
    writeln("Первая программа");
end.

وبقدر ما أعرف، ستقوم المدرسة بحل هذه المشكلة عن طريق إدخال اختبارات إضافية. الآن لا يستطيع الجميع دراسة جافا. لا يزال هذا في مرحلة المفهوم، ولكن من الواضح أن الخطوة هي الخطوة الصحيحة.

والسبب الثاني كما في الصورة أدناه:

E-Dobavki - خدمة ويب للبحث عن المضافات الغذائية بلغة Java وSpring Boot، كتبها طلابي

غالبًا ما يعتقد الناس أن البرمجة تتعلق بكتابة الكثير من النصوص والحصول على الكثير من المال مقابل ذلك. مثل مؤلف الإعلانات، المزيد من المال فقط.

الواقع مختلف قليلا. الكثير من التعليمات البرمجية الروتينية، والأخطاء غير الواضحة، وعملية التعلم المستمرة. انها مثيرة للاهتمام، ولكن ليس للجميع.

هذه هي الإحصائيات. في البداية أزعجني ذلك، اعتقدت أنني ربما كنت أفعل شيئًا خاطئًا. أفهم الآن أن الإحصائيات هي نفسها تقريبًا بالنسبة لمعظم الدورات التدريبية. الآن لا أقلق بشأن ذلك، ولكن أعلم الأشخاص المهتمين به.

فكرة الخدمة

بمجرد انتهاء الطلاب من الدورة بأكملها، حان الوقت لكتابة المشروع النهائي. كانت هناك أفكار مختلفة. لقد عرضوا أوراق المهام ومشاريع إدارة المشاريع وشيء آخر.

أردت أن أفعل شيئًا بسيطًا ولكنه مفيد. كان معياري بسيطًا: ما إذا كان بإمكاننا أنا وأصدقائي استخدامه. وقد استوفت خدمة الويب للبحث عن المضافات الغذائية هذه المتطلبات.

الفكرة بسيطة. عندما تشتري منتجًا من أحد المتاجر، فإنك ترى نوعًا من الإضافات الإلكترونية في تركيبته. ليس من الواضح من الكود مدى خطورة ذلك أم لا (وهناك أيضًا إضافات خطيرة محظورة في العديد من البلدان).

تفتح الموقع، وتدخل اسم الملحق (الرقم، أحد الأسماء البديلة)، وتحصل على ملخص الملحق:

E-Dobavki - خدمة ويب للبحث عن المضافات الغذائية بلغة Java وSpring Boot، كتبها طلابي

هناك مشاريع مماثلة. يمكنك أيضًا كتابة المادة المضافة في Google، على الرغم من أنها لا تعرض المعلومات بشكل صحيح دائمًا.

لكن بما أن المشروع تعليمي فإن الصعوبات المذكورة أعلاه لم تمنعنا :)

تطبيق

الجميع كتب بلغة جافا، كود المصدر للمشروع على جيثب.

كنا 7 أشخاص، بما فيهم أنا. قدم الجميع طلب سحب، وقبلت أنا أو أي شخص آخر من المجموعة طلب السحب هذا.

استغرق تنفيذ المشروع حوالي شهر - من التعبير عن الفكرة إلى الحالة التي ترونها الآن.

تحليل المواد المضافة

أول شيء فعله أحد الطلاب، إلى جانب الإنشاء الأساسي لإطار عمل حول قاعدة البيانات (الكيانات والمستودعات وما إلى ذلك)، كان تحليل الوظائف الإضافية من موقع معلومات موجود.

وكان هذا ضروريا لاختبار النقاط المتبقية. ليست هناك حاجة إلى تعليمات برمجية إضافية لملء قاعدة البيانات. بعد تحليل العديد من الإضافات بسرعة، يمكننا إجراء مزيد من اختبار واجهة المستخدم والفرز والتصفية.

يتيح لك Spring Boot إنشاء ملفات تعريف متعددة. الملف الشخصي هو ملف يحتوي على إعدادات.

بالنسبة لبيئة التطوير، استخدمنا ملف تعريف مع نظام H2 DBMS محلي ومنفذ HTTP الافتراضي (8080). وهكذا، في كل مرة يتم فيها تشغيل التطبيق، يتم مسح قاعدة البيانات. المحلل اللغوي في هذه الحالة هو الذي أنقذنا.

البحث والتصفية

نقطة مهمة هي البحث والتصفية. يجب على الشخص الموجود في المتجر النقر بسرعة على رمز الملحق أو أحد الأسماء والحصول على النتيجة.

لذلك، يحتوي الكيان الإضافي على عدة حقول. هذا هو الكود الإضافي والأسماء البديلة والوصف. يتم البحث باستخدام Like في جميع الحقول في نفس الوقت. وإذا أدخلت [123] أو [قطيفة]، فستحصل على نفس النتيجة.

لقد فعلنا كل هذا بناءً على المواصفات. هذا جزء من Spring يسمح لك بوصف شروط البحث الأساسية (مثل بعض الحقول، على سبيل المثال)، ثم دمج هذه الشروط (OR أو AND).

بعد كتابة عشرات المواصفات، يمكنك طرح استفسارات معقدة مثل "جميع إضافات التلوين الخطيرة التي تحتوي على كلمة [أحمر] في الوصف".

فيما يتعلق بالعمل مع قاعدة بيانات Spring، أجدها مريحة للغاية. هذا صحيح بشكل خاص عند العمل مع الاستعلامات المعقدة. أدرك أن هذا له حمل خاص به، وسيتم تشغيل استعلام SQL المكتوب والمحسّن يدويًا بشكل أسرع.

لكنني أيضًا أتمسك بوجهة النظر القائلة بأنه ليست هناك حاجة لتحسين كل شيء مسبقًا. يجب أن يبدأ الإصدار الأول ويعمل ويسمح باستبدال الأجزاء الفردية. وإذا كان هناك حمولة، فيجب إعادة كتابة هذه الأجزاء الفردية.

حماية

انه سهل. هناك مستخدمون لديهم دور المسؤول - يمكنهم تعديل الإضافات وحذفها وإضافة إضافات جديدة.

وهناك مستخدمين آخرين (مسجلين أم لا). يمكنهم فقط تصفح قائمة الإضافات والبحث عن الإضافات التي يحتاجون إليها.

تم استخدام Spring Security لفصل الحقوق. يتم تخزين بيانات المستخدم في قاعدة بيانات.

يمكن للمستخدمين التسجيل. الآن لا يعطي أي شيء. إذا واصل الطلاب تطوير الخدمة وإدخال بعض الوظائف المخصصة، فسيكون التسجيل مفيدًا.

الاستجابة وBootstrap

النقطة التالية هي القدرة على التكيف. في حالة خدمتنا (على الأقل بالطريقة التي رأيناها)، سيكون غالبية المستخدمين يستخدمون الهواتف المحمولة. وتحتاج إلى عرض الملحق بسرعة من هاتفك المحمول.

لكي لا نعاني مع CSS، استخدمنا Bootstrap. رخيصة ومبهجة وتبدو لائقة.

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

لا أستطيع إلا أن أقول إنني حاولت التدخل في العمل بأقل قدر ممكن. هذا لا يزال مشروع الطلاب. وبالطبع سيتمكن الرجال من تصحيح مثل هذه اللحظات لاحقًا.

دقيقة من تحسين محركات البحث (SEO).

نظرًا لأنني كنت منخرطًا بشكل وثيق في مواقع الويب وكل ما يتعلق بـ SEO لأكثر من عامين، لم أتمكن من إطلاق مشروع دون تحسين SEO الأساسي على الأقل.

في الواقع، لقد قمت بإنشاء قالب من العنوان والوصف لكل وظيفة إضافية. عنوان URL هو تقريبًا CNC، على الرغم من إمكانية جعله أقصر.

أضفت أيضا عدادات الحضور. تمت إضافة الموقع إلى Yandex Webmaster وGoogle Search Console لمراقبة التحذيرات الواردة من محركات البحث.

لا يكفي. تحتاج أيضًا إلى إضافة ملف robots.txt وsitemap.xml للفهرسة الكاملة. لكن مرة أخرى، هذا مشروع طلابي. سأخبرهم بما يجب عليهم فعله، وإذا أرادوا، فسوف يفعلون ذلك.

تحتاج إلى إرفاق شهادة SSL. سيعمل برنامج Let's Encrypt المجاني أيضًا. لقد فعلت هذا من أجل Spring Boot. ليس من الصعب القيام بذلك، وتزداد ثقة PS.

ما هي الخطوة التالية للمشروع؟

ثم، في الواقع، الخيار متروك للرجال. تضمنت الفكرة الأصلية للمشروع أيضًا قاعدة بيانات للمنتجات مع روابط للمواد المضافة.

أدخل على "السنيكرز" وشاهد ما تحتويه من إضافات غذائية.

حتى في بداية المشروع، كنت أعلم أنه لن يكون لدينا أي منتجات :) لذلك، بدأنا فقط بالإضافات.

الآن يمكنك إضافة منتجات وتقديم منتجات إضافية. أرداف. إذا كانت قاعدة بيانات واسعة النطاق، فسيكون هناك مستخدمين.

تعيين

تم نشر المشروع على VPS، Aruba Cloud. هذا هو أرخص VPS يمكن أن نجده. لقد كنت أستخدم هذا المزود منذ أكثر من عام في مشاريعي، وأنا سعيد جدًا به.

خصائص VPS: 1 جيجا بايت رام، 1 وحدة معالجة مركزية (لا أعرف عن التردد)، 20 جيجا بايت SSD. لمشروعنا هذا يكفي.

تم إنشاء المشروع باستخدام حزمة mvn النظيفة المعتادة. والنتيجة هي جرة الدهون - ملف قابل للتنفيذ مع كافة التبعيات.

لأتمتة كل هذا قليلاً، كتبت بضعة نصوص باش.

يقوم البرنامج النصي الأول بحذف ملف الجرة القديم وإنشاء ملف جديد.

يقوم البرنامج النصي الثاني بتشغيل الجرة المجمعة، ويمرر لها اسم الملف الشخصي المطلوب. يحتوي ملف التعريف هذا على معلومات اتصال قاعدة البيانات.

DB - MySQL على نفس VPS.

يتضمن إجمالي إعادة تشغيل المشروع ما يلي:

  • قم بتسجيل الدخول إلى VPS عبر SSH
  • قم بتنزيل أحدث تغييرات git
  • قم بتشغيل local-jar.sh
  • قتل تطبيق التشغيل
  • قم بتشغيل Launch-production.sh

يستغرق هذا الإجراء ثلاث دقائق. يبدو هذا اختيارًا ذكيًا بالنسبة لي لمثل هذا المشروع الصغير.

تعقيد

كانت الصعوبات الرئيسية في إنشاء المشروع ذات طبيعة تنظيمية.

هناك مجموعة من الأشخاص الذين يبدو أنهم يعرفون كيفية البرمجة، ولكن ليس بشكل جيد. إنهم يعرفون شيئًا ما، لكنهم ما زالوا غير قادرين على تطبيقه حقًا. والآن عليهم إكمال المشروع خلال شهر.

لقد حددت قائد الفريق المشروط في هذه المجموعة. لقد احتفظ بمستند Google الذي يحتوي على قائمة المهام، والمهام الموزعة، والتحكم في قبولها. كما قبل طلبات السحب.

كما طلبت من الطلاب أن يكتبوا تقريرًا قصيرًا كل مساء عن العمل الذي قاموا به في المشروع. إذا لم تفعل شيئًا، حسنًا، اكتب فقط "لم تفعل شيئًا". هذه ممارسة رائعة وتجعلك متوترًا بعض الشيء. لسوء الحظ، لم يتبع الجميع هذه القاعدة.

وكان الغرض من كل هذه الحركة بسيطا. قم بتشكيل فريق، ولو لفترة قصيرة، للعمل معًا.

أردت أن يشعر الرجال أن عملهم مهم. افهم أنهم لا يكتبون كودًا كرويًا في الفراغ. وما يفعلونه معًا هو مشروع سيستخدمه الناس بعد ذلك.

كان الأسبوع الأول أو الأسبوعان بمثابة تراكم. تم تنفيذ الكيانات والالتزامات الصغيرة ببطء. لقد أثارتهم شيئًا فشيئًا، وأصبح العمل أكثر متعة. أصبح التواصل في الدردشة أكثر حيوية، وعرض الطلاب إضافاتهم.

وأعتقد أن الهدف قد تحقق. تم إنجاز المشروع، وحصل الرجال على القليل من الخبرة في العمل ضمن فريق. هناك نتيجة واضحة وملموسة يمكن عرضها على الأصدقاء وتطويرها.

النتائج

التعلم مثير للاهتمام.

بعد كل فصل كنت أعود مضطربًا عاطفيًا. أحاول أن أجعل كل زوج فريدًا من نوعه وأن ينقل أكبر قدر ممكن من المعرفة.

من الجميل أن تصل المجموعة التي أعلمها إلى النهائيات. إنه أمر رائع بشكل خاص عندما يكتب الرجال "لقد حصلت على وظيفة، كل شيء على ما يرام، شكرًا لك". حتى لو كان صغيرًا، حتى لو لم يكن المال كبيرًا في البداية. لكن الأهم أنهم اتخذوا خطوة نحو تحقيق رغباتهم، ونجحوا.

وعلى الرغم من أن المقال كان ضخمًا للغاية، إلا أنه لم يكن من الممكن بالتأكيد تغطية جميع النقاط. لذلك، اكتب أسئلتك في التعليقات.

المصدر: www.habr.com

إضافة تعليق