E-Dobavki - tÄ«mekļa pakalpojums pārtikas piedevu meklÄ“Å”anai Java un Spring Boot, ko rakstÄ«juÅ”i mani studenti

Ievads

Tā sagadÄ«jās, ka pēdējos gandrÄ«z divus gadus es mācu programmÄ“Å”anu vienā no Kijevas IT skolām. Es sāku to darÄ«t Just For Fun. Kādreiz rakstÄ«ju programmÄ“Å”anas blogu, tad atteicos no tā. Taču vēlme interesentiem pastāstÄ«t noderÄ«gas lietas nav zudusi.

Mana galvenā valoda ir Java. Es tajā rakstīju spēles mobilajiem telefoniem, radiosakaru programmatūru un dažādus tīmekļa pakalpojumus. Un es mācu Java.

Å eit es vēlos pastāstÄ«t stāstu par savas pēdējās grupas apmācÄ«bu. Kā viņi pārgāja no apmācÄ«bas uzsākÅ”anas lÄ«dz darbojoÅ”a tÄ«mekļa pakalpojuma rakstÄ«Å”anai. NoderÄ«gs tÄ«mekļa pakalpojums uztura bagātinātāju atraÅ”anai. Bezmaksas, bez reklāmas, reÄ£istrācijas un SMS.

Pats pakalpojums ir Ŕeit - E-Dobavki.com.

E-Dobavki - tÄ«mekļa pakalpojums pārtikas piedevu meklÄ“Å”anai Java un Spring Boot, ko rakstÄ«juÅ”i mani studenti

Projekts ir izglītojoŔs un nesatur reklāmu. Kā es saprotu no Ŕī publikācija, varat sniegt saites uz Ŕādiem projektiem.

Pirms paÅ”a projekta aprakstÄ«Å”anas es jums pastāstÄ«Å”u nedaudz par grupas mācÄ«bu procesu, bez tā attēls bÅ«s nepilnÄ«gs.

9 mēneÅ”u apmācÄ«ba

Skolā, kurā pasniedzu, Java kurss ir sadalÄ«ts 2 daļās. Kopumā kurss aizņem aptuveni 9 mēneÅ”us ar visiem pārtraukumiem (Jaungada brÄ«vdienas, laiks starpprojektu rakstÄ«Å”anai).

Pirmajā daļā skolēni tiek iepazÄ«stināti ar valodas pamatjēdzieniem. MainÄ«gie, metodes, OOP pamati un visas Ŕīs lietas.

Kursa otrā daļa paredz, ka students jau vairāk vai mazāk saprot, kā rakstÄ«t Java valodā, un viņam var iedot ā€œpieauguÅ”oā€ tehnoloÄ£iju kaudzi. Viss sākas ar SQL, tad JDBC, Hibernate. Pēc tam HTTP, servleti. Nākamais ir pavasaris, nedaudz par git un maven. Un studenti raksta gala projektus.

Visas apmācības ir sadalītas moduļos. Nodarbības vadīju divas reizes nedēļā. Vienas nodarbības ilgums ir divas stundas.

Mana pieeja mācībām

Izlaidu 5 grupas. Diviem gadiem Ŕķiet daudz, bet gandrÄ«z vienmēr paralēli vadÄ«ju 2 grupas.

Esmu izmēģinājis dažādas pieejas.

Pirmais variants ir tāds, ka prezentācijai ar teoriju tiek atvēlēts viens pāris. Otrais pāris ir tīra prakse. Šī pieeja kaut kā darbojās, bet, manuprāt, tā nebija pārāk efektīva.

Otrs variants, pie kura nonācu un pie kā Å”obrÄ«d strādāju, ir veselu pāri neveltÄ«t teorijai. Tā vietā es 5-10 minÅ«tes sajaucu Ä«sas teorijas sadaļas un nekavējoties pastiprinu tās ar praktiskiem piemēriem. Å Ä« pieeja darbojas labāk.

