E-Dobavki – minu õpilaste kirjutatud veebiteenus toidulisandite otsimiseks Java ja Spring Boot keeles

Sissejuhatus

Juhtus nii, et viimased ligi kaks aastat olen õpetanud programmeerimist ühes Kiievi IT-koolis. Hakkasin seda lihtsalt lõbu pärast tegema. Kunagi kirjutasin programmeerimisblogi, siis loobusin sellest. Kuid soov huvilistele kasulikku rääkida pole kuhugi kadunud.

Minu põhikeel on Java. Kirjutasin sellele mobiiltelefonidele mänge, raadioside tarkvara ja erinevaid veebiteenuseid. Ja ma õpetan Java-d.

Siin tahan rääkida oma viimase rühma koolituse loo. Kuidas nad jõudsid koolituse alustamisest toimiva veebiteenuse kirjutamiseni. Kasulik veebiteenus toidulisandite leidmiseks. Tasuta, ei mingit reklaami, registreerimist ja SMS-i.

Teenus ise on siin - E-Dobavki.com.

E-Dobavki – minu õpilaste kirjutatud veebiteenus toidulisandite otsimiseks Java ja Spring Boot keeles

Projekt on hariv ja ei sisalda reklaami. Nagu ma aru saan see väljaanne, saate sellistele projektidele linke anda.

Enne projekti enda kirjeldamist räägin teile veidi grupi õppeprotsessist, ilma selleta jääb pilt poolikuks.

9 kuud koolitust

Koolis, kus ma õpetan, on Java kursus jagatud 2 osaks. Kokku kestab kursus koos kõigi vaheaegadega (uusaasta pühad, vaheprojektide kirjutamise aeg) ligikaudu 9 kuud.

Esimene osa tutvustab õpilastele keele põhimõisteid. Muutujad, meetodid, OOP põhitõed ja kõik muu.

Kursuse teine ​​osa näeb ette, et üliõpilane saab juba enam-vähem aru Java keeles kirjutamisest ning talle saab anda “täiskasvanute” tehnoloogiapinu. Kõik algab SQL-ist, seejärel JDBC-st, talveunest. Siis HTTP, servletid. Järgmine on kevad, natuke gitist ja mavenist. Ja õpilased kirjutavad lõputöid.

Kõik koolitused on jagatud mooduliteks. Viisin tunde läbi kaks korda nädalas. Ühe õppetunni pikkus on kaks tundi.

Minu lähenemine õppimisele

Vabastasin 5 rühma. Kahe aasta kohta tundub palju, aga peaaegu alati juhtisin paralleelselt 2 rühma.

Olen proovinud erinevaid lähenemisi.

Esimene võimalus on see, et teooriaga esitluseks eraldatakse üks paar. Teine paar on puhas praktika. See lähenemine millegipärast töötas, kuid minu arvates ei olnud see väga tõhus.

Teine variant, milleni ma jõudsin ja mille kallal praegu töötan, on mitte pühendada tervet paari teooriale. Selle asemel segan 5-10 minutit lühikesi teoorialõike ja kinnitan neid kohe praktiliste näidetega. See lähenemine töötab paremini.

Kui aega jätkub, kutsun õpilased enda juurde, istutan nad sülearvuti taha ja nad teevad ise praktilisi näiteid. See töötab suurepäraselt, kuid kahjuks võtab see palju aega.

Kõik ei jõua lõpuni

Minu jaoks oli ilmutus tõsiasi, et kogu grupp ei jõua kursuse lõpuni.

Minu tähelepanekute järgi kirjutavad lõputööd vaid pooled õpilastest. Enamik neist elimineeritakse kursuse esimese osa jooksul. Ja need, kes on jõudnud teise osani, tavaliselt maha ei kuku.

Nad lahkuvad erinevatel põhjustel.

Esimene on keerukus. Ükskõik, mida nad ütlevad, pole Java kõige lihtsam keel. Isegi kõige lihtsama programmi kirjutamiseks peate mõistma klassi, meetodi mõistet. Ja selleks, et mõista, miks peate kirjutama avalik static void main(String[] arg) Mõistmiseks on vaja veel mõnda mõistet.

