E-Dobavki - Java eta Spring Boot-en elikagai-gehigarriak bilatzeko web zerbitzua, nire ikasleek idatzia

Sarrera

Gertatu zen azken ia bi urteotan Kieveko informatika eskoletako batean programazioa irakasten ari naizela. Just For Fun hau egiten hasi nintzen. Behin programazio blog bat idatzi nuen, gero utzi nuen. Baina interesdunei gauza erabilgarriak kontatzeko gogoa ez da desagertu.

Nire hizkuntza nagusia Java da. Telefono mugikorrentzako jokoak, irrati-komunikazioetarako softwarea eta hainbat web zerbitzu idatzi nituen bertan. Eta Java irakasten dut.

Hemen nire azken taldearen entrenamenduaren istorioa kontatu nahi dut. Nola pasatu ziren entrenatzen hastetik lanean ari den web zerbitzu bat idaztera. Nutrizio osagarriak aurkitzeko web zerbitzu erabilgarria. Doan, publizitaterik, erregistroa eta SMSrik gabe.

Zerbitzua bera hemen dago - E-Dobavki.com.

E-Dobavki - Java eta Spring Boot-en elikagai-gehigarriak bilatzeko web zerbitzua, nire ikasleek idatzia

Proiektua didaktikoa da eta ez du inolako publizitaterik. Nik ulertzen dudanez argitalpen hau, horrelako proiektuetarako estekak eman ditzakezu.

Proiektua bera deskribatu baino lehen, taldearen ikaskuntza prozesuaren berri emango dizuet; hau gabe, argazkia osatu gabe egongo da.

9 hilabeteko prestakuntza

Irakasten dudan eskolan, Java ikastaroa 2 zatitan banatzen da. Guztira, ikastaroak 9 hilabete irauten du gutxi gorabehera, atsedenaldi guztiekin (Urteberriko oporrak, tarteko proiektuak idazteko denbora).

Lehenengo zatian hizkuntzaren oinarrizko kontzeptuak aurkezten ditu ikasleak. Aldagaiak, metodoak, OOP oinarriak eta gauza horiek guztiak.

Ikastaroaren bigarren zatiak ematen du ikasleak jadanik gutxi-asko ulertzen duela Javan nola idazten den, eta "helduen" teknologia-pila bat eman diezaioke. Dena SQLrekin hasten da, ondoren JDBC, Hibernate. Ondoren, HTTP, servletak. Hurrengoa Udaberria da, git eta maven buruz apur bat. Eta ikasleek amaierako proiektuak idazten dituzte.

Prestakuntza guztia modulutan banatuta dago. Astean bitan ematen nituen eskolak. Ikasgai baten iraupena bi ordukoa da.

Ikasteko nire ikuspegia

5 talde kaleratu nituen. Bi urte asko dirudi, baina ia beti paraleloan 2 talde zuzentzen nituen.

Ikuspegi desberdinak probatu ditut.

Lehenengo aukera teoria bat duen aurkezpen baterako bikote bat esleitzea da. Bigarren bikotea praktika hutsa da. Planteamendu honek nolabait funtzionatu zuen, baina ez zen oso eraginkorra, nire ustez.

Etortzen naizen eta orain lantzen ari naizen bigarren aukera, bikote oso bat teoriari ez eskaintzea da. Horren ordez, teoriaren atal laburrak nahasten ditut 5-10 minutuz, eta berehala indartzen ditut adibide praktikoekin. Ikuspegi honek hobeto funtzionatzen du.

Denbora nahikoa badago, ikasleei nire etxera deitzen diet, ordenagailu eramangarrian eseri eta beraiek adibide praktikoak egiten dituzte. Oso ondo funtzionatzen du, baina zoritxarrez denbora asko behar da.

Denek ez dute amaierara iristen

Niretzat errebelazio bat izan zen talde osoa kurtso amaierara ez iristea.

Nire behaketen arabera, ikasleen erdiek bakarrik idazten dute amaierako proiektua. Horietako gehienak ikastaroaren lehen zatian kanporatzen dira. Eta bigarren zatira iritsi direnak normalean ez dira erortzen.

Hainbat arrazoirengatik uzten dute.

Lehenengoa konplexutasuna da. Zer esanik ez, Java ez da hizkuntzarik errazena. Programarik errazena ere idazteko, klase baten kontzeptua, metodo bat ulertu behar duzu. Eta zergatik idatzi behar duzun ulertzeko public static void main(String[] arg) Ulertzeko beste kontzeptu batzuk daude.