Ja ir pietiekami daudz laika, es saucu studentus pie sevis, apsēdinu viņus pie sava klēpjdatora, un viņi paÅ”i taisa praktiskus piemērus. Tas darbojas lieliski, bet diemžēl tas aizņem daudz laika.

Ne visi tiek līdz galam

Man atklājums bija fakts, ka ne visa grupa sasniedz kursa beigas.

Pēc maniem novērojumiem tikai puse studentu raksta gala darbu. Lielākā daļa no tiem tiek likvidēti kursa pirmajā daļā. Un tie, kas sasnieguÅ”i otro daļu, parasti nekrÄ«t.

Viņi aizbrauc dažādu iemeslu dēļ.

Pirmais ir sarežģītÄ«ba. NeatkarÄ«gi no tā, ko viņi saka, Java nav vienkārŔākā valoda. Lai uzrakstÄ«tu pat visvienkārŔāko programmu, ir jāsaprot klases, metodes jēdziens. Un lai saprastu, kāpēc jāraksta publisks static void main (String[] arg) Ir vēl daži jēdzieni, kas jāsaprot.

Salīdziniet to ar Turbo Pascal, ar ko daudzi cilvēki sāka, tostarp es:

begin
    writeln("ŠŸŠµŃ€Š²Š°Ń ŠæрŠ¾Š³Ń€Š°Š¼Š¼Š°");
end.

Cik man zināms, skola Å”o problēmu atrisinās, ievieÅ”ot papildu pārbaudes. Tagad ne visi var mācÄ«ties Java. Tas joprojām ir koncepcijas stadijā, taču solis noteikti ir pareizais.

Un otrs iemesls ir tāds pats kā zemāk esoÅ”ajā attēlā:

E-Dobavki - tÄ«mekļa pakalpojums pārtikas piedevu meklÄ“Å”anai Java un Spring Boot, ko rakstÄ«juÅ”i mani studenti

Cilvēki bieži domā, ka programmÄ“Å”ana ir saistÄ«ta ar daudz teksta ierakstÄ«Å”anu un lielas naudas saņemÅ”anu par to. Tāpat kā tekstu autors, tikai vairāk naudas.

Realitāte ir nedaudz savādāka. Daudz rutīnas koda, nepārprotamas kļūdas, pastāvīgs mācību process. Tas ir interesanti, bet ne visiem.

Tāda ir statistika. Sākumā tas mani apbēdināja, domāju, ka varbūt daru ko nepareizi. Tagad es saprotu, ka statistika par lielāko daļu kursu ir aptuveni vienāda. Tagad es par to neuztraucos, bet mācu tos cilvēkus, kuriem tas interesē.

Ideja par pakalpojumu

Kad studenti bija pabeiguÅ”i visu kursu, bija pienācis laiks rakstÄ«t gala darbu. Bija dažādas idejas. Viņi piedāvāja ToDo lapas, projektu vadÄ«bas projektus un kaut ko citu.

Es gribēju izdarÄ«t kaut ko vienkārÅ”u, bet noderÄ«gu. Mans kritērijs bija vienkārÅ”s ā€“ vai mēs ar draugiem varējām to izmantot. TÄ«mekļa pakalpojums pārtikas piedevu meklÄ“Å”anai atbilda Ŕīm prasÄ«bām.

Ideja ir vienkārÅ”a. Pērkot preci veikalā, jÅ«s redzat sastāvā kaut kādu E-piedevu. No koda nav skaidrs, cik tas ir vai nav bÄ«stams (un ir arÄ« bÄ«stamas piedevas, kas daudzās valstÄ«s ir aizliegtas).

Jūs atverat vietni, ievadāt pielikuma nosaukumu (numuru, vienu no alternatīvajiem nosaukumiem) un saņemat pielikuma kopsavilkumu:

E-Dobavki - tÄ«mekļa pakalpojums pārtikas piedevu meklÄ“Å”anai Java un Spring Boot, ko rakstÄ«juÅ”i mani studenti