Võrrelge seda Turbo Pascaliga, millest paljud inimesed, sealhulgas mina, alustasid:

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

Minu teada lahendab kool selle probleemi lisatestimise sisseviimisega. Nüüd ei saa kõik Java õppida. See on veel kontseptsiooni staadiumis, kuid samm on selgelt õige.

Ja teine ​​põhjus on nagu alloleval pildil:

E-Dobavki – minu õpilaste kirjutatud veebiteenus toidulisandite otsimiseks Java ja Spring Boot keeles

Inimesed arvavad sageli, et programmeerimine tähendab palju teksti tippimist ja selle eest palju raha saamist. Nagu copywriter, ainult rohkem raha.

Tegelikkus on veidi teistsugune. Palju rutiinset koodi, ilmselgeid vigu, pidev õppeprotsess. See on huvitav, kuid mitte kõigile.

Selline on statistika. Alguses häiris see mind, mõtlesin, et äkki teen midagi valesti. Nüüd saan aru, et enamiku kursuste statistika on ligikaudu sama. Nüüd ma ei muretse selle pärast, vaid õpetan neid inimesi, kes sellest huvitatud on.

Teenuse idee

Kui õpilased olid kogu kursuse läbinud, oli aeg kirjutada lõputöö. Ideid oli erinevaid. Nad pakkusid ToDo lehti, projektijuhtimise projekte ja midagi muud.

Tahtsin teha midagi lihtsat, kuid kasulikku. Minu kriteerium oli lihtne – kas mina ja mu sõbrad oskame seda kasutada. Nendele nõuetele vastas toidu lisaainete otsimise veebiteenus.

Idee on lihtne. Poest toodet ostes näete koostises mingit E-lisandit. Koodist ei selgu, kui ohtlik see on või mitte (ja on ka ohtlikke lisaaineid, mis on paljudes riikides keelatud).

Avate veebisaidi, sisestate toidulisandi nime (number, üks alternatiivsetest nimedest) ja saate toidulisandi kokkuvõtte:

E-Dobavki – minu õpilaste kirjutatud veebiteenus toidulisandite otsimiseks Java ja Spring Boot keeles

Sarnaseid projekte on. Lisand võib ka lihtsalt Google'isse sisestada, kuigi see ei näita alati infot õigesti.

Aga kuna projekt on hariv, siis ülaltoodud raskused meid ei takistanud :)

Реализация

Kõik kirjutasid Java keeles, projekti lähtekood Githubis.

Meid oli 7, kaasa arvatud mina. Kõik tegid tõmbamistaotluse ja mina või mõni teine ​​isik grupist võtsime selle tõmbamistaotluse vastu.

Projekti elluviimine võttis aega umbes kuu – alates idee välja ütlemisest kuni praeguse seisuni.

Parsimise lisandid

Peale andmebaasi (olemite, hoidlate jne) ümber oleva raamistiku loomise esimese asjana sõelus üks õpilastest olemasolevalt teabesaidilt lisandmooduleid.

See oli vajalik ülejäänud punktide testimiseks. Andmebaasi täitmiseks pole lisakoodi vaja. Pärast mitmete lisandite kiiret sõelumist saime kasutajaliidest, sortimist ja filtreerimist täiendavalt testida.

Spring Boot võimaldab teil luua mitu profiili. Profiil on seadetega fail.

Arenduskeskkonna jaoks kasutasime profiili kohaliku H2 DBMS-i ja vaike-HTTP-pordiga (8080). Seega iga kord, kui rakendus käivitati, kustutati andmebaas. Antud juhul oli parser see, mis meid päästis.

Otsing ja filtreerimine

Oluline punkt on otsing ja filtreerimine. Inimene poes peab kiirelt klõpsama toidulisandi koodil või ühel nimetustest ja saama tulemuse.

Seetõttu on olemil Lisand mitu välja. See on lisakood, alternatiivsed nimed, kirjeldus. Otsing toimub samaaegselt kõikidel väljadel, kasutades Like-i. Ja kui sisestate [123] või [amarant], saate sama tulemuse.

