Е-Добавки - веб сервис за претраживање адитива у храни у Јави и Спринг Боот-у, који су написали моји ученици

Увод

Тако се десило да последње скоро две године предајем програмирање у једној од ИТ школа у Кијеву. Почео сам да радим ово само из забаве. Једном сам написао блог о програмирању, а онда сам га одустао. Али жеља да се испричају корисне ствари заинтересованим људима није нестала.

Мој главни језик је Јава. На њој сам писао игрице за мобилне телефоне, софтвер за радио комуникације и разне веб сервисе. И предајем Јаву.

Овде желим да испричам причу о тренингу моје последње групе. Како су прошли од почетка обуке до писања функционалног веб сервиса. Користан веб сервис за проналажење додатака исхрани. Бесплатно, без реклама, регистрације и СМС-а.

Сама услуга је овде - Е-Добавки.цом.

Е-Добавки - веб сервис за претраживање адитива у храни у Јави и Спринг Боот-у, који су написали моји ученици

Пројекат је едукативан и не садржи никакво оглашавање. Како сам разумео из ову публикацију, можете дати везе до таквих пројеката.

Пре него што опишем сам пројекат, рећи ћу вам мало о процесу учења групе без овога, слика ће бити непотпуна.

9 месеци обуке

У школи у којој предајем, курс Јава је подељен на 2 дела. Укупно, курс траје отприлике 9 месеци, са свим паузама (новогодишњи празници, време за писање средњих пројеката).

Први део упознаје ученике са основним појмовима језика. Променљиве, методе, основе ООП-а и све те ствари.

Други део курса предвиђа да студент већ мање-више разуме како да пише на Јави, и може му се дати „одрасли“ технолошки скуп. Све почиње са СКЛ-ом, затим ЈДБЦ-ом, хибернацијом. Затим ХТТП, сервлети. Следеће је пролеће, мало о гит-у и мавену. И ученици пишу завршне пројекте.

Сва обука је подељена на модуле. Водио сам часове два пута недељно. Трајање једног часа је два сата.

Мој приступ учењу

Пустио сам 5 група. Чини се много за две године, али сам скоро увек водио 2 групе паралелно.

Покушао сам различите приступе.

Прва опција је да се један пар додели за презентацију са теоријом. Други пар је чиста пракса. Овај приступ је некако функционисао, али по мом мишљењу није био баш ефикасан.

Друга опција до које сам дошао и на којој сада радим је да не посветим читав пар теорији. Уместо тога, мешам кратке делове теорије 5-10 минута и одмах их појачавам практичним примерима. Овај приступ ради боље.

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

Не стижу сви до краја

За мене је откриће била чињеница да цела група не стиже до краја курса.

Према мојим запажањима, само половина ученика напише завршни пројекат. Већина њих се елиминише током првог дела курса. А они који су стигли до другог дела обично не падају.

Одлазе из разних разлога.

Први је сложеност. Без обзира шта кажу, Јава није најједноставнији језик. Да бисте написали чак и најједноставнији програм, морате разумети концепт класе, методе. И да разумете зашто треба да пишете публиц статиц воид маин(Стринг[] арг) Треба разумети још неколико концепата.

Упоредите ово са Турбо Пасцалом, са чиме су многи људи почели, укључујући и мене:

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

Колико ја знам, школа ће овај проблем решити увођењем додатног тестирања. Сада не може свако да проучава Јаву. Ово је још увек у фази концепта, али корак је очигледно прави.

А други разлог је као на слици испод:

Е-Добавки - веб сервис за претраживање адитива у храни у Јави и Спринг Боот-у, који су написали моји ученици

Људи често мисле да је програмирање куцање пуно текста и добијање много новца за то. Као копирајтер, само више новца.

Реалност је мало другачија. Много рутинског кода, неочигледних грешака, сталан процес учења. Занимљиво је, али не за свакога.

Ово је статистика. У почетку ме је то узнемирило, помислио сам да можда радим нешто погрешно. Сада схватам да је статистика приближно иста за већину курсева. Сада не бринем о томе, већ подучавам оне који су заинтересовани за то.

Идеја за услугу

Када су студенти завршили цео курс, дошло је време да напишу завршни пројекат. Било је различитих идеја. Понудили су ТоДо листове, пројекте управљања пројектима и још нешто.

Хтео сам да урадим нешто једноставно, али корисно. Мој критеријум је био једноставан – да ли то моји пријатељи и ја можемо да искористимо. Веб сервис за тражење адитива у храни испунио је ове захтеве.