Konparatu hau Turbo Pascal-ekin, jende asko hasi zenarekin, ni barne:

begin
    writeln("ΠŸΠ΅Ρ€Π²Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°");
end.

Dakidanez, eskolak arazo hau konponduko du proba osagarriak sartuz. Orain denek ezin dute Java ikasi. Kontzeptu fasean dago oraindik, baina urratsa egokia da argi eta garbi.

Eta bigarren arrazoia beheko irudian bezalakoa da:

E-Dobavki - Java eta Spring Boot-en elikagai-gehigarriak bilatzeko web zerbitzua, nire ikasleek idatzia

Jendeak askotan pentsatzen du programazioa testu asko idaztea eta horretarako diru asko lortzea dela. Idazlea bezala, diru gehiago besterik ez.

Errealitatea apur bat ezberdina da. Errutinazko kode asko, begi bistako akatsak, etengabeko ikaskuntza prozesu bat. Interesgarria da, baina ez denentzat.

Hauek dira estatistikak. Hasieran haserretu ninduen, agian zerbait gaizki egiten ari nintzela pentsatu nuen. Orain ulertzen dut estatistikak gutxi gorabehera berdinak direla ikastaro gehienetarako. Orain ez naiz kezkatzen, baina interesatzen zaien jendeari irakatsi.

Zerbitzuaren ideia

Ikasleek kurtso osoa amaitutakoan, amaierako proiektua idazteko ordua iritsi zen. Ideia desberdinak zeuden. ToDo fitxak, proiektuak kudeatzeko proiektuak eta beste zerbait eskaini zituzten.

Zerbait sinple baina erabilgarria egin nahi nuen. Nire irizpidea sinplea zen: nire lagunek eta biok erabil genezakeen. Elikagaien gehigarriak bilatzeko web zerbitzu batek bete zituen baldintza horiek.

Ideia sinplea da. Denda batean produktu bat erosten duzunean, konposizioan E-gehigarri moduko bat ikusten duzu. Kodetik ez dago argi zein arriskutsua den edo ez (eta herrialde askotan debekatuta dauden gehigarri arriskutsuak ere badaude).

Webgunea ireki, gehigarriaren izena sartu (zenbakia, izen alternatiboetako bat) eta osagarriaren laburpena lortzen duzu:

E-Dobavki - Java eta Spring Boot-en elikagai-gehigarriak bilatzeko web zerbitzua, nire ikasleek idatzia

Antzeko proiektuak daude. Gehigarria Googlen ere idatz dezakezu, nahiz eta beti ez duen informazioa behar bezala erakusten.

Baina proiektua hezitzailea denez, goiko zailtasunek ez gaituzte gelditu :)

Inplementazioa

Guztiek Javan idatzi zuten, Github-en proiektuaren iturburu kodea.

7 ginen, ni barne. Denek egin zuten tira-eskaera, eta nik, edo taldeko beste batek, tira-eskaera hau onartu genuen.

Proiektuaren ezarpenak hilabete inguru behar izan zuen - ideia ahoskatu zenetik orain ikusten duzun egoerara arte.

Analisi-gehigarriak

Ikasleetako batek egin zuen lehenengo gauza, datu basearen inguruan (entitateak, biltegiak, etab.) oinarrizko esparru bat sortzeaz gain, lehendik zegoen informazio gune bateko gehigarriak analizatzea izan zen.

Hori beharrezkoa zen gainerako puntuak probatzeko. Ez da kode gehigarririk behar datu-basea betetzeko. Hainbat gehigarri azkar aztertuta, gehiago probatu genitzake interfazea, ordenatzea eta iragaztea.

Spring Boot-ek hainbat profil sortzeko aukera ematen du. Profila ezarpenak dituen fitxategi bat da.

Dev ingurunerako, H2 DBMS lokaleko profil bat erabili dugu eta HTTP ataka lehenetsia (8080). Horrela, aplikazioa abiarazten zen bakoitzean datu-basea garbitzen zen. Kasu honetan analizatzailea izan zen salbatu gintuena.

Bilatu eta iragaztea

Puntu garrantzitsu bat bilaketa eta iragazketa da. Denda bateko pertsona batek azkar egin behar du klik osagarriaren kodean, edo izenetako batean, eta emaitza lortu.