Ir lÄ«dzÄ«gi projekti. Varat arÄ« vienkārÅ”i ievadÄ«t piedevu Google, lai gan tas ne vienmēr parāda informāciju pareizi.

Bet tā kā projekts ir izglÄ«tojoÅ”s, iepriekÅ” minētās grÅ«tÄ«bas mÅ«s neapturēja :)

IevieŔana

Visi rakstīja Java valodā, projekta pirmkods vietnē Github.

Mēs bijām 7, ieskaitot mani. Ikviens iesniedza izvilkÅ”anas pieprasÄ«jumu, un es vai cita persona no grupas pieņēmu Å”o piesaistes pieprasÄ«jumu.

Projekta Ä«stenoÅ”ana aizņēma aptuveni mēnesi ā€“ no idejas izteikÅ”anas lÄ«dz stāvoklim, kādu redzat tagad.

ParsēŔanas piedevas

Pirmā lieta, ko viens no studentiem veica, papildus pamata izveidei ap datu bāzi (entÄ«tijām, krātuvēm utt.), bija pievienojumprogrammu parsÄ“Å”ana no esoÅ”as informācijas vietnes.

Tas bija nepiecieÅ”ams, lai pārbaudÄ«tu atlikuÅ”os punktus. Nav nepiecieÅ”ams papildu kods datu bāzes aizpildÄ«Å”anai. Pēc vairāku piedevu ātras parsÄ“Å”anas mēs varējām turpināt pārbaudÄ«t lietotāja interfeisu, ŔķiroÅ”anu un filtrÄ“Å”anu.

Spring Boot ļauj izveidot vairākus profilus. Profils ir fails ar iestatījumiem.

Izstrādātāja videi mēs izmantojām profilu ar vietējo H2 DBVS un noklusējuma HTTP portu (8080). Tādējādi katru reizi, kad lietojumprogramma tika palaists, datubāze tika notÄ«rÄ«ta. Parsētājs Å”ajā gadÄ«jumā bija tas, kas mÅ«s izglāba.

MeklēŔana un filtrēŔana

SvarÄ«gs punkts ir meklÄ“Å”ana un filtrÄ“Å”ana. Personai veikalā ātri jānoklikŔķina uz piedevas koda vai kāda no nosaukumiem un jāsaņem rezultāts.

Tāpēc entÄ«tijai Additive ir vairāki lauki. Å is ir piedevas kods, alternatÄ«vie nosaukumi, apraksts. MeklÄ“Å”ana tiek veikta, izmantojot Like visos laukos vienlaikus. Un, ja ievadÄ«sit [123] vai [amarants], jÅ«s iegÅ«sit tādu paÅ”u rezultātu.

Mēs to visu izdarÄ«jām, pamatojoties uz specifikācijām. Å Ä« ir pavasara daļa, kas ļauj aprakstÄ«t pamata meklÄ“Å”anas nosacÄ«jumus (piemēram, kādu lauku), un pēc tam apvienot Å”os nosacÄ«jumus (VAI vai UN).

Kad esat uzrakstÄ«jis duci specifikāciju, varat uzdot sarežģītus vaicājumus, piemēram, ā€œvisas bÄ«stamās krāsvielas, kuru aprakstā ir vārds [sarkans]ā€.

Runājot par darbu ar Spring datubāzi, man tas Ŕķiet ļoti ērti. Tas jo Ä«paÅ”i attiecas uz darbu ar sarežģītiem vaicājumiem. Es saprotu, ka tam ir savas pieskaitāmās izmaksas, un manuāli rakstÄ«ts un optimizēts SQL vaicājums darbosies ātrāk.

Bet es arÄ« pieturos pie viedokļa, ka nevajag visu iepriekÅ” optimizēt. Pirmajai versijai ir jāuzsāk, jādarbojas un jāļauj nomainÄ«t atseviŔķas detaļas. Un, ja ir slodze, Ŕīs atseviŔķās daļas ir jāpārraksta.

DroŔība

