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, сервлетҳо. Оянда баҳор аст, каме дар бораи git ва maven. Ва донишҷӯён лоиҳаҳои ниҳоӣ менависанд.

Ҳама омӯзишҳо ба модулҳо тақсим карда мешаванд. Ман дар як ҳафта ду маротиба дарс мегузаронам. Давомнокии як дарс ду соат аст.

Муносибати ман ба омӯзиш

Ман 5 гурӯҳро озод кардам. Ба назар чунин мерасад, ки ду сол хеле зиёд аст, аммо ман қариб ҳамеша 2 гурӯҳро дар як вақт роҳбарӣ мекардам.

Ман усулҳои гуногунро санҷидаам.

Варианти аввал ин аст, ки як ҷуфт барои муаррифӣ бо назария ҷудо карда мешавад. Ҷуфти дуюм амалияи пок аст. Ин равиш гӯё кор кард, аммо ба назари ман чандон муассир набуд.

Варианти дуюме, ки ман ба он омадам ва ҳоло дар болои он кор карда истодаам, ин аст, ки як ҷуфти пурраро ба назария бахшидан нест. Ба ҷои ин, ман қисмҳои кӯтоҳи назарияро дар тӯли 5-10 дақиқа омехта мекунам ва фавран онҳоро бо мисолҳои амалӣ мустаҳкам мекунам. Ин равиш беҳтар кор мекунад.

Агар вақти кофӣ бошад, ман донишҷӯёнро ба ҷои худ даъват мекунам, онҳоро ба ноутбуки худ мешинонам ва онҳо худашон мисолҳои амалӣ мекунанд. Ин хеле хуб кор мекунад, аммо мутаассифона вақти зиёдро мегирад.

На ҳама ба охир мерасад

Ваҳй барои ман ин буд, ки на тамоми гурӯҳ ба охири курс мерасанд.

Аз руи мушохидахои ман танхо нисфи талабагон лоихаи чамъбастиро менависанд. Аксарияти онҳо дар давоми қисми якуми курс бартараф карда мешаванд. Ва онҳое, ки ба қисми дуюм расидаанд, одатан намеафтанд.

Онҳо бо сабабҳои гуногун тарк мекунанд.

Якум - мураккабӣ. Новобаста аз он ки онҳо чӣ мегӯянд, Java соддатарин забон нест. Барои навиштани ҳатто соддатарин барнома шумо бояд мафҳуми синф, методро фаҳмед. Ва барои фаҳмидани он ки чаро шумо бояд нависед асосии беэътибории оммавӣ (String [] arg) Якчанд мафҳумҳои дигар барои фаҳмидан вуҷуд доранд.

Инро бо Турбо Паскал муқоиса кунед, ки бисёриҳо бо он оғоз карданд, аз ҷумла ман:

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

То ҷое ки ман медонам, мактаб ин мушкилиро тавассути ҷорӣ кардани санҷиши иловагӣ ҳал мекунад. Ҳоло на ҳама метавонанд Java-ро омӯзанд. Ин ҳанӯз дар марҳилаи консепсия аст, аммо қадами дуруст аст.

Ва сабаби дуюм ба монанди дар расми зер аст:

E-Dobavki - хидмати веб барои ҷустуҷӯи иловаҳои ғизоӣ дар Java ва Spring Boot, ки аз ҷониби донишҷӯёни ман навишта шудааст

Одамон аксар вақт фикр мекунанд, ки барномасозӣ ин навиштани матни зиёд ва гирифтани пули зиёд барои он аст. Мисли копирайтер, танҳо пули бештар.

Воқеият каме дигар аст. Бисёр кодҳои муқаррарӣ, хатогиҳои ноаён, раванди омӯзиши доимӣ. Ин ҷолиб аст, аммо на барои ҳама.

Инҳо омор мебошанд. Дар аввал ин маро ғамгин кард, гумон кардам, ки шояд кори нодуруст карда бошам. Ҳоло ман фаҳмидам, ки омор барои аксари курсҳо тақрибан якхела аст. Ҳоло ман дар ин бора хавотир намешавам, балки ба онҳое, ки ба он таваҷҷӯҳ доранд, таълим медиҳам.

Идеяи хидмат

Вақте ки донишҷӯён тамоми курсро хатм карданд, вақти навиштани лоиҳаи ниҳоӣ расид. Фикрҳои гуногун буданд. Онҳо варақаҳои ToDo, лоиҳаҳои идоракунии лоиҳа ва чизи дигарро пешниҳод карданд.

Ман мехостам як чизи оддӣ, вале муфид кунам. Меъёри ман оддӣ буд - оё ман ва дӯстонам аз он истифода карда метавонистем. Хизматрасонии веб барои ҷустуҷӯи иловаҳои ғизо ба ин талабот ҷавобгӯ буд.

