E-Dobavki – a tanítványaim által írt webszolgáltatás élelmiszer-adalékanyagok keresésére Java és Spring Boot nyelven

Bevezetés

Történt ugyanis, hogy az elmúlt közel két évben az egyik kijevi informatikai iskolában tanítottam programozást. Ezt csak szórakozásból kezdtem el csinálni. Egyszer írtam egy programozási blogot, aztán feladtam. De nem múlt el a vágy, hogy hasznos dolgokat meséljek el az érdeklődőknek.

A fő nyelvem a Java. Írtam rá játékokat mobiltelefonra, rádiókommunikációs szoftvereket és különféle webszolgáltatásokat. És Java-t tanítok.

Itt szeretném elmesélni az utolsó csoportom képzésének történetét. Hogyan jutottak el a képzés megkezdésétől a működő webszolgáltatás megírásáig. Hasznos webszolgáltatás táplálék-kiegészítők kereséséhez. Ingyenes, nincs reklám, regisztráció és SMS.

Maga a szolgáltatás itt van - E-Dobavki.com.

E-Dobavki – a tanítványaim által írt webszolgáltatás élelmiszer-adalékanyagok keresésére Java és Spring Boot nyelven

A projekt oktatási jellegű, és nem tartalmaz reklámot. Ahogy én megértem ez a kiadvány, linkeket adhat az ilyen projektekhez.

Mielőtt ismertetném magát a projektet, mesélek egy kicsit a csoport tanulási folyamatáról, e nélkül a kép nem lesz teljes.

9 hónapos képzés

Abban az iskolában, ahol tanítok, a Java tanfolyam 2 részre oszlik. Összességében a tanfolyam körülbelül 9 hónapot vesz igénybe, minden szünettel (újévi ünnepek, időközi projektek írása).

Az első rész a nyelv alapfogalmaival ismerteti meg a tanulókat. Változók, metódusok, OOP alapok és minden ilyesmi.

A kurzus második része azt írja elő, hogy a hallgató többé-kevésbé ért a Java nyelvű íráshoz, és kaphat egy „felnőtt” technológiai stacket. Minden az SQL-lel kezdődik, majd a JDBC-vel, a hibernálással. Aztán HTTP, szervletek. Következik a tavasz, egy kicsit a gitről és a mavenről. A diákok pedig végleges projekteket írnak.

Minden képzés modulokra oszlik. Hetente kétszer tartottam órákat. Egy óra időtartama két óra.

Az én megközelítésem a tanuláshoz

5 csoportot adtam ki. Két évig soknak tűnik, de szinte mindig párhuzamosan vezettem 2 csoportot.

Különféle megközelítéseket próbáltam.

Az első lehetőség az, hogy egy pár van hozzárendelve egy elméletet tartalmazó prezentációhoz. A második pár tiszta gyakorlat. Ez a megközelítés valahogy működött, de véleményem szerint nem volt túl hatékony.

A második lehetőség, amelyre rájöttem, és amelyen most dolgozom, az, hogy nem szentelek egy egész párat az elméletnek. Ehelyett 5-10 percig keverem az elmélet rövid szakaszait, és azonnal gyakorlati példákkal erősítem meg. Ez a megközelítés jobban működik.

Ha van elég idő, magamhoz hívom a diákokat, leültetem a laptopomhoz, és ők maguk csinálnak gyakorlati példákat. Remekül működik, de sajnos sok időt vesz igénybe.

Nem mindenki jut a végére

Kinyilatkoztatás volt számomra az a tény, hogy nem az egész csoport éri el a tanfolyam végét.

Megfigyeléseim szerint a hallgatóknak csak a fele írja a záródolgozatot. A legtöbbjük kiesik a tanfolyam első részében. Akik pedig eljutottak a második részhez, azok általában nem esnek le.

Különféle okok miatt távoznak.

Az első a komplexitás. Nem számít, mit mondanak, a Java nem a legegyszerűbb nyelv. A legegyszerűbb program megírásához is meg kell értened az osztály, a metódus fogalmát. És megérteni, miért kell írni public static void main(String[] arg) Van még néhány fogalom, amit meg kell érteni.