Tegime seda kõike tehniliste andmete põhjal. See on kevadise osa, mis võimaldab teil kirjeldada põhilisi otsingutingimusi (nt mõnda välja) ja seejärel neid tingimusi kombineerida (VÕI või JA).

Kui olete kirjutanud kümmekond spetsifikatsiooni, saate esitada keerulisi päringuid, näiteks "kõik ohtlikud värvained, mille kirjelduses on sõna [punane]".

Kevadise andmebaasiga töötamise seisukohalt on see minu arvates väga mugav. See kehtib eriti keeruliste päringutega töötamisel. Saan aru, et sellel on oma üldkulud ning käsitsi kirjutatud ja optimeeritud SQL-päring töötab kiiremini.

Aga jään ka seisukohale, et kõike pole vaja eelnevalt optimeerida. Esimene versioon peab käivituma, töötama ja võimaldama üksikute osade väljavahetamist. Ja kui on koormus, tuleb need üksikud osad ümber kirjutada.

TURVALISUS

See on lihtne. On kasutajaid ADMINI rolliga – nad saavad täiendusi redigeerida, kustutada ja uusi lisada.

Ja on ka teisi kasutajaid (registreeritud või mitte). Nad saavad ainult sirvida lisandite loendit ja otsida vajalikke.

Õiguste eraldamiseks kasutati Spring Securityt. Kasutajaandmeid hoitakse andmebaasis.

Kasutajad saavad registreeruda. Nüüd ei anna see enam midagi. Kui õpilased jätkavad teenuse arendamist ja mõne isikupärastatud funktsiooni kasutuselevõttu, tuleb registreerimine kasuks.

Vastupidavus ja alglaadimine

Järgmine punkt on kohanemisvõime. Meie teenuse puhul (vähemalt nii, nagu me seda nägime), on enamik kasutajaid mobiiltelefonidega. Ja lisa tuleb kiiresti oma mobiiltelefonist vaadata.

Et CSS-iga mitte kannatada, võtsime Bootstrapi. Odav, rõõmsameelne ja näeb korralik välja.

Ma ei saa liidest ideaalseks nimetada. Avaleht on veelgi vähem ja lisandi üksikasjaliku kirjelduse leht on kitsas, mobiiltelefonides tuleb see laiemaks muuta.

Võin vaid öelda, et püüdsin võimalikult vähe tööd segada. See on ikkagi tudengiprojekt. Ja muidugi saavad poisid selliseid hetki hiljem parandada.

Minut SEO optimeerimist

Kuna olen veebilehtede ja kõige SEO-ga seonduvaga tihedalt seotud olnud üle kahe aasta, ei saanud ma projekti välja anda ilma vähemalt elementaarse SEO optimeerimiseta.

Tegelikult tegin iga lisandmooduli jaoks pealkirja ja kirjelduse malli genereerimise. URL on peaaegu CNC, kuigi seda saab lühemaks muuta.

Lisasin ka kohalolekuloendurid. Sait lisati Yandex Webmasterisse ja Google'i otsingukonsooli, et jälgida otsingumootorite hoiatusi.

Sellest ei piisa. Täielikuks indekseerimiseks peate lisama ka faili robots.txt ja sitemap.xml. Aga see on jällegi tudengiprojekt. Ma ütlen neile, mida on vaja teha, ja kui nad tahavad, siis nad teevad seda.

Peate lisama SSL-sertifikaadi. Töötab ka tasuta Let's Encrypt. Tegin seda Spring Booti jaoks. Seda pole raske teha ja PS usaldus suureneb.

Mis saab projektist edasi?

Siis on tegelikult valik meeste teha. Projekti algne idee sisaldas ka toodete andmebaasi koos lisaainete linkidega.

Sisestage "Snickers" ja vaadake, milliseid toitelisi lisandeid see sisaldab.

Juba projekti alguses teadsin, et meil ei ole ühtegi toodet :) Seetõttu alustasime ainult lisanditega.

