E-Dobavki - менин окуучуларым жазган Java жана Spring Boot тилдеринде тамак-аш кошулмаларын издөө үчүн веб кызматы

тааныштыруу

Ошентип, акыркы эки жылдан бери мен Киевдеги IT-мектептердин биринде программалоо боюнча сабак берип келем. Мен муну жөн гана көңүл ачуу үчүн жасай баштадым. Мен бир жолу программалоо блогун жаздым, андан кийин баш тарттым. Бирок кызыккандарга пайдалуу нерселерди айткысы келген жок.

Менин негизги тилим Java. Мен ага уюлдук телефондор үчүн оюндарды, радио байланыш үчүн программалык камсыздоону жана ар кандай веб-сервистерди жаздым. Жана мен Java тилин үйрөтөм.

Бул жерде мен өзүмдүн акыркы тобумдун тренингинин тарыхын айткым келет. Алар машыгуудан баштап жумушчу веб-кызматты жазууга кантип өтүшкөн. Азык-түлүк кошулмаларын табуу үчүн пайдалуу интернет кызматы. Акысыз, эч кандай жарнама, каттоо жана SMS.

Кызматтын өзү бул жерде - E-Dobavki.com.

E-Dobavki - менин окуучуларым жазган Java жана Spring Boot тилдеринде тамак-аш кошулмаларын издөө үчүн веб кызматы

Долбоор билим берүүчү жана эч кандай жарнаманы камтыбайт. Менден түшүнгөндөй бул китеп, сиз мындай долбоорлорго шилтеме бере аласыз.

Долбоордун өзүн сүрөттөөдөн мурун, мен топтун окуу процесси жөнүндө бир аз айтып берем, ансыз сүрөт толук эмес болуп калат.

9 ай окуу

Мен сабак берген мектепте Java курсу 2 бөлүккө бөлүнгөн. Жалпысынан, курс бардык тыныгуулар менен болжол менен 9 айга созулат (Жаңы жылдык майрамдар, аралык долбоорлорду жазууга убакыт).

Биринчи бөлүк студенттерди тилдин негизги түшүнүктөрү менен тааныштырат. Өзгөрмөлөр, методдор, OOP негиздери жана башка нерселер.

Курстун экинчи бөлүгү студент Java тилинде кантип жазууну аздыр-көптүр түшүнөт жана ага “чоңдорго” технологиялык стек берилиши мүмкүн. Мунун баары SQL, андан кийин JDBC, Hibernate менен башталат. Андан кийин HTTP, сервлеттер. Кийинки жаз, Гит жана Мавен жөнүндө бир аз. Ал эми студенттер жыйынтыктоочу долбоорлорду жазышат.

Бардык тренингдер модулдарга бөлүнөт. Мен жумасына эки жолу сабак өткөрчүмүн. Бир сабактын узактыгы эки саат.

Менин окууга болгон мамилем

5 топ чыгардым. Эки жыл көп окшойт, бирок мен дээрлик дайыма 2 топту параллелдүү жетектегем.

Мен ар кандай ыкмаларды колдонуп көрдүм.

Биринчи вариант - теория менен презентация үчүн бир жуп бөлүнөт. Экинчи жуп таза практика болуп саналат. Бул ыкма кандайдыр бир жол менен иштеди, бирок, менин оюмча, анча натыйжалуу болгон жок.

Мен келген жана азыр иштеп жаткан экинчи вариант – бул теорияга бүтүндөй бир түгөйдү арнабоо. Анын ордуна 5-10 мүнөт теориянын кыска бөлүмдөрүн аралаштырып, дароо практикалык мисалдар менен бекемдейм. Бул ыкма жакшыраак иштейт.

Эгер жетиштүү убакыт болсо, студенттерди өз ордума чакырам, аларды ноутбукка отургузам, алар практикалык мисалдарды өздөрү жасашат. Бул сонун иштейт, бирок, тилекке каршы, ал көп убакытты талап кылат.

Баары эле аягына чыга бербейт

Мен үчүн бир ачылыш, бүт топ курстун аягына жете электиги болду.

Менин байкоом боюнча, студенттердин жарымы гана жыйынтыктоочу долбоорду жазат. Алардын көбү курстун биринчи бөлүгүндө жок кылынат. Ал эми экинчи бөлүккө жеткендер адатта түшпөйт.

Ар кандай себептер менен кетип калышат.

Биринчиси - татаалдык. Алар эмне деп айтышпасын, Java эң жөнөкөй тил эмес. Эң жөнөкөй программаны жазуу үчүн класс, метод деген түшүнүктү түшүнүү керек. Жана эмне үчүн жазуу керек экенин түшүнүү үчүн public static void main(String[] arg) Түшүнүш үчүн дагы бир нече түшүнүк бар.

Муну Турбо Паскаль менен салыштырыңыз, аны менен көптөгөн адамдар баштаган, анын ичинде мен:

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