Hasonlítsd össze ezt a Turbo Pascallal, amivel sokan kezdték, köztük én is:

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

Tudomásom szerint ezt a problémát az iskola további vizsgálatok bevezetésével oldja meg. Most nem mindenki tanulhatja a Java-t. Ez még a koncepció stádiumában van, de a lépés egyértelműen a helyes.

A második ok pedig az alábbi képen látható:

E-Dobavki – a tanítványaim által írt webszolgáltatás élelmiszer-adalékanyagok keresésére Java és Spring Boot nyelven

Az emberek gyakran azt gondolják, hogy a programozás arról szól, hogy sok szöveget gépelünk, és sok pénzt kapunk érte. Mint egy szövegíró, csak több pénz.

A valóság egy kicsit más. Sok rutin kód, nyilvánvaló hibák, állandó tanulási folyamat. Érdekes, de nem mindenkinek.

Ezek a statisztikák. Eleinte idegesített, azt hittem, hogy valamit rosszul csinálok. Most már értem, hogy a statisztikák nagyjából ugyanazok a legtöbb kurzus esetében. Most nem aggódom miatta, hanem tanítsam azokat, akiket ez érdekel.

Szolgáltatási ötlet

Miután a hallgatók elvégezték a teljes kurzust, eljött az ideje a záróprojekt megírásának. Különféle ötletek voltak. Felajánlottak ToDo lapokat, projektmenedzsment projekteket és még valamit.

Valami egyszerűt, de hasznosat akartam csinálni. A kritériumom egyszerű volt: a barátaim és én használhatjuk-e. Az élelmiszer-adalékanyagok keresésére szolgáló webszolgáltatás megfelelt ezeknek a követelményeknek.

Az ötlet egyszerű. Ha boltban vásárol egy terméket, akkor valamiféle E-adalékot lát az összetételében. A kódból nem derül ki, hogy mennyire veszélyes vagy sem (és vannak olyan veszélyes adalékanyagok is, amelyeket sok országban tiltanak).

Megnyitja a weboldalt, beírja a kiegészítés nevét (számát, az alternatív nevek egyikét), és megkapja a kiegészítés összefoglalóját:

E-Dobavki – a tanítványaim által írt webszolgáltatás élelmiszer-adalékanyagok keresésére Java és Spring Boot nyelven

Vannak hasonló projektek. Egyszerűen beírhatja az adalékot a Google-be, bár nem mindig jeleníti meg helyesen az információkat.

De mivel a projekt oktatási jellegű, a fenti nehézségek nem állítottak meg minket :)

Реализация

Mindenki Java nyelven írt, a projekt forráskódja a Githubon.

7-en voltunk, köztük én is. Mindenki lehívási kérelmet adott, és én, vagy egy másik személy a csoportból elfogadtam ezt a lehívási kérelmet.

A projekt megvalósítása körülbelül egy hónapig tartott – az ötlet hangoztatásátõl a most látható állapotig.

Feldolgozó adalékok

Az egyik diák első dolga az adatbázis körüli keretrendszer (entitások, tárolók stb.) alapvető létrehozása mellett a kiegészítők elemzése volt egy meglévő információs oldalról.

Erre a fennmaradó pontok teszteléséhez volt szükség. Nincs szükség további kódra az adatbázis feltöltéséhez. Számos adalék gyors elemzése után tovább tesztelhettük a felhasználói felületet, a rendezést és a szűrést.

A Spring Boot lehetővé teszi több profil létrehozását. A profil egy beállításokat tartalmazó fájl.

A fejlesztői környezethez egy profilt használtunk helyi H2 DBMS-sel és az alapértelmezett HTTP porttal (8080). Így minden alkalommal, amikor az alkalmazás elindult, az adatbázis törlődött. Ebben az esetben az elemző volt az, ami megmentett minket.

Keresés és szűrés

Fontos pont a keresés és a szűrés. Az üzletben tartózkodó személynek gyorsan rá kell kattintania a kiegészítő kódjára vagy valamelyik nevére, és meg kell kapnia az eredményt.

Ezért az Additív entitásnak több mezője van. Ez az additív kód, alternatív nevek, leírás. A keresés egyidejűleg minden mezőben a Like gombbal történik. És ha beírja a [123] vagy [amarant] értéket, ugyanazt az eredményt kapja.

