E-Dobavki - oppilaideni kirjoittama verkkopalvelu elintarvikelisäaineiden etsimiseen Javassa ja Spring Bootissa

Esittely

Sattui niin, että viimeiset melkein kaksi vuotta olen opettanut ohjelmointia yhdessä Kiovan IT-koulusta. Aloin tehdä tätä vain huvin vuoksi. Kirjoitin kerran ohjelmointiblogin, mutta sitten luovuin siitä. Mutta halu kertoa hyödyllisiä asioita kiinnostuneille ei ole kadonnut.

Pääkieleni on Java. Kirjoitin siihen pelejä matkapuhelimiin, ohjelmistoja radioviestintään ja erilaisia ​​verkkopalveluita. Ja opetan Javaa.

Tässä haluan kertoa tarinan viimeisen ryhmäni koulutuksesta. Kuinka he siirtyivät koulutuksen aloittamisesta toimivan verkkopalvelun kirjoittamiseen. Hyödyllinen verkkopalvelu ravintolisien etsimiseen. Ilmainen, ei mainoksia, rekisteröintiä ja tekstiviestejä.

Itse palvelu on täällä - E-Dobavki.com.

E-Dobavki - oppilaideni kirjoittama verkkopalvelu elintarvikelisäaineiden etsimiseen Javassa ja Spring Bootissa

Projekti on koulutuksellinen eikä sisällä mainoksia. Kuten ymmärsin tämä julkaisu, voit antaa linkkejä tällaisiin projekteihin.

Ennen itse projektin kuvaamista kerron hieman ryhmän oppimisprosessista, ilman tätä kuva jää kesken.

9 kuukauden koulutus

Koulussa, jossa opetan, Java-kurssi on jaettu kahteen osaan. Kaiken kaikkiaan kurssi kestää noin 2 kuukautta, kaikkine taukoineen (uudenvuoden lomat, aika väliprojektien kirjoittamiseen).

Ensimmäinen osa esittelee opiskelijat kielen peruskäsitteisiin. Muuttujat, menetelmät, OOP:n perusteet ja kaikkea muuta.

Kurssin toisessa osassa opiskelija osaa jo enemmän tai vähemmän kirjoittaa Java-kielellä ja hänelle voidaan antaa "aikuisten" teknologiapino. Kaikki alkaa SQL:stä, sitten JDBC:stä ja Hibernatesta. Sitten HTTP, servletit. Seuraavaksi on kevät, vähän gitistä ja mavenista. Ja opiskelijat kirjoittavat loppuprojekteja.

Kaikki koulutus on jaettu moduuleihin. Pidin kursseja kahdesti viikossa. Yhden oppitunnin kesto on kaksi tuntia.

Oma lähestymistapani oppimiseen

Julkaisin 5 ryhmää. Se vaikuttaa kahdelta vuodelta paljon, mutta johdin melkein aina kahta ryhmää rinnakkain.

Olen kokeillut erilaisia ​​lähestymistapoja.

Ensimmäinen vaihtoehto on, että yksi pari on varattu esitykselle teorian kanssa. Toinen pari on puhdasta harjoittelua. Tämä lähestymistapa jotenkin toimi, mutta mielestäni se ei ollut kovin tehokas.

Toinen vaihtoehto, johon päädyin ja jonka parissa työskentelen nyt, on olla omistamatta kokonaista paria teorialle. Sen sijaan sekoitan lyhyitä teoriaosia 5-10 minuuttia ja vahvistan niitä välittömästi käytännön esimerkeillä. Tämä lähestymistapa toimii paremmin.

Jos aikaa riittää, kutsun opiskelijat luokseni, istutan kannettavan tietokoneeni ääreen ja he tekevät itse käytännön esimerkkejä. Se toimii hyvin, mutta valitettavasti se vie paljon aikaa.

Kaikki eivät selviä loppuun asti

Minulle paljastus oli se, että koko ryhmä ei pääse kurssin loppuun.

Havaintojeni mukaan vain puolet opiskelijoista kirjoittaa lopputyön. Suurin osa heistä eliminoidaan kurssin ensimmäisen osan aikana. Ja ne, jotka ovat saavuttaneet toisen osan, eivät yleensä putoa.

He lähtevät eri syistä.

Ensimmäinen on monimutkaisuus. Sanovatpa mitä tahansa, Java ei ole yksinkertaisin kieli. Jotta voit kirjoittaa jopa yksinkertaisimman ohjelman, sinun on ymmärrettävä luokan, menetelmän käsite. Ja ymmärtää, miksi sinun täytyy kirjoittaa julkinen staattinen void main(String[] arg) Ymmärrettävänä on vielä muutama käsite.

