E-Dobavki – webová služba na vyhľadávanie prídavných látok v potravinách v jazyku Java a Spring Boot, ktorú napísali moji študenti

Úvod

Stalo sa, že posledné takmer dva roky učím programovanie na jednej z IT škôl v Kyjeve. Začal som to robiť len tak pre zábavu. Raz som napísal programátorský blog, potom som to vzdal. Ale túžba povedať užitočné veci zainteresovaným ľuďom nezmizla.

Mojím hlavným jazykom je Java. Písal som na ňom mobilné hry, rádiový softvér a rôzne webové služby. A učím Javu.

Tu chcem porozprávať príbeh tréningu mojej poslednej skupiny. Ako prešli od začiatku školenia k napísaniu fungujúcej webovej služby. Užitočná webová služba na vyhľadávanie doplnkov výživy. Zadarmo, žiadna reklama, registrácia a SMS.

Samotná služba je tu - E-Dobavki.com.

E-Dobavki – webová služba na vyhľadávanie prídavných látok v potravinách v jazyku Java a Spring Boot, ktorú napísali moji študenti

Projekt je vzdelávací a neobsahuje žiadnu reklamu. Ako som pochopil z túto publikáciu, môžete poskytnúť odkazy na takéto projekty.

Predtým, ako opíšem samotný projekt, poviem vám niečo o učebnom procese skupiny; bez toho bude obraz neúplný.

9-mesačný tréning

Na škole, kde učím, je kurz Java rozdelený na 2 časti. Celkovo kurz trvá približne 9 mesiacov so všetkými prestávkami (novoročné sviatky, čas na písanie stredne pokročilých projektov).

Prvá časť zoznamuje študentov so základnými pojmami jazyka. Premenné, metódy, základy OOP a všetky tieto veci.

Druhá časť kurzu zabezpečuje, že študent už viac-menej rozumie písať v Jave a môže mu byť poskytnutý „dospelý“ technologický zásobník. Všetko to začína SQL, potom JDBC, Hibernate. Potom HTTP, servlety. Ďalej je tu Spring, niečo o git a maven. A študenti píšu záverečné projekty.

Všetky školenia sú rozdelené do modulov. Kurzy som viedol dvakrát týždenne. Dĺžka jednej vyučovacej hodiny je dve hodiny.

Môj prístup k učeniu

Uvoľnil som 5 skupín. Zdá sa to na dva roky veľa, ale takmer vždy som paralelne viedol 2 skupiny.

Skúšal som rôzne prístupy.

Prvá možnosť je, že jeden pár je vyčlenený na prezentáciu s teóriou. Druhý pár je čistá prax. Tento prístup nejako fungoval, ale podľa mňa nebol veľmi efektívny.

Druhá možnosť, ku ktorej som dospel a ktorej sa teraz venujem, je nevenovať celý pár teórii. Namiesto toho miešam krátke úseky teórie 5-10 minút a hneď ich posilňujem praktickými príkladmi. Tento prístup funguje lepšie.

Ak je dostatok času, zavolám si študentov k sebe, posadím ich k notebooku a oni sami robia praktické príklady. Funguje to skvele, ale bohužiaľ to zaberie veľa času.

Nie každý to dotiahne do konca

Odhalením pre mňa bola skutočnosť, že nie celá skupina sa dostane na koniec kurzu.

Podľa mojich pozorovaní píše záverečný projekt len ​​polovica študentov. Väčšina z nich je vylúčená počas prvej časti kurzu. A tí, ktorí sa dostali do druhej časti, zvyčajne neodpadnú.

Odchádzajú z rôznych dôvodov.

Prvým je zložitosť. Bez ohľadu na to, čo hovoria, Java nie je najjednoduchší jazyk. Ak chcete napísať aj ten najjednoduchší program, musíte pochopiť pojem triedy, metódy. A aby ste pochopili, prečo musíte písať public static void main(String[] arg) Je potrebné pochopiť ešte niekoľko pojmov.