Beraz, Gehigarri entitateak hainbat eremu ditu. Hau da kodea gehigarria, izen alternatiboak, deskribapena. Bilaketa Like erabiliz egiten da eremu guztietan aldi berean. Eta [123] edo [amaranth] sartuz gero, emaitza bera lortuko duzu.

Hori guztia zehaztapenetan oinarrituta egin dugu. Hau Spring-en oinarrizko bilaketa-baldintzak deskribatzeko aukera ematen dizu (eremu batzuk adibidez), eta gero baldintza hauek konbinatu (EDO edo ETA).

Dozena bat zehaztapen idatzita, "deskribapenean [gorria] hitza duten koloratzaile gehigarri arriskutsu guztiak" bezalako kontsulta konplexuak egin ditzakezu.

Spring datu-basearekin lan egiteari dagokionez, oso erosoa iruditzen zait. Hau bereziki egia da kontsulta konplexuekin lan egiten denean. Ulertzen dut honek bere gainkostua duela, eta eskuz idatzitako eta optimizatutako SQL kontsulta azkarrago exekutatuko dela.

Baina aldez aurretik guztia optimizatu beharrik ez dagoelako ikuspuntuari ere atxikitzen naiz. Lehenengo bertsioa hasi, funtzionatu eta banakako piezak ordezkatzeko aukera eman behar du. Eta karga bat badago, banakako zati hauek berridatzi behar dira.

Segurtasuna

Sinplea da. ADMIN. rola duten erabiltzaileak daude: gehiketak edita ditzakete, ezabatu eta berriak gehi ditzakete.

Eta badira beste erabiltzaile batzuk (erregistratutakoak edo ez). Gehigarrien zerrendan bakarrik arakatu eta behar dituztenak bilatu ditzakete.

Spring Security erabili zen eskubideak bereizteko. Erabiltzaileen datuak datu-base batean gordetzen dira.

Erabiltzaileek izena eman dezakete. Orain ez du ezer ematen. Ikasleek zerbitzua garatzen jarraitzen badute eta funtzio pertsonalizatu batzuk sartzen jarraitzen badute, ondo etorriko da izena ematea.

Erantzunkortasuna eta Bootstrap

Hurrengo puntua moldagarritasuna da. Gure zerbitzuaren kasuan (guk ikusi dugun moduan behintzat), erabiltzaile gehienak sakelako telefonoekin egongo dira. Eta osagarria azkar ikusi behar duzu telefono mugikorretik.

CSSarekin ez sufritzeko, Bootstrap hartu genuen. Merkea, alaia eta itxura duina.

Ezin diot interfaze ideala deitu. Orri nagusia are gutxiago da, eta gehigarriaren deskribapen zehatza egiteko orria estua da; sakelako telefonoetan zabalagoa egin behar da.

Lanari ahalik eta gutxien oztopatzen saiatu naizela esan dezaket. Ikasleen proiektua da oraindik. Eta noski, mutilek geroago zuzendu ahal izango dituzte halako momentuak.

Minutu bat SEO optimizatzeko

Bi urte baino gehiago webguneetan eta SEOrekin zerikusia duen guztiarekin estuki sartuta egon naizenez, ezingo nuke proiektu bat kaleratu gutxienez oinarrizko SEO optimizaziorik gabe.

Izan ere, Izenburua eta Deskribapena txantiloi-sorkuntza bat egin nuen gehigarri bakoitzeko. URL ia CNCa da, nahiz eta laburragoa izan.

Asistentzia-kontagailuak ere gehitu ditut. Webgunea Yandex Webmaster eta Google Search Console-n gehitu da bilatzaileen abisuak kontrolatzeko.

Ez da nahikoa. Robots.txt eta sitemap.xml ere gehitu behar dituzu indexatzeko. Baina berriro ere, hau ikasleen proiektua da. Egin beharrekoa esango diet, eta nahi badute, egingo dute.

SSL ziurtagiria erantsi behar duzu. Let's Encrypt doakoa ere funtzionatuko du. Hau Spring Boot-erako egin nuen. Ez da zaila egitea, eta PSren konfiantza areagotu egiten da.

Zein da proiektuaren hurrengoa?

Orduan, hain zuzen ere, mutilen esku dago aukera. Proiektuaren jatorrizko ideiak gehigarrietarako estekak dituzten produktuen datu-base bat ere barne hartzen zuen.

Sartu "Snickers" eta ikusi zer nutrizio-gehigarri dituen.