Vertaa tätä Turbo Pascaliin, josta monet ihmiset aloittivat, mukaan lukien minä:

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

Tietääkseni koulu ratkaisee tämän ongelman ottamalla käyttöön lisätestejä. Nyt kaikki eivät voi opiskella Javaa. Tämä on vielä konseptivaiheessa, mutta askel on selvästi oikea.

Ja toinen syy on kuten alla olevassa kuvassa:

E-Dobavki - oppilaideni kirjoittama verkkopalvelu elintarvikelisäaineiden etsimiseen Javassa ja Spring Bootissa

Ihmiset ajattelevat usein, että ohjelmointi tarkoittaa paljon tekstin kirjoittamista ja paljon rahaa saamista siitä. Kuten copywriter, vain enemmän rahaa.

Todellisuus on hieman erilainen. Paljon rutiinikoodia, ilmeisiä virheitä, jatkuva oppimisprosessi. Se on mielenkiintoista, mutta ei kaikille.

Nämä ovat tilastoja. Aluksi se järkytti minua, ajattelin, että ehkä tein jotain väärin. Nyt ymmärrän, että useimpien kurssien tilastot ovat suunnilleen samat. Nyt en välitä siitä, vaan opetan niitä ihmisiä, jotka ovat siitä kiinnostuneita.

Palvelu idea

Kun opiskelijat olivat suorittaneet koko kurssin, oli aika kirjoittaa lopputyö. Oli erilaisia ​​ajatuksia. He tarjosivat ToDo-arkkeja, projektinhallintaprojekteja ja jotain muuta.

Halusin tehdä jotain yksinkertaista mutta hyödyllistä. Kriteerini oli yksinkertainen - voisimmeko ystäväni ja minä käyttää sitä. Verkkopalvelu elintarvikelisäaineiden etsimiseen täytti nämä vaatimukset.

Idea on yksinkertainen. Kun ostat tuotteen kaupasta, näet koostumuksessa jonkinlaisen E-lisäaineen. Koodista ei käy ilmi, kuinka vaarallinen se on vai ei (ja on myös vaarallisia lisäaineita, jotka ovat kiellettyjä monissa maissa).

Avaat verkkosivuston, kirjoitat lisäosan nimen (numero, jokin vaihtoehtoisista nimistä) ja saat yhteenvedon lisäosasta:

E-Dobavki - oppilaideni kirjoittama verkkopalvelu elintarvikelisäaineiden etsimiseen Javassa ja Spring Bootissa

Vastaavia projekteja on. Voit myös kirjoittaa lisäyksen Googleen, vaikka se ei aina näytä tietoja oikein.

Mutta koska projekti on opettavainen, yllä olevat vaikeudet eivät estäneet meitä :)

Реализация

Kaikki kirjoittivat Javalla, projektin lähdekoodi Githubissa.

Meitä oli 7, minä mukaan lukien. Kaikki tekivät vetopyynnön, ja minä tai joku muu henkilö ryhmästä hyväksyin tämän vetopyynnön.

Projektin toteutus kesti noin kuukauden - idean julistamisesta siihen tilaan, jonka nyt näet.

Jäsennöslisäaineet

Ensimmäinen asia, jonka yksi opiskelijoista teki, sen lisäksi, että perusluodasi puitteet tietokannan ympärille (entiteetit, tietovarastot jne.), jäsensi lisäosia olemassa olevalta tietosivustolta.

Tämä oli tarpeen jäljellä olevien kohtien testaamiseksi. Tietokannan täyttämiseen ei tarvita lisäkoodia. Useiden lisäaineiden nopean jäsentämisen jälkeen voimme edelleen testata käyttöliittymää, lajittelua ja suodatusta.

Spring Bootin avulla voit luoda useita profiileja. Profiili on tiedosto, jossa on asetukset.

Kehittäjäympäristössä käytimme profiilia, jossa oli paikallinen H2 DBMS ja HTTP-oletusportti (8080). Siten tietokanta tyhjennettiin aina, kun sovellus käynnistettiin. Jäsentäjä tässä tapauksessa pelasti meidät.

Haku ja suodatus

Tärkeä asia on haku ja suodatus. Kaupassa olevan henkilön täytyy klikata nopeasti lisäravinteen koodia tai jotain nimiä ja saada tulos.