Porovnajte to s Turbo Pascalom, s ktorým začali mnohí ľudia vrátane mňa:

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

Pokiaľ viem, škola tento problém vyrieši zavedením dodatočného testovania. Teraz nie každý môže študovať Java. Toto je stále v štádiu konceptu, ale krok je jednoznačne správny.

A druhý dôvod je ako na obrázku nižšie:

E-Dobavki – webová služba na vyhľadávanie prídavných látok v potravinách v jazyku Java a Spring Boot, ktorú napísali moji študenti

Ľudia si často myslia, že programovanie je o písaní veľkého množstva textu a získavaní za to veľa peňazí. Ako copywriter, len viac peňazí.

Realita je trochu iná. Veľa rutinného kódu, neprehliadnuteľné chyby, neustály proces učenia. Je to zaujímavé, ale nie pre každého.

Toto sú štatistiky. Najprv ma to rozrušilo, myslel som si, že možno robím niečo zle. Teraz už chápem, že štatistiky sú pri väčšine kurzov približne rovnaké. Teraz sa o to nestarám, ale učím ľudí, ktorí o to majú záujem.

Nápad na službu

Keď študenti dokončili celý kurz, prišiel čas na písanie záverečného projektu. Boli rôzne nápady. Ponúkali hárky úloh, projekty riadenia projektov a niečo iné.

Chcel som urobiť niečo jednoduché, ale užitočné. Moje kritérium bolo jednoduché – či ho dokážeme použiť ja a moji priatelia. Webová služba na vyhľadávanie potravinárskych prídavných látok spĺňala tieto požiadavky.

Myšlienka je jednoduchá. Keď si kúpite produkt v obchode, vidíte v zložení nejaký druh E-aditíva. Z kódexu nie je jasné, nakoľko je alebo nie je nebezpečný (a existujú aj nebezpečné prísady, ktoré sú v mnohých krajinách zakázané).

Otvoríte webovú stránku, zadáte názov doplnku (číslo, jeden z alternatívnych názvov) a získate zhrnutie doplnku:

E-Dobavki – webová služba na vyhľadávanie prídavných látok v potravinách v jazyku Java a Spring Boot, ktorú napísali moji študenti

Existujú podobné projekty. Môžete tiež jednoducho zadať aditívum do Google, aj keď nie vždy zobrazuje informácie správne.

Ale keďže je projekt vzdelávací, vyššie uvedené ťažkosti nás nezastavili :)

Реализация

Všetci písali v Jave, zdrojový kód projektu na Github.

Bolo nás 7 vrátane mňa. Každý podal žiadosť o stiahnutie a ja alebo iná osoba zo skupiny sme túto žiadosť prijali.

Realizácia projektu trvala približne mesiac – od vyslovenia myšlienky až po stav, ktorý vidíte teraz.

Analyzačné prísady

Prvá vec, ktorú jeden zo študentov urobil, okrem základného vytvorenia rámca okolo databázy (entít, repozitárov atď.), bola analýza doplnkov z existujúcej informačnej stránky.

To bolo potrebné na testovanie zostávajúcich bodov. Na naplnenie databázy nie je potrebný žiadny ďalší kód. Po rýchlom analyzovaní niekoľkých prísad sme mohli ďalej testovať používateľské rozhranie, triedenie a filtrovanie.

Spring Boot vám umožňuje vytvoriť viacero profilov. Profil je súbor s nastaveniami.

Pre dev prostredie sme použili profil s lokálnym H2 DBMS a predvoleným HTTP portom (8080). Pri každom spustení aplikácie sa teda databáza vyčistila. Analyzátor nás v tomto prípade zachránil.

Vyhľadávanie a filtrovanie

Dôležitým bodom je vyhľadávanie a filtrovanie. Osoba v obchode musí rýchlo kliknúť na kód doplnku alebo na jedno z mien a získať výsledok.

