E-Dobavki - spletna storitev za iskanje aditivov za živila v Javi in ​​Spring Boot, ki so jo napisali moji učenci

Predstavitev

Tako se je zgodilo, da sem zadnji skoraj dve leti poučeval programiranje na eni izmed IT šol v Kijevu. To sem začel delati samo za zabavo. Nekoč sem pisal blog o programiranju, potem pa sem ga opustil. Toda želja po pripovedovanju koristnih stvari zainteresiranim ljudem ni izginila.

Moj glavni jezik je Java. Na njej sem pisal igrice za mobilne telefone, programsko opremo za radijske komunikacije in različne spletne storitve. In učim Javo.

Tukaj želim povedati zgodbo o usposabljanju moje zadnje skupine. Kako so šli od začetka usposabljanja do pisanja delujoče spletne storitve. Uporabna spletna storitev za iskanje prehranskih dopolnil. Brezplačno, brez oglaševanja, registracije in SMS-ov.

Sama storitev je tukaj - E-Dobavki.com.

E-Dobavki - spletna storitev za iskanje aditivov za živila v Javi in ​​Spring Boot, ki so jo napisali moji učenci

Projekt je izobraževalni in ne vsebuje oglaševanja. Kot razumem iz ta publikacija, lahko navedete povezave do takih projektov.

Preden opišem sam projekt, vam bom povedal nekaj o učnem procesu skupine, brez tega bo slika nepopolna.

9 mesecev usposabljanja

Na šoli, kjer poučujem, je tečaj Java razdeljen na 2 dela. Skupaj tečaj traja približno 9 mesecev z vsemi odmori (novoletni prazniki, čas za pisanje vmesnih projektov).

Prvi del seznani študente z osnovnimi pojmi jezika. Spremenljivke, metode, osnove OOP in vse te stvari.

Drugi del tečaja predvideva, da študent že bolj ali manj razume, kako pisati v Javi, in lahko dobi "odrasli" tehnološki sklad. Vse se začne s SQL, nato JDBC, Hibernate. Nato HTTP, servleti. Sledi Spring, malo o git in maven. In učenci pišejo končne naloge.

Vse usposabljanje je razdeljeno na module. Pouk sem izvajala dvakrat tedensko. Trajanje ene lekcije je dve uri.

Moj pristop k učenju

Izdal sem 5 skupin. Zdi se veliko za dve leti, vendar sem skoraj vedno vodil 2 skupini vzporedno.

Poskušal sem različne pristope.

Prva možnost je, da je en par namenjen predstavitvi s teorijo. Drugi par je čista praksa. Ta pristop je nekako deloval, vendar po mojem mnenju ni bil preveč učinkovit.

Druga možnost, do katere sem prišel in na kateri zdaj delam, je, da ne posvetim celega para teoriji. Namesto tega 5-10 minut mešam kratke dele teorije in jih takoj podkrepim s praktičnimi primeri. Ta pristop deluje bolje.

Če je dovolj časa, študente pokličem k sebi, jih posedem za prenosnik in sami delajo praktične primere. Deluje odlično, a žal vzame veliko časa.

Vsi ne pridejo do konca

Razodetje zame je bilo dejstvo, da celotna skupina ne pride do konca tečaja.

Po mojih opažanjih le polovica študentov piše zaključno nalogo. Večina jih je izločenih v prvem delu tečaja. In tisti, ki so dosegli drugi del, običajno ne odpadejo.

Odhajajo iz različnih razlogov.

Prvi je kompleksnost. Ne glede na to, kaj pravijo, Java ni najpreprostejši jezik. Če želite napisati celo najpreprostejši program, morate razumeti koncept razreda, metode. In razumeti, zakaj morate pisati javni statični void main(String[] arg) Treba je razumeti še nekaj konceptov.

Primerjajte to s Turbo Pascalom, s katerim so mnogi začeli, vključno z mano:

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

Kolikor vem, bo šola ta problem rešila z uvedbo dodatnega preverjanja znanja. Zdaj ne more vsak študirati Jave. To je še v fazi koncepta, vendar je korak očitno pravi.

In drugi razlog je kot na spodnji sliki:

E-Dobavki - spletna storitev za iskanje aditivov za živila v Javi in ​​Spring Boot, ki so jo napisali moji učenci

Ljudje pogosto mislijo, da je programiranje vtipkati veliko besedila in za to dobiti veliko denarja. Kot tekstopisec, samo več denarja.

Realnost je malo drugačna. Veliko rutinske kode, neočitnih napak, nenehnega učenja. Je zanimivo, a ne za vsakogar.

To je statistika. Sprva me je vznemirilo, pomislil sem, da mogoče delam kaj narobe. Zdaj razumem, da je statistika približno enaka za večino tečajev. Zdaj se s tem ne obremenjujem, ampak učim tiste ljudi, ki jih to zanima.

Ideja za storitev

Ko so tečajniki opravili celoten tečaj, je bil čas za pisanje zaključne naloge. Ideje so bile različne. Ponujali so naloge, projekte vodenja projektov in še kaj.