Менин билишимче, мектеп бул маселени кошумча тестирлөө киргизүү менен чечет. Азыр бардыгы эле Java тилин үйрөнө албайт. Бул дагы эле концепция стадиясында, бирок кадам туура экени анык.

Ал эми экинчи себеби төмөндөгү сүрөттө окшош:

E-Dobavki - менин окуучуларым жазган Java жана Spring Boot тилдеринде тамак-аш кошулмаларын издөө үчүн веб кызматы

Адамдар көбүнчө программалоону көп текст терүү жана ал үчүн көп акча алуу деп ойлошот. Копирайтер сыяктуу, көбүрөөк акча.

Чындык бир аз башкача. Көптөгөн күнүмдүк коддор, байкалбаган мүчүлүштүктөр, тынымсыз окуу процесси. Бул кызыктуу, бирок баарына эмес.

Бул статистика. Башында бул мени капа кылды, балким туура эмес кылып жаткандырмын деп ойлодум. Азыр мен көпчүлүк курстар үчүн статистика болжол менен бирдей экенин түшүндүм. Азыр мен бул жөнүндө кабатырланбайм, бирок ага кызыккан адамдарга үйрөтөм.

Кызмат идеясы

Студенттер курсту бүтүргөндөн кийин, акыркы долбоорду жазууга убакыт келди. Ар кандай ойлор болгон. Алар ToDo баракчаларын, долбоорду башкаруу долбоорлорун жана башка нерселерди сунушташты.

Мен жөнөкөй, бирок пайдалуу нерсе кылгым келди. Менин критерийим жөнөкөй эле – досторум экөөбүз колдонсок болобу. Тамак-аш кошулмаларын издөө үчүн веб-сервис бул талаптарга жооп берген.

Идея жөнөкөй. Дүкөндөн товарды сатып алганда, курамында кандайдыр бир E-кошумчаны көрөсүз. Анын канчалык кооптуу же коркунучтуу эместиги коддон түшүнүксүз (жана көптөгөн өлкөлөрдө тыюу салынган кооптуу кошумчалар да бар).

Сиз веб-сайтты ачасыз, кошумчанын атын (номер, альтернативдик аталыштардын бири) киргизип, кошумчанын кыскача маалыматын аласыз:

E-Dobavki - менин окуучуларым жазган Java жана Spring Boot тилдеринде тамак-аш кошулмаларын издөө үчүн веб кызматы

Ушундай эле долбоорлор бар. Кошумчаны Google'га жөн эле терсеңиз болот, бирок ал маалыматты дайыма эле туура көрсөтө бербейт.

Бирок долбоор билим берүүчү болгондуктан, жогорудагы кыйынчылыктар бизди токтоткон жок :)

Реализация

Баары Java тилинде жазган, Github боюнча долбоордун баштапкы коду.

Мени кошкондо 7 киши болчубуз. Баары тартуу өтүнүчүн жасашты, мен же топтун башка адамы бул тартуу өтүнүчүн кабыл алдык.

Долбоорду ишке ашыруу бир айга жакын убакытты алды - идеяны айтуудан баштап, азыр көрүп жаткан абалга чейин.

Талдоочу кошумчалар

Студенттердин бири жасаган биринчи нерсе, маалымат базасынын (объекттер, репозиторийлер ж.б.) айланасында негиз түзүүдөн тышкары, учурдагы маалымат сайтынан кошумчаларды талдоо болду.

Бул калган пункттарды текшерүү үчүн зарыл болгон. Маалымат базасын толтуруу үчүн кошумча коддун кереги жок. Бир нече кошумчаларды тез талдап чыгып, биз UI, сорттоо жана чыпкалоону дагы сынай алабыз.

Spring Boot бир нече профилдерди түзүүгө мүмкүндүк берет. Профиль - бул жөндөөлөрү бар файл.

Өнүктүрүү чөйрөсү үчүн биз жергиликтүү H2 DBMS жана демейки HTTP порту (8080) менен профилди колдондук. Ошентип, тиркеме ишке кирген сайын маалымат базасы тазаланып турду. Бул учурда талдоочу бизди сактап калган нерсе болду.

Издөө жана чыпкалоо

Маанилүү жагдай издөө жана чыпкалоо болуп саналат. Дүкөндөгү адам кошумчанын кодун, же ысымдардын бирин тез басып, натыйжасын алышы керек.

Ошондуктан, кошумча объектинин бир нече талаалары бар. Бул кошумча код, альтернатива аттары, сыпаттамасы. Издөө бир эле учурда бардык талааларда Like колдонуу менен жүргүзүлөт. Ал эми [123] же [амарантты] киргизсеңиз, сиз да ушундай жыйынтыкка ээ болосуз.