Aditívna entita má preto niekoľko polí. Toto je kód aditíva, alternatívne názvy, popis. Vyhľadávanie sa vykonáva pomocou funkcie Páči sa mi to vo všetkých poliach súčasne. A ak zadáte [123] alebo [amaranth], dostanete rovnaký výsledok.

To všetko sme urobili na základe špecifikácií. Toto je časť Spring, ktorá vám umožňuje opísať základné podmienky vyhľadávania (ako napríklad niektoré pole) a potom tieto podmienky kombinovať (ALEBO alebo AND).

Po napísaní tuctu špecifikácií môžete klásť zložité otázky, ako napríklad „všetky nebezpečné farbiace prísady, ktoré majú v popise slovo [červené]“.

Z hľadiska práce s databázou Spring to považujem za veľmi pohodlné. To platí najmä pri práci so zložitými dopytmi. Chápem, že to má svoju vlastnú réžiu a manuálne napísaný a optimalizovaný SQL dotaz bude prebiehať rýchlejšie.

No držím sa aj toho pohľadu, že netreba všetko dopredu optimalizovať. Prvá verzia by mala začať, fungovať a umožniť výmenu jednotlivých dielov. A ak dôjde k zaťaženiu, je potrebné tieto jednotlivé časti prepísať.

zabezpečenia

Je to jednoduché. Existujú používatelia s rolou ADMIN - môžu upravovať pridania, mazať ich a pridávať nové.

A sú tu ďalší používatelia (registrovaní alebo nie). Môžu si len prezerať zoznam aditív a hľadať tie, ktoré potrebujú.

Na oddelenie práv bola použitá jarná bezpečnosť. Užívateľské údaje sú uložené v databáze.

Používatelia sa môžu registrovať. Teraz to nedáva nič. Ak budú študenti naďalej rozvíjať službu a zavádzať niektoré personalizované funkcie, registrácia sa im bude hodiť.

Schopnosť reagovať a bootstrap

Ďalším bodom je prispôsobivosť. V prípade našej služby (aspoň tak, ako sme to videli my) bude väčšina používateľov s mobilnými telefónmi. A dodatok si potrebujete rýchlo pozrieť z mobilu.

Aby sme netrpeli CSS, zobrali sme Bootstrap. Lacné, veselé a vyzerá slušne.

Rozhranie nemôžem označiť za ideálne. Hlavná stránka je ešte menej a stránka na podrobný popis aditíva je úzka, na mobilných telefónoch ju treba rozšíriť.

Môžem len povedať, že som sa snažil čo najmenej zasahovať do práce. Stále ide o študentský projekt. A samozrejme, že takéto momenty budú môcť chalani neskôr napraviť.

Minúta SEO optimalizácie

Keďže sa webstránkam a všetkému okolo SEO venujem už viac ako dva roky, nemohol by som vydať projekt bez aspoň základnej SEO optimalizácie.

V skutočnosti som pre každý doplnok vytvoril šablónu s názvom a popisom. Adresa URL je takmer CNC, aj keď sa dá skrátiť.

Pridal som aj počítadlá dochádzky. Stránka bola pridaná do služby Yandex Webmaster a Google Search Console na sledovanie upozornení z vyhľadávacích nástrojov.

To nestačí. Na úplné indexovanie musíte pridať aj súbory robots.txt a sitemap.xml. Ale opäť ide o študentský projekt. Poviem im, čo treba urobiť, a ak budú chcieť, urobia to.

Musíte pripojiť certifikát SSL. Fungovať bude aj bezplatná aplikácia Let's Encrypt. Urobil som to pre Spring Boot. Nie je to ťažké a dôvera PS sa zvyšuje.

Čo bude s projektom ďalej?

Potom je vlastne výber na chlapoch. Pôvodná myšlienka projektu zahŕňala aj databázu produktov s odkazmi na aditíva.

Zadajte „Snickers“ a uvidíte, aké výživové prísady obsahuje.

Už pri štarte projektu som vedela, že nebudeme mať žiadne produkty :) Začali sme preto len s aditívami.