Идеја је једноставна. Када купите производ у продавници, видите неку врсту Е-адитива у саставу. Из кодекса није јасно колико је опасно или не (а постоје и опасни адитиви који су забрањени у многим земљама).

Отворите веб локацију, унесете назив додатка (број, један од алтернативних назива) и добијете резиме додатка:

Е-Добавки - веб сервис за претраживање адитива у храни у Јави и Спринг Боот-у, који су написали моји ученици

Постоје слични пројекти. Такође можете једноставно да унесете адитив у Гоогле, иако он не приказује увек информације исправно.

Али пошто је пројекат едукативан, горе наведене потешкоће нас нису спречиле :)

Имплементација

Сви су писали на Јави, изворни код пројекта на Гитхуб-у.

Било нас је 7, укључујући и мене. Сви су упутили захтев за повлачење, а ја, или друга особа из групе, прихватио сам овај захтев за повлачење.

Реализација пројекта трајала је око месец дана - од изношења идеје до стања које видите сада.

Парсинг адитиви

Прва ствар коју је један од ученика урадио, поред основног креирања оквира око базе података (ентитета, спремишта, итд.), била је рашчлањивање додатака са постојећег информационог сајта.

Ово је било неопходно за тестирање преосталих тачака. Није потребан додатни код за попуњавање базе података. Након што смо брзо анализирали неколико адитива, могли смо даље да тестирамо кориснички интерфејс, сортирање и филтрирање.

Спринг Боот вам омогућава да креирате више профила. Профил је датотека са подешавањима.

За развојно окружење користили смо профил са локалним Х2 ДБМС-ом и подразумеваним ХТТП портом (8080). Дакле, сваки пут када је апликација покренута, база података је очишћена. Парсер у овом случају је била ствар која нас је спасила.

Претрага и филтрирање

Важна тачка је претраживање и филтрирање. Особа у продавници мора брзо да кликне на шифру додатка или једно од имена и добије резултат.

Дакле, адитивни ентитет има неколико поља. Ово је код адитива, алтернативни називи, опис. Претрага се врши коришћењем Лике у свим пољима истовремено. А ако унесете [123] или [амарант], добићете исти резултат.

Све смо то урадили на основу Спецификација. Ово је део Спринг који вам омогућава да опишете основне услове претраживања (као што је неко поље, на пример), а затим комбинујете ове услове (ИЛИ или И).

Након што сте написали десетак спецификација, можете поставити сложене упите као што су „сви опасни адитиви за бојење који имају реч [црвено] у опису“.

Што се тиче рада са Спринг базом података, сматрам да је веома згодно. Ово је посебно тачно када радите са сложеним упитима. Разумем да ово има своје трошкове и да ће ручно написан и оптимизован СКЛ упит радити брже.

Али такође се држим тачке гледишта да нема потребе да се све унапред оптимизује. Прва верзија мора да почне, да ради и да омогући замену појединачних делова. А ако постоји оптерећење, ове појединачне делове треба поново написати.

безбедност

То је једноставно. Постоје корисници са улогом АДМИН – они могу уређивати додатке, брисати их и додавати нове.

А постоје и други корисници (регистровани или не). Они могу само да прегледају листу адитива и траже оне који су им потребни.

Спринг Сецурити је коришћен за раздвајање права. Кориснички подаци се чувају у бази података.

Корисници се могу регистровати. Сада то не даје ништа. Ако студенти наставе да развијају услугу и уводе неке персонализоване функције, регистрација ће им добро доћи.

Респонзивност и Боотстрап

Следећа тачка је прилагодљивост. У случају наше услуге (бар како смо ми то видели), већина корисника ће бити са мобилним телефонима. И морате брзо да погледате додатак са свог мобилног телефона.

Да се ​​не бисмо мучили са ЦСС-ом, узели смо Боотстрап. Јефтино, весело и пристојно изгледа.

Интерфејс не могу назвати идеалним. Главна страница је још мање, а страница за детаљан опис адитива је уска на мобилним телефонима;

Могу само да кажем да сам се трудио да што мање ометам посао. Ово је још увек студентски пројекат. И наравно, момци ће касније моћи да исправе такве тренутке.

Минут СЕО оптимизације

Пошто сам више од две године блиско укључен у веб странице и све што је везано за СЕО, не бих могао да издам пројекат без барем основне СЕО оптимизације.