Želel sem narediti nekaj preprostega, a uporabnega. Moje merilo je bilo preprosto - ali ga moji prijatelji in jaz lahko uporabljamo. Tem zahtevam je ustrezala spletna storitev za iskanje aditivov za živila.

Ideja je preprosta. Ko kupite izdelek v trgovini, vidite v sestavi nekakšen E-aditiv. Iz kodeksa ni razvidno, kako nevaren je ali ne (in obstajajo tudi nevarni dodatki, ki so v mnogih državah prepovedani).

Odprete spletno stran, vnesete ime dodatka (številka, eno od alternativnih imen) in dobite povzetek dodatka:

E-Dobavki - spletna storitev za iskanje aditivov za živila v Javi in ​​Spring Boot, ki so jo napisali moji učenci

Obstajajo podobni projekti. Dodatek lahko tudi preprosto vtipkate v Google, čeprav informacije ne prikaže vedno pravilno.

A ker je projekt izobraževalni, nas zgornje težave niso ustavile :)

Реализация

Vsi so pisali v Javi, izvorna koda projekta na Githubu.

Bilo nas je 7, vključno z mano. Vsi so podali zahtevo za vlečenje in jaz ali druga oseba iz skupine sem to zahtevo za vlečenje sprejela.

Izvedba projekta je trajala približno mesec dni - od izražanja ideje do stanja, ki ga vidite zdaj.

Dodatki za razčlenjevanje

Prva stvar, ki jo je naredil eden od študentov, poleg osnovnega ustvarjanja ogrodja okoli baze podatkov (entitete, repozitoriji itd.), je bila razčlenitev dodatkov z obstoječega informacijskega mesta.

To je bilo potrebno za testiranje preostalih točk. Za polnjenje baze podatkov ni potrebna nobena dodatna koda. Ko smo hitro razčlenili več dodatkov, smo lahko dodatno preizkusili uporabniški vmesnik, razvrščanje in filtriranje.

Spring Boot vam omogoča ustvarjanje več profilov. Profil je datoteka z nastavitvami.

Za okolje za razvijalce smo uporabili profil z lokalnim H2 DBMS in privzetimi vrati HTTP (8080). Tako je bila ob vsakem zagonu aplikacije baza podatkov izbrisana. Razčlenjevalnik je bil v tem primeru stvar, ki nas je rešila.

Iskanje in filtriranje

Pomembna točka je iskanje in filtriranje. Oseba v trgovini mora hitro klikniti kodo dodatka ali eno od imen in dobiti rezultat.

Zato ima entiteta Aditiv več polj. To je koda dodatka, alternativna imena, opis. Iskanje poteka z uporabo Všeč mi je v vseh poljih hkrati. In če vnesete [123] ali [amarant], boste dobili enak rezultat.

Vse to smo naredili na podlagi specifikacij. To je del programa Spring, ki vam omogoča, da opišete osnovne pogoje iskanja (na primer neko polje) in nato združite te pogoje (ALI ali IN).

Ko napišete ducat specifikacij, lahko postavite zapletene poizvedbe, kot je "vsi nevarni barvni dodatki, ki imajo v opisu besedo [rdeča]."

Kar zadeva delo z zbirko podatkov Spring, se mi zdi zelo priročna. To še posebej velja pri delu s kompleksnimi poizvedbami. Razumem, da ima to svoje dodatne stroške in da bo ročno napisana in optimizirana poizvedba SQL potekala hitreje.

Držim pa se tudi stališča, da ni treba vsega optimizirati vnaprej. Prva verzija mora zagnati, delovati in omogočati menjavo posameznih delov. In če pride do obremenitve, je treba te posamezne dele prepisati.

Varnost

Enostavno je. Obstajajo uporabniki z vlogo ADMIN - lahko urejajo dodatke, jih brišejo in dodajajo nove.

In obstajajo drugi uporabniki (registrirani ali ne). Lahko samo brskajo po seznamu aditivov in iščejo tiste, ki jih potrebujejo.

Spring Security je bil uporabljen za ločevanje pravic. Uporabniški podatki so shranjeni v bazi podatkov.

Uporabniki se lahko registrirajo. Zdaj pa nič ne daje. Če bodo študentje še naprej razvijali storitev in uvajali nekaj prilagojenih funkcij, bo registracija prišla prav.

Odzivnost in Bootstrap

Naslednja točka je prilagodljivost. Pri naši storitvi (vsaj tako, kot smo videli) bo večina uporabnikov z mobilnimi telefoni. Dodatek si morate hitro ogledati iz svojega mobilnega telefona.

Da ne bi trpeli s CSS, smo vzeli Bootstrap. Poceni, veselo in izgleda spodobno.

Vmesnika ne morem imenovati idealnega. Glavna stran je še manj, stran za podroben opis aditiva pa je ozka, pri mobilnih telefonih jo je treba narediti širšo.

Lahko samo rečem, da sem se poskušal čim manj vmešavati v delo. To je še študentski projekt. In seveda bodo fantje kasneje znali popraviti takšne trenutke.

Minuta SEO optimizacije