Идея оддӣ аст. Вақте ки шумо аз мағоза маҳсулот мехаред, шумо дар таркиб як намуди иловагии электрониро мебинед. Аз кодекс маълум нест, ки он то чӣ андоза хатарнок аст ё не (ва инчунин иловаҳои хатарнок мавҷуданд, ки дар бисёр кишварҳо манъ карда шудаанд).

Шумо вебсайтро мекушоед, номи замимаро ворид кунед (рақам, яке аз номҳои алтернативӣ) ва мухтасари иловаро гиред:

E-Dobavki - хидмати веб барои ҷустуҷӯи иловаҳои ғизоӣ дар Java ва Spring Boot, ки аз ҷониби донишҷӯёни ман навишта шудааст

Чунин лоиҳаҳо мавҷуданд. Шумо инчунин метавонед иловаро ба Google ворид кунед, гарчанде ки он на ҳамеша маълумотро дуруст нишон медиҳад.

Аммо азбаски лоиҳа таълимӣ аст, душвориҳои дар боло овардашуда моро боздошта натавонистанд :)

Реализация

Ҳама дар Java навиштанд, рамзи сарчашмаи лоиҳа дар Github.

Мо 7 нафар будем, аз ҷумла ман. Ҳама дархости ҷалб карданд ва ман ё як нафари дигар аз гурӯҳ ин дархостро қабул кардам.

Татбиқи лоиҳа тақрибан як моҳ тӯл кашид - аз садо додани идея то ҳолате, ки шумо ҳоло мебинед.

Иловаҳои таҳлилӣ

Аввалин коре, ки яке аз донишҷӯён анҷом дод, ба ғайр аз бунёди асосии чаҳорчӯба дар атрофи пойгоҳи додаҳо (объектҳо, анборҳо ва ғайра) таҳлили иловаҳо аз сайти иттилоотии мавҷуда буд.

Ин барои санҷидани нуқтаҳои боқимонда лозим буд. Барои пур кардани пойгоҳи додаҳо рамзи иловагӣ лозим нест. Якчанд иловаҳоро зуд таҳлил карда, мо метавонем минбаъд UI, ҷудокунӣ ва филтрро санҷем.

Spring Boot ба шумо имкон медиҳад, ки профилҳои сершумор эҷод кунед. Профил як файл бо танзимот аст.

Барои муҳити dev, мо профилро бо DBMS маҳаллӣ H2 ва порти пешфарзи HTTP (8080) истифода бурдем. Ҳамин тариқ, ҳар боре, ки барнома оғоз шуд, базаи маълумот тоза карда мешуд. Таҳлилгар дар ин ҳолат чизе буд, ки моро наҷот дод.

Ҷустуҷӯ ва филтр

Нуктаи муҳим ин ҷустуҷӯ ва филтр аст. Шахсе дар мағоза бояд зуд рамзи илова ё яке аз номҳоро пахш кунад ва натиҷа гирад.

Аз ин рӯ, объекти Additive дорои якчанд майдонҳо мебошад. Ин рамзи иловагӣ, номҳои алтернативӣ, тавсиф аст. Ҷустуҷӯ бо истифода аз Like дар ҳама соҳаҳо дар як вақт анҷом дода мешавад. Ва агар шумо [123] ё [амарант] ворид кунед, шумо ҳамон натиҷа мегиред.

Мо ҳама инро дар асоси мушаххасот анҷом додем. Ин як қисми баҳор аст, ки ба шумо имкон медиҳад, ки шартҳои асосии ҷустуҷӯро тавсиф кунед (масалан, баъзе майдонҳо) ва сипас ин шартҳоро муттаҳид кунед (Ё ё ВА).

Пас аз навиштани даҳҳо мушаххасот, шумо метавонед саволҳои мураккабро пурсед, ба монанди "ҳамаи иловаҳои рангҳои хатарнок, ки дар тавсиф калимаи [сурх] доранд."

Дар робита ба кор бо базаи Spring, ман онро хеле қулай меҳисобам. Ин махсусан ҳангоми кор бо дархостҳои мураккаб дуруст аст. Ман мефаҳмам, ки ин хароҷоти худро дорад ва дархости ба таври дастӣ навишташуда ва оптимизатсияшудаи SQL тезтар иҷро мешавад.

Аммо ман инчунин ба нуқтаи назари он пайравӣ мекунам, ки ҳама чизро пешакӣ оптимизатсия кардан лозим нест. Версияи якум бояд оғоз, кор кунад ва иваз кардани қисмҳои алоҳидаро иҷозат диҳад. Ва агар боре вуҷуд дошта бошад, ин қисмҳои алоҳида бояд аз нав навишта шаванд.

