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

مقدمة


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


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


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


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



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


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


9 أشهر من الدراسة


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


الجزء الأول يقدم الطلاب إلى المفاهيم الأساسية لل YP. المتغيرات والأساليب وأساسيات OOP وكل هذه الأشياء.


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


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


نهج التعلم الخاص بي


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


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


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


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


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


ليس كل الوصول إلى النهاية


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


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


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


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


قارن هذا مع Turbo Pascal ، التي بدأت بالكثيرين ، بمن فيهم أنا:


begin writeln(" "); end. 

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


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



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


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


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


فكرة الخدمة


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


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


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


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



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


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


تطبيق


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


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


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


تحليل المضافات


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


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


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


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


بحث وتصفية


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


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


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


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


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


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


أمن


كل شيء بسيط. هناك مستخدمون لديهم دور ADMIN - يمكنهم تحرير إضافات أو حذف أو إضافة أخرى جديدة.


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


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


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


القدرة على التكيف و Bootstrap


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


حتى لا نعاني من CSS ، أخذنا Bootstrap. رخيصة ومبهجة وكريمة.


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


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


تحسين جنوب شرقي أوروبا دقيقة


منذ أكثر من عامين كنت مشغولة بالمواقع الإلكترونية وكل ما يتعلق بـ SEO ، لم أتمكن من إطلاق مشروع دون تحسين SEO الأساسي على الأقل.


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


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


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


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


ما هو التالي مع المشروع


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


أدخل "سنيكرز" وانظر أي نوع من المكملات الغذائية التي يحتوي عليها.


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


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


نشر


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


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


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


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


البرنامج النصي الأول يحذف ملف الجرة القديم ، ويجمع واحدة جديدة.


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


DB - الخلية على نفس VPS.


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


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

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


تعقيد


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


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


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


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


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


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


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


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


النتائج


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


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


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


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

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


All Articles