У ствари, направио сам шаблон за генерисање наслова и описа за сваки додатак. УРЛ је скоро ЦНЦ, иако може бити краћи.

Додао сам и бројаче присуства. Додан сајт у Иандек Вебмастер и Гоогле Сеарцх Цонсоле за праћење упозорења са претраживача.

То није довољно. Такође морате да додате роботс.ткт и ситемап.кмл за потпуно индексирање. Али опет, ово је студентски пројекат. Ја ћу им рећи шта треба да се уради, а ако желе, урадиће то.

Морате да приложите ССЛ сертификат. Бесплатни Лет'с Енцрипт ће такође радити. Урадио сам ово за Спринг Боот. То није тешко урадити, а поверење ПС се повећава.

Шта је следеће за пројекат?

Онда је, у ствари, избор на момцима. Првобитна идеја пројекта је такође укључивала базу података о производима са линковима ка адитивима.

Унесите „Сницкерс“ и погледајте које хранљиве адитиве садржи.

Још на почетку пројекта знао сам да нећемо имати производа :) Стога смо почели само са адитивима.

Сада можете додати производе и увести додатне. лепиње. Ако је у питању обимна база података, биће корисника.

Распоређивање

Пројекат је распоређен на ВПС, Аруба Цлоуд. Ово је најјефтинији ВПС који смо могли пронаћи. Користим овог провајдера више од годину дана за своје пројекте и пријатно сам задовољан њиме.

ВПС карактеристике: 1 ГБ РАМ-а, 1 ЦПУ (не знам за фреквенцију), 20 ГБ ССД. За наш пројекат ово је довољно.

Пројекат је направљен коришћењем уобичајеног пакета мвн цлеан. Резултат је дебела тегла - извршна датотека са свим зависностима.

Да бих све ово мало аутоматизовао, написао сам неколико басх скрипти.

Прва скрипта брише стару јар датотеку и прави нову.

Друга скрипта покреће састављену теглу, преносећи јој име потребног профила. Овај профил садржи информације о вези са базом података.

ДБ - МиСКЛ на истом ВПС-у.

Укупно поновно покретање пројекта укључује:

  • пријавите се на ВПС преко ССХ
  • преузмите најновије гит промене
  • покрените лоцал-јар.сх
  • убиј покренуту апликацију
  • покрените лаунцх-продуцтион.сх

Ова процедура траје три минута. Ово ми се чини као паметан избор за тако мали пројекат.

Тешкоће

Главне потешкоће у креирању пројекта биле су организационе природе.

Постоји група људи који изгледа знају да програмирају, али не баш добро. Они нешто знају, али то још увек не могу да примене. А сада треба да заврше пројекат за месец дана.

Идентификовао сам условног вођу тима у овој групи. Водио је Гоогле документ са листом задатака, дистрибуирао задатке и контролисао њихово прихватање. Такође је прихватио захтеве за повлачење.

Такође сам замолио ученике да свако вече напишу кратак извештај о раду који су радили на пројекту. Ако ништа нисте урадили, у реду, само напишите „ништа нисте урадили“. Ово је одлична вежба и мало вас напете. Нажалост, нису сви поштовали ово правило.

Сврха читавог овог покрета била је једноставна. Формирајте тим, макар и на кратко, да радите заједно.

Желео сам да момци осете да је њихов рад важан. Схватите да они не пишу сферни код у вакууму. А оно што раде заједно је пројекат који ће људи онда користити.

Прве недеље или две је било нагомилавање. Ентитети и мале обавезе су вршене споро. Мало по мало сам их узбуркао, и посао је постао забавнији. Комуникација у ћаскању је постала живља, ученици су понудили своје додатке.

Верујем да је циљ постигнут. Пројекат је завршен, момци су стекли мало искуства у раду у тиму. Постоји видљив, опипљив резултат који се може показати пријатељима и даље развијати.

Налази

Учење је занимљиво.

После сваког часа враћао сам се емотивно узбуђен. Трудим се да сваки пар буде јединствен и да пренесем што више знања.

Лепо је када група којој предајем дође до финала. Посебно је кул када момци напишу „Запослио сам се, све је у реду, хвала.“ Чак и ако је јуниор, чак и ако у почетку није највећи новац. Али најважније је да су направили корак ка својим жељама и успели су.

Иако се показало да је чланак прилично обиман, сигурно није било могуће покрити све тачке. Стога, напишите своја питања у коментарима.

Извор: ввв.хабр.цом

Додај коментар