E-Dobavki - уеб услуга за търсене на хранителни добавки в Java и Spring Boot, написана от мои ученици

въведение

Случи се така, че през последните почти две години преподавах програмиране в едно от ИТ училищата в Киев. Започнах да правя това просто за забавление. Веднъж написах блог за програмиране, след което се отказах. Но желанието да разказвам полезни неща на заинтересованите хора не е изчезнало.

Основният ми език е Java. На него написах игри за мобилни телефони, софтуер за радиокомуникации и различни уеб услуги. И аз преподавам Java.

Тук искам да разкажа историята на обучението на последната ми група. Как са преминали от започване на обучение до писане на работеща уеб услуга. Полезна уеб услуга за намиране на хранителни добавки. Безплатно, без реклама, регистрация и SMS.

Самата услуга е тук - E-Dobavki.com.

E-Dobavki - уеб услуга за търсене на хранителни добавки в Java и Spring Boot, написана от мои ученици

Проектът е образователен и не съдържа реклама. Както разбирам от тази публикация, можете да предоставите връзки към такива проекти.

Преди да опиша самия проект, ще ви разкажа малко за процеса на обучение на групата; без това картината ще бъде непълна.

9 месеца обучение

В училището, в което преподавам, курсът по Java е разделен на 2 части. Общо курсът отнема около 9 месеца, с всички почивки (новогодишни празници, време за писане на междинни проекти).

Първата част запознава учениците с основните понятия за езика. Променливи, методи, основи на ООП и всички тези неща.

Втората част от курса предвижда, че ученикът вече повече или по-малко разбира как да пише на Java и може да му бъде даден стек от технологии за „възрастни“. Всичко започва с SQL, след това JDBC, Hibernate. След това HTTP, сървлети. Следва Spring, малко за git и maven. И студентите пишат финални проекти.

Цялото обучение е разделено на модули. Провеждах занятия два пъти седмично. Продължителността на един урок е два часа.

Моят подход към ученето

Пуснах 5 групи. Изглежда много за две години, но почти винаги водех 2 групи паралелно.

Опитвал съм различни подходи.

Първият вариант е една двойка да бъде отделена за презентация с теория. Втората двойка е чиста практика. Този подход по някакъв начин проработи, но според мен не беше много ефективен.

Вторият вариант, до който стигнах и върху който работя сега, е да не отделям цяла двойка на теория. Вместо това смесвам кратки части от теорията за 5-10 минути и веднага ги подсилвам с практически примери. Този подход работи по-добре.

Ако има достатъчно време, викам учениците при мен, сядам ги на моя лаптоп и те сами правят практически примери. Работи чудесно, но за съжаление отнема много време.

Не всеки стига до края

Откровение за мен беше фактът, че не цялата група стига до края на курса.

По мои наблюдения само половината от студентите пишат финалния проект. Повечето от тях се елиминират през първата част на курса. И тези, които са стигнали до втората част, обикновено не падат.

Те напускат по различни причини.

Първият е сложността. Каквото и да казват, Java не е най-простият език. За да напишете дори най-простата програма, трябва да разберете концепцията за клас, метод. И да разбереш защо трябва да пишеш публичен статичен недействителен main(String[] arg) Има още няколко концепции за разбиране.

Сравнете това с Turbo Pascal, с което много хора започнаха, включително и аз:

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

Доколкото знам, училището ще реши този проблем, като въведе допълнително изпитване. Сега не всеки може да изучава Java. Това все още е на етап концепция, но стъпката очевидно е правилната.

И втората причина е като на снимката по-долу:

E-Dobavki - уеб услуга за търсене на хранителни добавки в Java и Spring Boot, написана от мои ученици

Хората често си мислят, че програмирането означава да пишете много текст и да получавате много пари за това. Като копирайтър, само повече пари.

Реалността е малко по-различна. Много рутинен код, неочевидни грешки, постоянен процес на обучение. Интересно е, но не за всеки.

Това е статистиката. Отначало това ме разстрои, помислих си, че може би правя нещо нередно. Сега разбирам, че статистиката е приблизително еднаква за повечето курсове. Сега не се тревожа за това, но уча тези хора, които се интересуват от това.

Идея за обслужване

След като студентите завършиха целия курс, беше време да напишат окончателния проект. Имаше различни идеи. Те предлагаха листове със задачи, проекти за управление на проекти и нещо друго.

Исках да направя нещо просто, но полезно. Критерият ми беше прост - дали аз и моите приятели можем да го използваме. Уеб услугата за търсене на хранителни добавки отговаря на тези изисквания.

Идеята е проста. Когато купувате продукт в магазин, виждате някаква Е-добавка в състава. От кода не става ясно колко е опасно или не (а има и опасни добавки, които са забранени в много страни).

Отваряте уебсайта, въвеждате името на добавката (номер, едно от алтернативните имена) и получавате резюме на добавката:

E-Dobavki - уеб услуга за търсене на хранителни добавки в Java и Spring Boot, написана от мои ученици

Има подобни проекти. Можете също така просто да въведете добавката в Google, въпреки че не винаги показва информацията правилно.

Но тъй като проектът е образователен, горните трудности не ни спряха :)

Изпълнение

Всички писаха на Java, изходния код на проекта в Github.

Бяхме 7 души, включително и аз. Всеки направи заявка за изтегляне и аз или друг човек от групата приехме тази заявка за изтегляне.

Изпълнението на проекта отне около месец - от озвучаването на идеята до състоянието, което виждате сега.

Добавки за разбор

Първото нещо, което направи един от студентите, освен основното създаване на рамка около базата данни (обекти, хранилища и т.н.), беше анализиране на добавки от съществуващ информационен сайт.