Mindezt a specifikációk alapján tettük. Ez a Spring része, amely lehetővé teszi az alapvető keresési feltételek leírását (például néhány mezőt), majd ezek kombinálását (VAGY vagy ÉS).

Miután megírt egy tucat specifikációt, összetett lekérdezéseket tehet fel, például „minden veszélyes színező adalékanyag, amelynek leírásában a [piros] szó szerepel”.

A Spring adatbázissal való munka szempontjából nagyon kényelmesnek találom. Ez különösen igaz összetett lekérdezések esetén. Megértem, hogy ennek megvan a maga többletköltsége, és a kézzel írt és optimalizált SQL-lekérdezés gyorsabban fog futni.

De ragaszkodom ahhoz az állásponthoz is, hogy nem kell mindent előre optimalizálni. Az első verziónak el kell indulnia, működnie kell, és lehetővé kell tennie az egyes alkatrészek cseréjét. És ha van terhelés, ezeket az egyes részeket át kell írni.

Biztonság

Ez egyszerű. Vannak olyan felhasználók, akiknek ADMIN szerepkörük van – szerkeszthetik a kiegészítéseket, törölhetik azokat, és újakat adhatnak hozzá.

És vannak más felhasználók (regisztráltak vagy nem). Csak böngészhetik az adalékanyagok listáját, és megkereshetik a szükségeseket.

A Spring Security a jogok elkülönítésére szolgált. A felhasználói adatok adatbázisban tárolódnak.

A felhasználók regisztrálhatnak. Most már nem ad semmit. Ha a hallgatók tovább fejlesztik a szolgáltatást és bevezetnek néhány személyre szabott funkciót, akkor a regisztráció jól jön.

Reagálóképesség és Bootstrap

A következő pont az alkalmazkodóképesség. Szolgáltatásunk esetében (legalábbis úgy, ahogy mi láttuk) a felhasználók többsége mobiltelefonnal lesz. És gyorsan meg kell néznie a kiegészítést mobiltelefonjáról.

Hogy ne szenvedjünk a CSS-től, a Bootstrapet vettük. Olcsó, vidám és jól néz ki.

A felületet nem nevezhetem ideálisnak. A főoldal még kevésbé, az adalékanyag részletes leírásának oldala pedig szűk, mobiltelefonon szélesíteni kell.

Csak azt tudom mondani, hogy igyekeztem a lehető legkevesebbet beleavatkozni a munkába. Ez még mindig diákprojekt. És persze az ilyen pillanatokat később korrigálhatják majd a srácok.

Egy perc SEO optimalizálás

Mivel több mint két éve foglalkozom honlapokkal és minden SEO-val kapcsolatos dologgal, nem tudtam projektet kiadni legalább alapvető SEO optimalizálás nélkül.

Valójában minden egyes kiegészítőhöz elkészítettem a Cím és a Leírás sablongenerálását. Az URL majdnem CNC, bár lehet rövidíteni is.

Hozzáadtam a jelenléti számlálókat is. Hozzáadtuk a webhelyet a Yandex Webmasterhez és a Google Search Console-hoz a keresőmotorok figyelmeztetései figyeléséhez.

Ez nem elég. A teljes indexeléshez hozzá kell adnia a robots.txt és a sitemap.xml fájlt is. De ez megint egy diákprojekt. Megmondom nekik, mit kell tenni, és ha akarják, megteszik.

Csatolnia kell egy SSL-tanúsítványt. Az ingyenes Let's Encrypt is működni fog. Ezt a Spring Boot-hoz csináltam. Nem nehéz megtenni, és a PS bizalma nő.

Mi a következő lépés a projekttel kapcsolatban?

Akkor tulajdonképpen a srácokon múlik a választás. A projekt eredeti ötlete egy olyan adatbázist is tartalmazott, amely tartalmazza az adalékanyagokra mutató hivatkozásokat.

Írja be a „Snickers”-et, és nézze meg, milyen táplálkozási adalékokat tartalmaz.

Már a projekt elején tudtam, hogy nem lesz termékünk :) Ezért csak adalékokkal kezdtük.