Амният

Ин оддӣ аст. Истифодабарандагоне ҳастанд, ки нақши ADMIN доранд - онҳо метавонанд иловаҳоро таҳрир кунанд, онҳоро нест кунанд ва иловаҳои нав илова кунанд.

Ва корбарони дигар ҳастанд (ба қайд гирифта шудаанд ё не). Онҳо метавонанд танҳо рӯйхати иловаҳоро аз назар гузаронанд ва чизҳои лозимиро ҷустуҷӯ кунанд.

Spring Security барои ҷудо кардани ҳуқуқҳо истифода мешуд. Маълумоти корбар дар пойгоҳи додаҳо нигоҳ дошта мешавад.

Истифодабарандагон метавонанд сабти ном шаванд. Ҳоло чизе намедиҳад. Агар донишҷӯён ба рушди хидмат идома диҳанд ва баъзе функсияҳои фардӣ ҷорӣ кунанд, бақайдгирӣ муфид хоҳад буд.

Ҷавобгарӣ ва Bootstrap

Нуктаи навбатӣ мутобиқшавӣ аст. Дар мавриди хидмати мо (ҳадди ақал тавре ки мо онро дидем), аксарияти корбарон бо телефонҳои мобилӣ хоҳанд буд. Ва шумо бояд иловаро аз телефони мобилии худ зуд тамошо кунед.

Барои он ки бо CSS азоб накашем, мо Bootstrap-ро гирифтем. Арзон, шодмон ва ба назар зебо.

Ман интерфейсро идеалӣ гуфта наметавонам. Саҳифаи асосӣ боз ҳам камтар аст ва саҳифа барои тавсифи муфассали илова танг аст, дар телефонҳои мобилӣ онро васеътар кардан лозим аст.

Танхо гуфта метавонам, ки кушиш мекардам, ки ба кор харчи камтар халал расонад. Ин ҳоло ҳам як лоиҳаи донишҷӯён аст. Ва албатта, бачаҳо ин гуна лаҳзаҳоро баъдтар ислоҳ карда метавонанд.

Як дақиқаи оптимизатсияи SEO

Азбаски ман дар тӯли зиёда аз ду сол дар вебсайтҳо ва ҳама чизҳои марбут ба SEO алоқаманд будам, ман наметавонистам лоиҳаеро бидуни ҳадди аққал оптимизатсияи асосии SEO нашр кунам.

Дарвоқеъ, ман барои ҳар як изофа насли қолаби унвон ва тавсифро сохтам. URL қариб CNC аст, гарчанде ки онро кӯтоҳтар кардан мумкин аст.

Ман инчунин ҳисобкунакҳои иштирокро илова кардам. Сайтро ба Webmaster Yandex ва Google Search Console барои назорат кардани огоҳиҳо аз системаҳои ҷустуҷӯӣ илова кард.

Ин кифоя нест. Шумо инчунин бояд robots.txt ва sitemap.xml -ро барои индексатсияи пурра илова кунед. Аммо боз ҳам, ин як лоиҳаи донишҷӯён аст. Ман ба онҳо мегӯям, ки чӣ кор кардан лозим аст ва агар хоҳанд, ин корро мекунанд.

Шумо бояд шаҳодатномаи SSL замима кунед. Let's Encrypt ройгон низ кор хоҳад кард. Ман инро барои Spring Boot кардам. Ичрои ин кор душвор нест, боварии псш меафзояд.

Дар оянда лоиҳа чӣ аст?

Пас, дар асл, интихоб ба бачаҳо вобаста аст. Идеяи аслии лоиҳа инчунин пойгоҳи додаҳои маҳсулотро бо истинод ба иловаҳо дар бар мегирад.

"Snickers" -ро ворид кунед ва бубинед, ки он чӣ гуна иловаҳои ғизоӣ дорад.

Ҳатто дар оғози лоиҳа, ман медонистам, ки мо ягон маҳсулот надорем :) Аз ин рӯ, мо танҳо бо иловаҳо оғоз кардем.

Акнун шумо метавонед маҳсулот илова кунед ва маҳсулоти иловагӣ пешниҳод кунед. булочкахо. Агар он махзани васеъ бошад, корбарон хоҳанд буд.

Ҷойгиршавӣ

Лоиҳа дар VPS, Aruba Cloud ҷойгир карда шудааст. Ин арзонтарин VPS аст, ки мо ёфта метавонем. Ман зиёда аз як сол ин провайдерро барои лоиҳаҳои худ истифода мебарам ва ман аз он хушҳолам.