Tas ir vienkārÅ”i. Ir lietotāji ar ADMINA lomu ā€” viņi var rediģēt papildinājumus, dzēst tos un pievienot jaunus.

Un ir arī citi lietotāji (reģistrēti vai ne). Viņi var tikai pārlūkot piedevu sarakstu un meklēt vajadzīgās.

Pavasara droŔība tika izmantota tiesÄ«bu atdalÄ«Å”anai. Lietotāja dati tiek glabāti datu bāzē.

Lietotāji var reģistrēties. Tagad tas neko nedod. Ja skolēni turpinās attīstīt pakalpojumu un ieviest dažas personalizētas funkcijas, tad reģistrācija noderēs.

Atsaucība un Bootstrap

Nākamais punkts ir pielāgoÅ”anās spēja. MÅ«su pakalpojuma gadÄ«jumā (vismaz tā, kā mēs to redzējām), lielākā daļa lietotāju bÅ«s ar mobilajiem tālruņiem. Un jums ātri jāskata papildinājums no sava mobilā tālruņa.

Lai neciestu ar CSS, paņēmām Bootstrap. Lēti, jautri un izskatās pieklājīgi.

Es nevaru nosaukt interfeisu par ideālu. Galvenā lapa ir vēl mazāka, un lapa detalizētam piedevas aprakstam ir Å”aura, mobilajos tālruņos tā ir jāpadara plaŔāka.

Varu tikai teikt, ka centos pēc iespējas mazāk traucēt darbu. Å is joprojām ir studentu projekts. Un, protams, puiÅ”i vēlāk varēs izlabot Ŕādus momentus.

SEO optimizācijas minūte

Tā kā vairāk nekā divus gadus esmu cieÅ”i saistÄ«ts ar vietnēm un visu, kas saistÄ«ts ar SEO, nevarēju izlaist projektu bez vismaz pamata SEO optimizācijas.

Faktiski es katram papildinājumam izveidoju virsraksta un apraksta veidnes Ä£enerÄ“Å”anu. URL ir gandrÄ«z CNC, lai gan to var padarÄ«t Ä«sāku.

Pievienoju arī apmeklējuma skaitītājus. Vietne ir pievienota Yandex Webmaster un Google Search Console, lai pārraudzītu meklētājprogrammu brīdinājumus.

Ar to nepietiek. PilnÄ«gai indeksÄ“Å”anai ir jāpievieno arÄ« fails robots.txt un sitemap.xml. Bet atkal Å”is ir studentu projekts. Es viņiem pastāstÄ«Å”u, kas jādara, un, ja viņi gribēs, viņi to darÄ«s.

Jums jāpievieno SSL sertifikāts. Darbosies arī bezmaksas Let's Encrypt. Es to izdarīju Spring Boot. Tas nav grūti izdarāms, un PS uzticība pieaug.

Kas būs tālāk par projektu?

Tad patiesÄ«bā izvēle ir puiÅ”u ziņā. Projekta sākotnējā ideja ietvēra arÄ« produktu datubāzi ar saitēm uz piedevām.

Ievadiet ā€œSnickersā€ un skatiet, kādas uztura piedevas tas satur.

Jau projekta sākumā zināju, ka mums nebūs nekādu produktu :) Tāpēc sākām tikai ar piedevām.

Tagad jūs varat pievienot produktus un ieviest papildu produktus. maizītes. Ja tā ir plaŔa datu bāze, lietotāji būs.

IzvietoŔana

Projekts tika izvietots VPS, Aruba Cloud. Šis ir lētākais VPS, ko mēs varam atrast. Šo pakalpojumu sniedzēju saviem projektiem izmantoju vairāk nekā gadu, un esmu ar to patīkami apmierināts.

VPS raksturlielumi: 1 GB RAM, 1 CPU (par frekvenci nezinu), 20 GB SSD. MÅ«su projektam ar to pietiek.

Projekts ir veidots, izmantojot parasto mvn tīro paketi. Rezultāts ir tauku burka - izpildāms fails ar visām atkarībām.