Most hozzáadhat termékeket, és továbbiakat is bevezethet. zsemle. Ha kiterjedt adatbázisról van szó, lesznek felhasználók.

Telepítés

A projektet VPS-en, Aruba Cloudon telepítették. Ez a legolcsóbb VPS, amit találtunk. Több mint egy éve használom ezt a szolgáltatót a projektjeimhez, és nagyon elégedett vagyok vele.

VPS jellemzők: 1 GB RAM, 1 CPU (a frekvenciát nem tudom), 20 GB SSD. A mi projektünkhöz ez elég.

A projekt a szokásos mvn clean csomag segítségével épül fel. Az eredmény egy fat jar – egy futtatható fájl minden függőséggel.

Hogy mindezt egy kicsit automatizáljam, írtam pár bash szkriptet.

Az első szkript törli a régi jar fájlt, és létrehoz egy újat.

A második szkript elindítja az összeállított jar-t, átadva neki a kívánt profil nevét. Ez a profil adatbázis-kapcsolati információkat tartalmaz.

DB - MySQL ugyanazon a VPS-en.

A projekt teljes újraindítása a következőket tartalmazza:

  • jelentkezzen be a VPS-be SSH-n keresztül
  • töltse le a legújabb git változtatásokat
  • futtassa a local-jar.sh-t
  • megöli a futó alkalmazást
  • futtassa a launch-production.sh-t

Ez az eljárás három percig tart. Ez okos választásnak tűnik számomra egy ilyen kis projekthez.

bonyolultság

A projekt létrehozásának fő nehézségei szervezési jellegűek voltak.

Van egy csoport ember, aki úgy tűnik, tudja, hogyan kell programozni, de nem túl jól. Tudnak valamit, de még mindig nem tudják igazán alkalmazni. És most egy hónapon belül be kell fejezniük a projektet.

Ebben a csoportban azonosítottam egy feltételes csoportvezetőt. Google-dokumentumot vezetett a feladatok listájával, szétosztotta a feladatokat, és ellenőrizte azok elfogadását. Elfogadta a húzási kéréseket is.

Arra is kértem a diákokat, hogy minden este írjanak egy rövid beszámolót a projekten végzett munkájukról. Ha nem csinált semmit, ok, csak írja be, hogy „nem csinált semmit”. Ez nagyszerű gyakorlat, és egy kicsit feszültté tesz. Sajnos nem mindenki tartotta be ezt a szabályt.

Az egész mozgalom célja egyszerű volt. Alkossatok csapatot, még ha csak rövid időre is, a közös munkára.

Azt akartam, hogy a srácok érezzék, a munkájuk fontos. Értsd meg, hogy nem vákuumban írnak gömbkódot. És amit együtt csinálnak, az egy projekt, amit aztán az emberek használni fognak.

Az első egy-két hét felépítés volt. Az entitások és a kis kötelezettségvállalások lassan történtek. Apránként felkavartam őket, és a munka vidámabbá vált. A chaten való kommunikáció élénkebbé vált, a hallgatók felajánlották kiegészítéseiket.

Úgy gondolom, hogy a célt sikerült elérni. A projekt elkészült, a srácok kaptak egy kis tapasztalatot a csapatmunkában. Van egy látható, kézzelfogható eredmény, amit meg lehet mutatni a barátoknak és tovább lehet fejleszteni.

Álláspontja

A tanulás érdekes.

Minden óra után érzelmileg izgatottan tértem vissza. Igyekszem minden párost egyedivé tenni, és a lehető legtöbb tudást átadni.

Jó, ha az általam tanított csoport a döntőbe jut. Különösen klassz, amikor a srácok azt írják: „Munkát kaptam, minden rendben, köszönöm.” Még akkor is, ha junior, akkor is, ha elsőre nem a legnagyobb pénz. De a legfontosabb az, hogy tettek egy lépést a vágyaik felé, és sikerült nekik.

Bár a cikk elég terjedelmesnek bizonyult, természetesen nem lehetett minden pontra kiterjedni. Ezért írja meg kérdéseit a megjegyzésekben.

Forrás: will.com

Hozzászólás