Nüüd saate tooteid lisada ja uusi tutvustada. kuklid. Kui tegemist on ulatusliku andmebaasiga, leidub ka kasutajaid.

Juurutamine

Projekti kasutati VPS-is, Aruba Cloudis. See on odavaim VPS, mida võime leida. Olen seda pakkujat oma projektide jaoks kasutanud rohkem kui aasta ja olen sellega meeldivalt rahul.

VPS-i omadused: 1 GB RAM, 1 CPU (sageduse kohta ei tea), 20 GB SSD. Meie projekti jaoks sellest piisab.

Projekt on üles ehitatud tavalist mvn clean paketti kasutades. Tulemuseks on rasvapurk – kõigi sõltuvustega käivitatav fail.

Et seda kõike veidi automatiseerida, kirjutasin paar bash-skripti.

Esimene skript kustutab vana jar-faili ja loob uue.

Teine skript käivitab kokkupandud purgi, edastades sellele vajaliku profiili nime. See profiil sisaldab andmebaasi ühenduse teavet.

Andmebaas on MySQL samal VPS-il.

Kogu projekti taaskäivitamine sisaldab:

  • logige SSH kaudu VPS-i sisse
  • laadige alla uusimad giti muudatused
  • käivitage local-jar.sh
  • tapke töötav rakendus
  • käivitage launch-production.sh

See protseduur kestab kolm minutit. See tundub mulle sellise väikese projekti jaoks tark valik.

Raskused

Peamised raskused projekti loomisel olid korralduslikku laadi.

On grupp inimesi, kes näivad oskavat programmeerida, kuid mitte eriti hästi. Nad teavad midagi, kuid ei oska seda ikkagi päriselt rakendada. Ja nüüd peavad nad projekti kuu ajaga lõpetama.

Tuvastasin selles rühmas tingimusliku meeskonnajuhi. Ta pidas Google'i dokumenti ülesannete loendiga, jagas ülesandeid ja kontrollis nende vastuvõtmist. Ta võttis vastu ka tõmbamistaotlused.

Samuti palusin õpilastel igal õhtul kirjutada lühike aruanne projektiga tehtud töö kohta. Kui te midagi ei teinud, kirjutage lihtsalt "ei teinud midagi". See on suurepärane praktika ja ajab sind pisut pingesse. Kahjuks ei järginud kõik seda reeglit.

Kogu selle liikumise eesmärk oli lihtne. Moodustage koos töötamiseks meeskond, kasvõi lühikeseks ajaks.

Tahtsin, et poisid tunneksid, et nende töö on oluline. Saage aru, et nad ei kirjuta sfäärilist koodi vaakumis. Ja see, mida nad koos teevad, on projekt, mida inimesed seejärel kasutavad.

Esimesed nädalad või kaks oli kogunemine. Üksused ja väikesed kohustused tehti loiult. Tasapisi ajasin nad üles ja töö muutus lõbusamaks. Suhtlemine vestluses muutus elavamaks, õpilased pakkusid oma täiendusi.

Usun, et eesmärk on täidetud. Projekt on tehtud, poisid said väikese meeskonnatöö kogemuse. Seal on nähtav, käegakatsutav tulemus, mida saab sõpradele näidata ja edasi arendada.

Järeldused

Õppimine on lõbus.

Pärast igat tundi tulin tagasi emotsionaalselt ärevil. Püüan muuta iga paari ainulaadseks ja anda edasi võimalikult palju teadmisi.

Tore, kui minu õpetatav rühm jõuab finaali. See on eriti lahe, kui poisid kirjutavad: "Ma sain töö, kõik on hästi, aitäh." Isegi kui see on juunior, isegi kui see pole alguses kõige suurem raha. Kuid kõige tähtsam on see, et nad astusid sammu oma soovide poole ja see neil õnnestus.

Kuigi artikkel osutus üsna mahukaks, ei olnud kindlasti võimalik kõiki punkte käsitleda. Seetõttu kirjutage oma küsimused kommentaaridesse.

Allikas: www.habr.com

Lisa kommentaar