Хусусиятҳои VPS: 1 ГБ RAM, 1 CPU (ман дар бораи басомад намедонам), 20 ГБ SSD. Барои лоиҳаи мо ин кофӣ аст.

Лоиҳа бо истифода аз бастаи муқаррарии mvn тоза сохта шудааст. Натиҷа як кӯзаи фарбеҳ аст - файли иҷрошаванда бо ҳама вобастагӣ.

Барои каме автоматӣ кардани ҳамаи ин, ман якчанд скриптҳои bash навиштам.

Скрипти аввал файли jar-ро нест мекунад ва файли нав месозад.

Скрипти дуюм кӯзаи ҷамъшударо оғоз мекунад ва ба он номи профили лозимиро медиҳад. Ин профил дорои маълумоти пайвастшавӣ ба пойгоҳи додаҳо мебошад.

DB - MySQL дар ҳамон VPS.

Бозсозии умумии лоиҳа дар бар мегирад:

  • ба VPS тавассути SSH ворид шавед
  • тағйироти охирини gitро зеркашӣ кунед
  • local-jar.sh кор кунед
  • барномаи иҷрошавандаро кушед
  • launch-production.sh кор кунед

Ин тартиб се дақиқа мегирад. Ин барои ман як интихоби оқилона барои чунин як лоиҳаи хурд ба назар мерасад.

Душвориҳо

Мушкилоти асосии эҷоди лоиҳа характери ташкилӣ доштанд.

Як гурӯҳи одамоне ҳастанд, ки гӯё барномасозиро медонанд, аммо чандон хуб нестанд. Онҳо чизеро медонанд, аммо то ҳол онро амалӣ карда наметавонанд. Ва холо онхо бояд лоихаро дар зарфи як мох анчом диханд.

Дар ин гурУх сардори бригадаи шартй муайян кардам. Вай Google Doc-ро бо рӯйхати вазифаҳо нигоҳ медошт, вазифаҳоро тақсим мекард ва қабули онҳоро назорат мекард. Вай инчунин дархостҳои ҷалбро қабул кард.

Ман инчунин аз донишҷӯён хоҳиш кардам, ки ҳар бегоҳ дар бораи коре, ки дар лоиҳа анҷом додаанд, гузориши кӯтоҳ нависанд. Агар шумо ҳеҷ коре накарда бошед, хуб, танҳо "ҳеҷ чиз накардаед" нависед. Ин як таҷрибаи бузург аст ва шуморо каме ташаннуҷ мекунад. Ба ин коида, мутаассифона, на хама риоя карданд.

Максади хамаи ин харакат оддй буд. Барои якҷоя кор кардан, ҳатто барои муддати кӯтоҳ, як даста ташкил кунед.

Ман мехостам, ки бачаҳо эҳсос кунанд, ки кори онҳо муҳим аст. Фаҳмед, ки онҳо дар вакуум рамзи сферикӣ наменависанд. Ва он чизе, ки онҳо якҷоя мекунанд, лоиҳаест, ки одамон баъд аз он истифода хоҳанд кард.

Як-ду ҳафтаи аввал ободкорӣ буд. Субъектхо ва ухдадорихои хурд суст ичро карда шуданд. Охиста-охиста онхоро ба хаячон меовардам ва кор шавковар мешуд. Муошират дар чат зинда шуд, донишҷӯён иловаҳои худро пешниҳод карданд.

Боварй дорам, ки максад ба амал омад. Лоиҳа анҷом ёфт, бачаҳо таҷрибаи каме дар як даста кор карданд. Натичаи аёнй, ба назар намоёне мавчуд аст, ки онро ба дустон нишон додан ва минбаъд инкишоф додан мумкин аст.

натиҷаҳои

Омӯзиш ҷолиб аст.

Пас аз ҳар дарс ман бо эҳсосот бармегаштам. Ман кӯшиш мекунам, ки ҳар як ҷуфтро беназир созам ва ба қадри имкон дониши бештар расонам.

Вақте ки гурӯҳе, ки ман дарс медиҳам, ба финал мебарояд, хуш аст. Ин махсусан хуб аст, вақте ки бачаҳо менависанд "Ман кор гирифтам, ҳамааш хуб аст, ташаккур". Ҳатто агар он ҷавон бошад, ҳатто агар он дар аввал пули калонтарин набошад. Вале аз хама мухимаш он аст, ки онхо ба суи орзухои худ кадам гузоштанд ва ба он муваффак шуданд.

Ҳарчанд мақола хеле ҳаҷм буд, албатта, ҳама нуктаҳоро фаро гирифтан имкон надошт. Аз ин рӯ, саволҳои худро дар шарҳҳо нависед.

Манбаъ: will.com

Илова Эзоҳ