Siksi Additive-entiteetissä on useita kenttiä. Tämä on lisäkoodi, vaihtoehtoiset nimet, kuvaus. Haku suoritetaan Tykkää-painikkeella kaikissa kentissä samanaikaisesti. Ja jos syötät [123] tai [amarantti], saat saman tuloksen.

Teimme kaiken tämän teknisten tietojen perusteella. Tämä on osa Springiä, jonka avulla voit kuvata perushakuehdot (kuten esimerkiksi jokin kenttä) ja sitten yhdistää nämä ehdot (OR tai AND).

Kun olet kirjoittanut tusinan verran eritelmiä, voit kysyä monimutkaisia ​​kyselyitä, kuten "kaikki vaaralliset väriainelisäaineet, joiden kuvauksessa on sana [punainen]".

Spring-tietokannan kanssa työskentelyn kannalta se on mielestäni erittäin kätevä. Tämä pätee erityisesti työskenneltäessä monimutkaisten kyselyiden kanssa. Ymmärrän, että tällä on omat lisäkustannukset, ja manuaalisesti kirjoitettu ja optimoitu SQL-kysely toimii nopeammin.

Mutta noudatan myös näkemystä, että kaikkea ei tarvitse optimoida etukäteen. Ensimmäisen version täytyy käynnistyä, toimia ja sallia yksittäisten osien vaihtaminen. Ja jos kuormaa on, nämä yksittäiset osat on kirjoitettava uudelleen.

Turvallisuus

Se on yksinkertaista. On käyttäjiä, joilla on ADMIN-rooli – he voivat muokata lisäyksiä, poistaa niitä ja lisätä uusia.

Ja on muitakin käyttäjiä (rekisteröityjä tai ei). He voivat vain selata lisäaineiden luetteloa ja etsiä tarvitsemiaan lisäaineita.

Spring Securitya käytettiin oikeuksien erottamiseen. Käyttäjätiedot tallennetaan tietokantaan.

Käyttäjät voivat rekisteröityä. Nyt se ei anna mitään. Jos opiskelijat jatkavat palvelun kehittämistä ja ottavat käyttöön joitain henkilökohtaisia ​​toimintoja, rekisteröityminen on hyödyllistä.

Responsiivisuus ja Bootstrap

Seuraava kohta on sopeutumiskyky. Palvelumme tapauksessa (ainakin sellaisena kuin sen näimme) suurin osa käyttäjistä on matkapuhelimien kanssa. Ja sinun on nopeasti katsottava lisäystä matkapuhelimellasi.

Jotta emme kärsisi CSS:stä, otimme Bootstrapin. Halpa, iloinen ja hyvännäköinen.

En voi kutsua käyttöliittymää ihanteelliseksi. Pääsivu on vielä vähemmän, ja lisäaineen yksityiskohtaisen kuvauksen sivu on kapea, matkapuhelimissa sitä on laajennettava.

Voin vain sanoa, että yritin häiritä työtä mahdollisimman vähän. Tämä on edelleen opiskelijaprojekti. Ja tietysti kaverit voivat korjata tällaiset hetket myöhemmin.

Minuutti SEO-optimointia

Koska olen ollut tiiviisti mukana web-sivustoissa ja kaikessa SEO:hon liittyvässä yli kaksi vuotta, en voinut julkaista projektia ilman vähintään SEO-optimointia.

Itse asiassa tein jokaiselle lisäosalle otsikon ja kuvauksen mallisukupolven. URL-osoite on melkein CNC, vaikka sitä voidaan lyhentää.

Lisäsin myös osallistujalaskurit. Sivusto lisättiin Yandex Webmasteriin ja Google Search Consoleen hakukoneiden varoitusten seuraamiseksi.

Se ei ole tarpeeksi. Sinun on myös lisättävä robots.txt ja sitemap.xml täydellistä indeksointia varten. Mutta jälleen kerran, tämä on opiskelijaprojekti. Kerron heille, mitä on tehtävä, ja jos he haluavat, he tekevät sen.

Sinun on liitettävä SSL-varmenne. Ilmainen Let's Encrypt toimii myös. Tein tämän Spring Bootille. Se ei ole vaikeaa, ja PS:n luottamus kasvaa.

Mitä projektille seuraavaksi?

Sitten itse asiassa valinta on poikien tehtävä. Projektin alkuperäinen idea sisälsi myös tuotetietokannan, jossa oli linkkejä lisäaineisiin.

Kirjoita "Snickers" ja katso, mitä ravintolisiä se sisältää.

Jo projektin alussa tiesin, että meillä ei tule olemaan yhtään tuotetta :) Siksi aloitimme vain lisäaineilla.