Lai to visu nedaudz automatizētu, es uzrakstīju pāris bash skriptus.

Pirmais skripts izdzēŔ veco jar failu un izveido jaunu.

Otrais skripts palaiž salikto burku, nododot tai vajadzīgā profila nosaukumu. Šis profils satur datu bāzes savienojuma informāciju.

DB ā€” MySQL tajā paŔā VPS.

Kopējā projekta restartÄ“Å”ana ietver:

  • piesakieties VPS, izmantojot SSH
  • lejupielādējiet jaunākās git izmaiņas
  • palaist local-jar.sh
  • nogalināt darbojoÅ”os lietojumprogrammu
  • palaist launch-production.sh

Å Ä« procedÅ«ra aizņem trÄ«s minÅ«tes. Man tā Ŕķiet gudra izvēle tik mazam projektam.

Grūtības

Galvenās grūtības, veidojot projektu, bija organizatoriskas.

Ir cilvēku grupa, kas it kā prot programmēt, bet ne pārāk labi. Viņi kaut ko zina, bet joprojām nevar to Ä«sti pielietot. Un tagad viņiem projekts jāpabeidz mēneÅ”a laikā.

Es identificēju nosacÄ«tu komandas vadÄ«tāju Å”ajā grupā. ViņŔ uzturēja Google dokumentu ar uzdevumu sarakstu, sadalÄ«ja uzdevumus un kontrolēja to pieņemÅ”anu. ViņŔ arÄ« pieņēma vilkÅ”anas pieprasÄ«jumus.

Es arÄ« lÅ«dzu studentus katru vakaru uzrakstÄ«t Ä«su ziņojumu par darbu, ko viņi veica projektā. Ja jÅ«s neko nedarÄ«jāt, labi, vienkārÅ”i ierakstiet ā€œneko nedarÄ«juā€. Å Ä« ir lieliska prakse un nedaudz sasprindzina. Diemžēl ne visi ievēroja Å”o noteikumu.

Visas Ŕīs kustÄ«bas mērÄ·is bija vienkārÅ”s. Izveidojiet komandu, pat ja tikai uz Ä«su laiku, lai strādātu kopā.

Gribēju, lai puiÅ”i jÅ«t, ka viņu darbs ir svarÄ«gs. Saprotiet, ka viņi neraksta sfērisku kodu vakuumā. Un tas, ko viņi dara kopā, ir projekts, ko cilvēki pēc tam izmantos.

Pirmā vai divas nedēļas bija uzkrāŔanās. VienÄ«bas un nelielas saistÄ«bas tika veiktas gausi. Pamazām es viņus uzbudināju, un darbs kļuva jautrāks. Saziņa čatā kļuva dzÄ«vāka, studenti piedāvāja savus papildinājumus.

Uzskatu, ka mērÄ·is ir sasniegts. Projekts ir paveikts, puiÅ”i ieguva nelielu pieredzi strādājot komandā. Ir redzams, taustāms rezultāts, ko var parādÄ«t draugiem un attÄ«stÄ«t tālāk.

Atzinumi

Mācīties ir interesanti.

Pēc katras nodarbÄ«bas es atgriezos emocionāli satraukta. CenÅ”os padarÄ«t katru pāri unikālu un nodot pēc iespējas vairāk zināŔanu.

PatÄ«kami, kad manis vadÄ«tā grupa iekļūst finālā. Tas ir Ä«paÅ”i forÅ”i, kad puiÅ”i raksta: "Es dabÅ«ju darbu, viss ir kārtÄ«bā, paldies." Pat ja tas ir juniors, pat ja sākotnēji tā nav lielākā nauda. Bet vissvarÄ«gākais ir tas, ka viņi spēra soli pretÄ« savām vēlmēm, un viņiem tas izdevās.

Lai gan raksts izrādījās diezgan apjomīgs, noteikti nebija iespējams aptvert visus punktus. Tāpēc rakstiet savus jautājumus komentāros.

Avots: www.habr.com

Pievieno komentāru