Ker se že več kot dve leti tesno ukvarjam s spletnimi stranmi in vsem, kar je povezano s SEO, ne bi mogel izdati projekta brez vsaj osnovne SEO optimizacije.

Pravzaprav sem za vsak dodatek naredil predlogo za generiranje naslova in opisa. URL je skoraj CNC, čeprav ga je mogoče skrajšati.

Dodal sem tudi števce prisotnosti. Dodano spletno mesto v Yandex Webmaster in Google Search Console za spremljanje opozoril iskalnikov.

Ni dovolj. Za popolno indeksiranje morate dodati tudi robots.txt in sitemap.xml. Ampak spet, to je študentski projekt. Povedal jim bom, kaj je treba narediti, in če bodo želeli, bodo to storili.

Priložiti morate potrdilo SSL. Deloval bo tudi brezplačni Let's Encrypt. To sem naredil za Spring Boot. Ni težko narediti, zaupanje PS pa se poveča.

Kaj je naslednje za projekt?

Potem pa je pravzaprav izbira na fantih. Prvotna ideja projekta je vključevala tudi bazo izdelkov s povezavami do aditivov.

Vnesite »Snickers« in si oglejte, katere prehranske dodatke vsebuje.

Že na začetku projekta sem vedela, da ne bomo imeli izdelkov :) Zato smo začeli samo z dodatki.

Zdaj lahko dodajate izdelke in uvajate dodatne. žemlje. Če gre za obsežno bazo podatkov, bodo uporabniki.

Uvajanje

Projekt je bil nameščen na VPS, Aruba Cloud. To je najcenejši VPS, ki ga lahko najdemo. Tega ponudnika uporabljam že več kot eno leto za svoje projekte in sem z njim prijetno zadovoljen.

Značilnosti VPS: 1 GB RAM-a, 1 CPU (za frekvenco ne vem), 20 GB SSD. Za naš projekt je to dovolj.

Projekt je zgrajen z uporabo običajnega paketa mvn clean. Rezultat je fat jar - izvršljiva datoteka z vsemi odvisnostmi.

Da bi vse to malo avtomatiziral, sem napisal nekaj bash skriptov.

Prvi skript izbriše staro datoteko jar in zgradi novo.

Drugi skript zažene sestavljen kozarec in mu posreduje ime zahtevanega profila. Ta profil vsebuje informacije o povezavi z bazo podatkov.

DB - MySQL na istem VPS.

Skupni ponovni zagon projekta vključuje:

  • prijavite se v VPS prek SSH
  • prenesite najnovejše spremembe git
  • zaženite local-jar.sh
  • uniči delujočo aplikacijo
  • zaženite launch-production.sh

Ta postopek traja tri minute. To se mi zdi pametna izbira za tako majhen projekt.

Težave

Glavne težave pri ustvarjanju projekta so bile organizacijske narave.

Obstaja skupina ljudi, za katere se zdi, da znajo programirati, vendar ne zelo dobro. Nekaj ​​vedo, a tega še vedno ne znajo zares uporabiti. In zdaj morajo projekt dokončati v enem mesecu.

V tej skupini sem identificiral pogojnega vodjo ekipe. Vodil je Google Doc s seznamom nalog, razdeljeval naloge in nadzoroval njihovo sprejemanje. Sprejel je tudi zahteve za vleko.

Študente sem tudi prosil, naj vsak večer napišejo kratko poročilo o delu, ki so ga opravili na projektu. Če niste storili ničesar, v redu, samo napišite "ni naredil nič." To je odlična praksa in vas nekoliko napne. Vsi tega pravila žal niso upoštevali.

Namen vsega tega gibanja je bil preprost. Ustvarite ekipo, četudi le za kratek čas, za sodelovanje.

Želel sem, da fantje čutijo, da je njihovo delo pomembno. Razumite, da sferične kode ne pišejo v vakuumu. In to, kar delajo skupaj, je projekt, ki ga bodo ljudje potem uporabljali.

Prvi teden ali dva je bilo nabiranje. Entitete in majhne obveznosti so bile narejene počasi. Postopoma sem jih razburil in delo je postalo bolj zabavno. Komunikacija v klepetu je postala živahnejša, študenti so ponudili svoje dodatke.

Menim, da je cilj dosežen. Projekt je narejen, fantje so dobili nekaj izkušenj z delom v timu. Obstaja viden, oprijemljiv rezultat, ki ga je mogoče pokazati prijateljem in nadalje razvijati.

Ugotovitve

Učenje je zanimivo.

Po vsaki uri sem se vračal čustveno vznemirjen. Trudim se, da je vsak par unikaten in posredujem čim več znanja.

Lepo je, ko se skupina, ki jo učim, uvrsti v finale. Še posebej kul je, ko fantje napišejo "dobil sem službo, vse je v redu, hvala." Tudi če je mladinec, tudi če na začetku ni največji denar. Najpomembneje pa je, da so naredili korak svojim željam in uspelo jim je.

Čeprav se je članek izkazal za precej obsežnega, zagotovo ni bilo mogoče zajeti vseh točk. Zato zapišite svoja vprašanja v komentarje.

Vir: www.habr.com

Dodaj komentar