Това беше необходимо за тестване на останалите точки. Не е необходим допълнителен код за попълване на базата данни. След като анализирахме бързо няколко добавки, бихме могли допълнително да тестваме потребителския интерфейс, сортирането и филтрирането.

Spring Boot ви позволява да създавате множество профили. Профилът е файл с настройки.

За средата за разработка използвахме профил с локална H2 СУБД и HTTP порт по подразбиране (8080). Така при всяко стартиране на приложението базата данни се изчиства. Парсерът в този случай беше нещото, което ни спаси.

Търсене и филтриране

Важен момент е търсенето и филтрирането. Човек в магазин трябва бързо да кликне върху кода на добавката или някое от имената и да получи резултата.

Следователно добавъчният обект има няколко полета. Това е кодът на добавката, алтернативни имена, описание. Търсенето се извършва с Like във всички полета едновременно. И ако въведете [123] или [амарант], ще получите същия резултат.

Направихме всичко това въз основа на спецификациите. Това е част от Spring, която ви позволява да опишете основни условия за търсене (като някакво поле, например), и след това да комбинирате тези условия (ИЛИ или И).

След като сте написали дузина спецификации, можете да задавате сложни запитвания като „всички опасни оцветяващи добавки, които имат думата [червено] в описанието.“

От гледна точка на работата с базата данни на Spring, намирам я за много удобна. Това е особено вярно при работа със сложни заявки. Разбирам, че това има своите допълнителни разходи и ръчно написана и оптимизирана SQL заявка ще се изпълнява по-бързо.

Но също така се придържам към гледната точка, че няма нужда всичко да се оптимизира предварително. Първата версия трябва да стартира, да работи и да позволява подмяна на отделни части. И ако има натоварване, тези отделни части трябва да бъдат пренаписани.

Охрана

Просто е. Има потребители с роля ADMIN - те могат да редактират допълнения, да ги изтриват и да добавят нови.

Има и други потребители (регистрирани или не). Те могат само да разглеждат списъка с добавки и да търсят тези, от които се нуждаят.

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. Не е трудно да се направи, а доверието на ПС се повишава.

Какво предстои за проекта?

Тогава, всъщност, изборът е на момчетата. Първоначалната идея на проекта включваше и база данни с продукти с връзки към добавки.

Въведете „Snickers“ и вижте какви хранителни добавки съдържа.

Още в началото на проекта знаех, че няма да имаме продукти :) Затова започнахме само с добавки.

Сега можете да добавяте продукти и да въвеждате допълнителни. кифлички. Ако това е обширна база данни, ще има потребители.

Разгръщане

Проектът беше внедрен на VPS, Aruba Cloud. Това е най-евтиният VPS, който можем да намерим. Използвам този доставчик повече от година за моите проекти и съм приятно доволен от него.

VPS характеристики: 1 GB RAM, 1 CPU (не знам за честотата), 20 GB SSD. За нашия проект това е достатъчно.

Проектът е изграден с помощта на обичайния пакет mvn clean. Резултатът е дебел буркан - изпълним файл с всички зависимости.

За да автоматизирам малко всичко това, написах няколко bash скрипта.

Първият скрипт изтрива стария jar файл и създава нов.

Вторият скрипт стартира сглобения буркан, като му предава името на необходимия профил. Този профил съдържа информация за връзка с база данни.

DB - MySQL на същия VPS.

Общото рестартиране на проекта включва:

  • влезте във VPS чрез SSH
  • изтеглете най-новите git промени
  • стартирайте local-jar.sh
  • убийте работещо приложение
  • стартирайте launch-production.sh

Тази процедура отнема три минути. Това ми изглежда като умен избор за такъв малък проект.

сложност

Основните трудности при създаването на проекта бяха от организационен характер.

Има група хора, които изглежда знаят как да програмират, но не много добре. Те знаят нещо, но все още не могат да го приложат. И сега те трябва да завършат проекта за един месец.

Набелязах условен лидер на екипа в тази група. Той поддържа Google Doc със списък със задачи, разпределя задачи и контролира тяхното приемане. Той също така прие заявки за изтегляне.

Освен това помолих учениците всяка вечер да пишат кратък отчет за работата, която са свършили по проекта. Ако не сте направили нищо, добре, просто напишете „не направих нищо“. Това е страхотна практика и ви напряга малко. Не всички спазват това правило, за съжаление.

Целта на цялото това движение беше проста. Сформирайте екип, макар и за кратко, за да работите заедно.

Исках момчетата да почувстват, че работата им е важна. Разберете, че те не пишат сферичен код във вакуум. И това, което правят заедно, е проект, който хората след това ще използват.

Първите седмица или две бяха натрупване. Обектите и малките ангажименти бяха направени бавно. Малко по малко ги раздвижих и работата стана по-забавна. Комуникацията в чата стана по-оживена, студентите предложиха своите допълнения.

Смятам, че целта е постигната. Проектът е готов, момчетата придобиха малко опит в работата в екип. Има видим, осезаем резултат, който може да бъде показан на приятели и доразвит.

Данни

Ученето е интересно.

След всеки час се връщах емоционално развълнуван. Опитвам се да направя всеки чифт уникален и да предам възможно най-много знания.

Хубаво е, когато групата, на която преподавам, стигне до финал. Особено готино е, когато момчетата пишат „Намерих си работа, всичко е наред, благодаря“. Дори и да е младши, дори и да не са най-големите пари в началото. Но най-важното е, че направиха крачка към желанията си и успяха.

Въпреки че статията се оказа доста обемна, със сигурност не беше възможно да обхване всички точки. Затова напишете вашите въпроси в коментарите.

Източник: www.habr.com

Добавяне на нов коментар