Nyt voit lisätä tuotteita ja esitellä uusia. pullat. Jos tietokanta on laaja, käyttäjiä tulee olemaan.

Käyttöönotto

Projekti otettiin käyttöön VPS:llä, Aruba Cloudilla. Tämä on halvin VPS, jonka voimme löytää. Olen käyttänyt tätä palveluntarjoajaa yli vuoden projekteissani ja olen siihen iloisesti tyytyväinen.

VPS-ominaisuudet: 1 Gt RAM, 1 CPU (en tiedä taajuudesta), 20 Gt SSD. Projektillemme tämä riittää.

Projekti on rakennettu tavallisella mvn clean -paketilla. Tuloksena on rasvapurkki - suoritettava tiedosto, jossa on kaikki riippuvuudet.

Automatisoidakseni tätä kaikkea, kirjoitin pari bash-komentosarjaa.

Ensimmäinen komentosarja poistaa vanhan jar-tiedoston ja rakentaa uuden.

Toinen komentosarja käynnistää kootun purkin ja välittää sille vaaditun profiilin nimen. Tämä profiili sisältää tietokantayhteystiedot.

DB - MySQL samalla VPS:llä.

Koko projektin uudelleenkäynnistys sisältää:

  • kirjaudu VPS:ään SSH:n kautta
  • lataa uusimmat git-muutokset
  • suorita local-jar.sh
  • tappaa käynnissä oleva sovellus
  • suorita launch-production.sh

Tämä toimenpide kestää kolme minuuttia. Tämä vaikuttaa minusta järkevältä valinnalta näin pieneen projektiin.

monimutkaisuus

Suurimmat vaikeudet hankkeen luomisessa olivat luonteeltaan organisatorisia.

On joukko ihmisiä, jotka näyttävät tietävän ohjelmoinnin, mutta eivät kovin hyvin. He tietävät jotain, mutta eivät silti osaa soveltaa sitä. Ja nyt heidän on saatava projekti valmiiksi kuukaudessa.

Tunnistin tässä ryhmässä ehdollisen ryhmänjohtajan. Hän piti Google-dokumenttia, jossa oli luettelo tehtävistä, jakoi tehtävät ja valvoi niiden hyväksymistä. Hän hyväksyi myös vetopyynnöt.

Pyysin myös oppilaita kirjoittamaan joka ilta lyhyen raportin projektin parissa tekemästään työstä. Jos et tehnyt mitään, ok, kirjoita vain "teinyt mitään". Tämä on hieno harjoitus ja saa sinut hieman jännittämään. Kaikki eivät valitettavasti noudattaneet tätä sääntöä.

Kaiken tämän liikkeen tarkoitus oli yksinkertainen. Muodosta tiimi, vaikka vain lyhyeksi ajaksi, työskentelemään yhdessä.

Halusin poikien kokevan, että heidän työnsä on tärkeää. Ymmärrä, että he eivät kirjoita pallomaista koodia tyhjiössä. Ja se, mitä he tekevät yhdessä, on projekti, jota ihmiset sitten käyttävät.

Ensimmäinen tai kaksi viikkoa oli kertymistä. Kokonaisuuksia ja pieniä sitoumuksia tehtiin hitaasti. Pikkuhiljaa sekoitin niitä, ja työstä tuli hauskempaa. Viestintä chatissa vilkastui, opiskelijat tarjosivat lisäyksiään.

Uskon, että tavoite on saavutettu. Projekti on valmis, kaverit saivat vähän kokemusta tiimityöskentelystä. Siellä on näkyvä, konkreettinen tulos, jota voidaan näyttää ystäville ja kehittää edelleen.

Tulokset

Oppiminen on mielenkiintoista.

Jokaisen tunnin jälkeen palasin henkisesti kiihtyneenä. Yritän tehdä jokaisesta parista ainutlaatuisen ja välittää mahdollisimman paljon tietoa.

On hienoa, kun opettamani ryhmä pääsee finaaliin. On erityisen siistiä, kun kaverit kirjoittavat "Sain työpaikan, kaikki on hyvin, kiitos." Vaikka se on juniori, vaikka se ei aluksi olisikaan suurin raha. Mutta tärkeintä on, että he ottivat askeleen kohti toiveitaan, ja he onnistuivat.

Vaikka artikkeli osoittautui melko laajaksi, kaikkia kohtia ei todellakaan ollut mahdollista kattaa. Siksi kirjoita kysymyksesi kommentteihin.

Lähde: will.com

Lisää kommentti