Мунун баарын биз Техникалык шарттардын негизинде жасадык. Бул жаздын бир бөлүгү, ал негизги издөө шарттарын (мисалы, кээ бир талаа сыяктуу) сүрөттөп, андан кийин бул шарттарды (ЖЕ же ЖАНА) айкалыштырууга мүмкүндүк берет.

Ондогон спецификацияларды жазгандан кийин, сиз "сүрөттө [кызыл] деген сөз бар бардык коркунучтуу боёчу кошумчалар" сыяктуу татаал суроолорду бере аласыз.

Жазгы база менен иштөө жагынан мен аны абдан ыңгайлуу деп эсептейм. Бул, өзгөчө, татаал суроолор менен иштөөдө. Мен түшүнөм, мунун өзүнүн кошумча чыгымы бар жана кол менен жазылган жана оптималдаштырылган 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 ГБ оперативдүү эс тутум, 1 CPU (жыштык жөнүндө билбейм), 20 ГБ SSD. Биздин долбоор үчүн бул жетиштүү.

Долбоор кадимки mvn таза пакетин колдонуу менен курулган. Натыйжада май кумурасы - бардык көз карандылыктары бар аткарылуучу файл.

Мунун баарын бир аз автоматташтыруу үчүн мен бир нече баш сценарий жаздым.

Биринчи скрипт эски jar файлын жок кылып, жаңысын курат.

Экинчи скрипт чогултулган банканы ишке киргизип, ага керектүү профилдин атын берет. Бул профилде маалымат базасына туташуу маалыматы камтылган.

DB - ошол эле VPS боюнча MySQL.

Долбоорду толугу менен кайра баштоо төмөнкүлөрдү камтыйт:

  • SSH аркылуу VPSке кириңиз
  • акыркы git өзгөрүүлөрдү жүктөп алуу
  • local-jar.sh
  • иштеп жаткан колдонмону өлтүрүү
  • launch-production.sh иштет

Бул жол-жобосу үч мүнөт талап кылынат. Бул мен үчүн ушундай кичинекей долбоор үчүн акылдуу тандоо окшойт.

татаалдыгы

Долбоорду түзүүдөгү негизги кыйынчылыктар уюштуруучулук мүнөздө болгон.

Программалоону жакшы билген, бирок анча деле жакшы эмес адамдар тобу бар. Алар бир нерсени билишет, бирок дагы эле аны колдоно алышпайт. Эми алар долбоорду бир айдын ичинде бүтүрүшү керек.

Мен бул топко шарттуу команда лидерин аныктадым. Ал тапшырмалардын тизмеси менен Google Документти сактап, тапшырмаларды бөлүштүрдү жана алардын кабыл алынышын көзөмөлдөп турду. Ал ошондой эле тартуу өтүнүчтөрүн кабыл алды.

Мен ошондой эле студенттерден долбоордун үстүндө аткарган иштери боюнча ар бир кечинде кыскача отчет жазууну сурандым. Эгер сиз эч нерсе кылбасаңыз, анда "эч нерсе кылган жок" деп жазыңыз. Бул сонун практика жана сизди бир аз чыңалат. Тилекке каршы, баары эле бул эрежени сактаган жок.

Бул кыймылдын максаты жөнөкөй эле. Кыска убакытка болсо да биргелешип иштөө үчүн команда түзүңүз.

Мен жигиттер өздөрүнүн жумушу маанилүү экенин сезишсин дедим. Алар вакуумда сфералык кодду жазбай турганын түшүнүңүз. Ал эми алардын биргелешип жасап жаткан иштери эл кийин колдоно турган долбоор.

Биринчи бир-эки жумада курулуш болду. Субъекттер жана майда милдеттенмелер солгун кабыл алынган. Акырындык менен аларды козгоп, жумуш кызыктуу боло баштады. Чаттагы баарлашуу жанданды, студенттер өздөрүнүн кошумчаларын сунушташты.

Максат ишке ашты деп эсептейм. Долбоор бүттү, балдар бир командада иштөө тажрыйбасына ээ болушту. Досторго көрсөтүп, андан ары өнүктүрө турган көрүнгөн, сезилерлик натыйжа бар.

табылгалары

Окуу кызыктуу.

Ар бир сабактан кийин эмоционалдуу толкунданып кайтчумун. Ар бир жупту уникалдуу кылып, мүмкүн болушунча көбүрөөк билимди жеткирүүгө аракет кылам.

Мен окуткан топ финалга чыкканы жакшы. Балдардын "мен жумушка орноштум, баары жакшы, рахмат" деп жазганы өзгөчө сонун. Кенже болсо да, башында эң чоң акча болбосо да. Бирок эң негизгиси алар өз каалоолоруна кадам ташташып, ийгиликке жетишти.

Макала бир топ көлөмдүү болуп чыкса да, албетте, бардык пункттарды камтуу мүмкүн эмес болчу. Андыктан суроолоруңузду комментарийге жазыңыз.

Source: www.habr.com

Комментарий кошуу