Teraz môžete pridávať produkty a zavádzať ďalšie. buchty. Ak ide o rozsiahlu databázu, nájdu sa používatelia.

Nasadenie

Projekt bol nasadený na VPS, Aruba Cloud. Toto je najlacnejšie VPS, aké sme mohli nájsť. Tohto poskytovateľa využívam na svoje projekty už viac ako rok a som s ním veľmi spokojný.

Vlastnosti VPS: 1 GB RAM, 1 CPU (neviem o frekvencii), 20 GB SSD. Pre náš projekt to stačí.

Projekt je vytvorený pomocou bežného balíka mvn clean. Výsledkom je tučný jar - spustiteľný súbor so všetkými závislosťami.

Aby som to všetko trochu zautomatizoval, napísal som pár bash skriptov.

Prvý skript vymaže starý súbor jar a vytvorí nový.

Druhý skript spustí zostavený jar a odovzdá mu názov požadovaného profilu. Tento profil obsahuje informácie o pripojení k databáze.

Databáza je MySQL na rovnakom VPS.

Celkový reštart projektu zahŕňa:

  • prihláste sa do VPS cez SSH
  • stiahnite si najnovšie zmeny git
  • spustiť local-jar.sh
  • zabiť spustenú aplikáciu
  • spustiť launch-production.sh

Tento postup trvá tri minúty. Zdá sa mi to ako múdra voľba pre taký malý projekt.

zložitosť

Hlavné ťažkosti pri vytváraní projektu boli organizačného charakteru.

Existuje skupina ľudí, ktorí vraj programovať vedia, no nie veľmi dobre. Niečo vedia, no stále to nevedia reálne uplatniť. A teraz potrebujú dokončiť projekt za mesiac.

V tejto skupine som identifikoval podmieneného vedúceho tímu. Viedol Google Doc so zoznamom úloh, distribuoval úlohy a kontroloval ich prijímanie. Prijímal aj žiadosti o stiahnutie.

Požiadal som tiež študentov, aby každý večer napísali krátku správu o práci, ktorú vykonali na projekte. Ak ste nič neurobili, ok, napíšte „neurobili ste nič“. Je to skvelá prax a dostane vás trochu do napätia. Nie všetci toto pravidlo dodržali, žiaľ.

Cieľ celého tohto pohybu bol jednoduchý. Vytvorte tím, aj keď len na krátky čas, aby ste spolupracovali.

Chcel som, aby chalani cítili, že ich práca je dôležitá. Pochopte, že sférický kód nepíšu vo vákuu. A to, čo spolu robia, je projekt, ktorý potom ľudia využijú.

Prvý týždeň alebo dva boli nahromadenie. Entity a malé záväzky sa robili pomaly. Postupne som ich rozhýbal a práca sa stala zábavnejšou. Komunikácia na chate sa stala živšou, študenti ponúkali svoje doplnky.

Verím, že cieľ sa podarilo naplniť. Projekt je hotový, chalani získali malé skúsenosti s prácou v tíme. Existuje viditeľný, hmatateľný výsledok, ktorý možno ukázať priateľom a ďalej rozvíjať.

Závery

Učenie je zaujímavé.

Po každej hodine som sa vrátil emocionálne rozrušený. Snažím sa, aby každý pár bol jedinečný a sprostredkoval čo najviac vedomostí.

Je fajn, keď sa skupina, ktorú učím, dostane do finále. Je obzvlášť skvelé, keď chlapci napíšu: „Mám prácu, všetko je v poriadku, ďakujem.“ Aj keď ide o juniora, aj keď to spočiatku nie sú najväčšie peniaze. Najdôležitejšie však je, že urobili krok k svojim túžbam a podarilo sa im to.

Aj keď sa článok ukázal byť dosť objemný, určite nebolo možné obsiahnuť všetky body. Preto svoje otázky píšte do komentárov.

Zdroj: hab.com

Pridať komentár