Proiektua hasi zenean ere, banekien ez genuela produkturik izango :) Horregatik, gehigarriekin bakarrik hasi ginen.

Orain produktuak gehitu eta gehigarriak sartu ditzakezu. opilak. Datu-base zabala bada, erabiltzaileak egongo dira.

Inplementazioa

Proiektua VPS-en zabaldu zen, Aruba Cloud. Hau da aurki genezakeen VPS merkeena. Urtebete baino gehiago daramat hornitzaile hau nire proiektuetarako erabiltzen, eta oso gustura nago.

VPS ezaugarriak: 1 GB RAM, 1 CPU (ez dakit maiztasuna), 20 GB SSD. Gure proiekturako nahikoa da.

Proiektua mvn clean pakete arrunta erabiliz eraiki da. Emaitza pot koipe bat da - menpekotasun guztiak dituen fitxategi exekutagarria.

Hori guztia apur bat automatizatzeko, bash script pare bat idatzi nituen.

Lehenengo script-ak jar fitxategi zaharra ezabatzen du eta berri bat eraikitzen du.

Bigarren script-ak muntatutako potea abiarazten du, beharrezko profilaren izena pasatuz. Profil honek datu-basearen konexioaren informazioa dauka.

DB - MySQL VPS berean.

Proiektuaren berrabiarazte osoa barne hartzen du:

  • saioa VPS-n SSH bidez
  • deskargatu git-en azken aldaketak
  • exekutatu local-jar.sh
  • exekutatzen ari den aplikazioa hil
  • exekutatu launch-production.sh

Prozedura honek hiru minutu behar ditu. Aukera adimentsua iruditzen zait horrelako proiektu txiki baterako.

konplexutasun

Proiektua sortzeko zailtasun nagusiak antolakuntza izaerakoak izan ziren.

Badirudi jende multzo bat programatzen dakiela, baina ez oso ondo. Badakite zerbait, baina oraindik ezin dute benetan aplikatu. Eta orain hilabete batean proiektua amaitu behar dute.

Talde honetan baldintzapeko taldeburu bat identifikatu nuen. Google Doc bat gordetzen zuen zereginen zerrenda batekin, zereginak banatu zituen eta haien onarpena kontrolatzen zuen. Tira-eskaerak ere onartu zituen.

Ikasleei ere eskatu nien arratsaldero proiektuan egindako lanari buruzko txosten labur bat idazteko. Ez baduzu ezer egin, ados, idatzi "ez du ezer egin". Praktika bikaina da eta pixka bat tentsioa jartzen zaitu. Guztiek ez zuten arau hori jarraitu, zoritxarrez.

Mugimendu honen guztiaren helburua sinplea zen. Talde bat osatu, denbora gutxian bada ere, elkarrekin lan egiteko.

Mutilek euren lana garrantzitsua zela senti zezaten nahi nuen. Ulertzea ez dutela kode esferikorik idazten hutsean. Eta elkarrekin egiten ari direna jendeak gero erabiliko duen proiektua da.

Lehenengo astea edo bi pilaketa izan zen. Entitateak eta konpromiso txikiak geldo egin ziren. Pixkanaka hunkitu egin nituen, eta lana dibertigarriagoa bihurtu zen. Txatean komunikazioa biziagoa izan zen, ikasleek beren gehigarriak eskaini zituzten.

Helburua lortu dela uste dut. Proiektua eginda dago, mutilek esperientzia apur bat lortu dute taldean lanean. Emaitza ikusgai eta ukigarria dago, lagunei erakutsi eta gehiago garatu ahal izateko.

Findings

Ikastea interesgarria da.

Klase bakoitzaren ondoren emozionalki asaldatuta itzuli nintzen. Bikote bakoitza bakarra izan dadin eta ahalik eta ezagutza gehien transmititzen saiatzen naiz.

Polita da irakasten dudan taldea finalera iristen denean. Oso polita da mutilek "Lana lortu dut, dena ondo dago, eskerrik asko" idazten dutenean. Nahiz eta junior bat izan, nahiz eta hasieran dirurik handiena ez izan. Baina garrantzitsuena da euren nahien bidean urrats bat eman zutela, eta lortu zutela.

Artikulua nahiko bolumentsua izan bazen ere, zalantzarik gabe, ezin izan zen puntu guztiak estaltzea. Beraz, idatzi zure galderak iruzkinetan.

Iturria: www.habr.com

Gehitu iruzkin berria