E-Dobavki - webová služba pro vyhledávání potravinářských přídatných látek v Javě a Spring Boot, kterou napsali moji studenti

úvod

Stalo se, že poslední skoro dva roky učím programování na jedné z IT škol v Kyjevě. Začal jsem to dělat jen tak pro zábavu. Kdysi jsem napsal blog o programování, pak jsem to vzdal. Ale touha říkat užitečné věci zainteresovaným lidem nezmizela.

Můj hlavní jazyk je Java. Psal jsem na něm hry pro mobilní telefony, software pro radiokomunikaci a různé webové služby. A učím Javu.

Zde chci vyprávět příběh tréninku mé poslední skupiny. Jak prošli od začátku školení k psaní fungující webové služby. Užitečná webová služba pro vyhledávání doplňků výživy. Zdarma, žádná reklama, registrace a SMS.

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

E-Dobavki - webová služba pro vyhledávání potravinářských přídatných látek v Javě a Spring Boot, kterou napsali moji studenti

Projekt je vzdělávací a neobsahuje žádnou reklamu. Jak jsem pochopil z této publikace, můžete poskytnout odkazy na takové projekty.

Než popíšu samotný projekt, řeknu vám něco o procesu učení skupiny; bez toho bude obrázek neúplný.

9měsíční trénink

Na škole, kde učím, je kurz Java rozdělen na 2 části. Celkově kurz trvá přibližně 9 měsíců se všemi přestávkami (novoroční svátky, čas na psaní středně pokročilých projektů).

První část seznamuje studenty se základními pojmy jazyka. Proměnné, metody, základy OOP a všechny tyhle věci.

Druhá část kurzu zajišťuje, že student již víceméně rozumí psaní v Javě a může mu být poskytnut „dospělý“ technologický stack. Všechno to začíná SQL, pak JDBC, Hibernate. Pak HTTP, servlety. Další je Spring, něco málo o git a maven. A studenti píší závěrečné projekty.

Všechna školení jsou rozdělena do modulů. Kurzy jsem vedl dvakrát týdně. Délka jedné lekce jsou dvě hodiny.

Můj přístup k učení

Uvolnil jsem 5 skupin. Zdá se to na dva roky hodně, ale skoro vždy jsem vedl paralelně 2 skupiny.

Zkoušel jsem různé přístupy.

První možností je, že jedna dvojice je přidělena pro prezentaci s teorií. Druhý pár je čistá praxe. Tento přístup nějak fungoval, ale podle mého názoru nebyl příliš účinný.

Druhá možnost, ke které jsem dospěl a na které nyní pracuji, je nevěnovat teorii celý pár. Místo toho míchám krátké úseky teorie po dobu 5-10 minut a hned je posiluji praktickými příklady. Tento přístup funguje lépe.

Pokud je dostatek času, zavolám si studenty k sobě, posadím je k notebooku a oni sami udělají praktické příklady. Funguje to skvěle, ale bohužel to zabere hodně času.

Ne každý to dotáhne do konce

Zjevením pro mě byla skutečnost, že ne celá skupina se dostane na konec kurzu.

Podle mého pozorování píše závěrečný projekt jen polovina studentů. Většina z nich je vyřazena během první části kurzu. A ti, kteří se dostali do druhé části, obvykle nespadnou.

Odcházejí z různých důvodů.

První je složitost. Bez ohledu na to, co říkají, Java není nejjednodušší jazyk. Abyste mohli napsat i ten nejjednodušší program, musíte pochopit koncept třídy, metody. A abyste pochopili, proč musíte psát public static void main(String[] arg) Existuje několik dalších pojmů k pochopení.

Porovnejte to s Turbo Pascalem, se kterým začalo mnoho lidí, včetně mě:

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

Pokud vím, škola tento problém vyřeší zavedením dodatečného testování. Nyní ne každý bude moci studovat Java. To je zatím ve fázi konceptu, ale krok je jednoznačně správný.

A druhý důvod je jako na obrázku níže:

E-Dobavki - webová služba pro vyhledávání potravinářských přídatných látek v Javě a Spring Boot, kterou napsali moji studenti

Lidé si často myslí, že programování je o psaní velkého množství textu a získávání peněz za to. Jako copywriter, jen více peněz.

Realita je trochu jiná. Spousta rutinního kódu, nezjevné chyby, neustálý proces učení. Je to zajímavé, ale ne pro každého.

Toto jsou statistiky. Nejdřív mě to naštvalo, myslel jsem si, že možná dělám něco špatně. Teď už chápu, že statistiky jsou u většiny kurzů přibližně stejné. Teď se o to nestarám, ale učím lidi, kteří o to mají zájem.

Nápad na službu

Jakmile studenti dokončili celý kurz, nastal čas napsat závěrečný projekt. Byly různé nápady. Nabízeli listy úkolů, projekty projektového řízení a něco jiného.

Chtěl jsem udělat něco jednoduchého, ale užitečného. Moje kritérium bylo jednoduché – zda ​​ho můžeme použít já a moji přátelé. Tyto požadavky splnila webová služba pro vyhledávání potravinářských přídatných látek.

Myšlenka je jednoduchá. Když si koupíte produkt v obchodě, vidíte ve složení jakési E-aditivum. Z kodexu není jasné, jak moc je nebo není nebezpečný (a existují i ​​nebezpečné přísady, které jsou v mnoha zemích zakázány).

Otevřete webovou stránku, zadáte název doplňku (číslo, jeden z alternativních názvů) a získáte shrnutí doplňku:

E-Dobavki - webová služba pro vyhledávání potravinářských přídatných látek v Javě a Spring Boot, kterou napsali moji studenti

Existují podobné projekty. Můžete také jednoduše zadat přísadu do Googlu, i když ne vždy zobrazuje informace správně.

Ale protože je projekt vzdělávací, výše uvedené potíže nás nezastavily :)

uskutečnění

Všichni psali v Javě, zdrojový kód projektu na Github.

Bylo nás 7 včetně mě. Všichni vznesli žádost o stažení a já nebo jiná osoba ze skupiny jsme tuto žádost přijali.

Realizace projektu trvala zhruba měsíc – od vyslovení myšlenky do stavu, který vidíte nyní.

Analyzační přísady

První věc, kterou jeden ze studentů udělal, kromě základního vytvoření rámce kolem databáze (entit, repozitářů atd.), byla analýza doplňků z existujícího informačního webu.

To bylo nutné k otestování zbývajících bodů. K naplnění databáze není potřeba žádný další kód. Po rychlé analýze několika přísad jsme mohli dále testovat uživatelské rozhraní, třídění a filtrování.

Spring Boot umožňuje vytvořit více profilů. Profil je soubor s nastavením.

Pro dev prostředí jsme použili profil s lokálním H2 DBMS a výchozím HTTP portem (8080). Při každém spuštění aplikace tak byla databáze vyčištěna. Analyzátor nás v tomto případě zachránil.

Vyhledávání a filtrování

Důležitým bodem je vyhledávání a filtrování. Osoba v obchodě musí rychle kliknout na kód doplňku nebo na jedno z názvů a získat výsledek.

Entita Aditivní má proto několik polí. Toto je aditivní kód, alternativní názvy, popis. Vyhledávání se provádí pomocí Like ve všech polích současně. A pokud zadáte [123] nebo [amaranth], dostanete stejný výsledek.

To vše jsme udělali na základě specifikací. Toto je část Spring, která vám umožňuje popsat základní podmínky vyhledávání (jako například nějaké pole) a poté tyto podmínky kombinovat (OR nebo AND).

Po napsání tuctu specifikací můžete klást složité dotazy jako „všechna nebezpečná barviva, která mají v popisu slovo [červená]“.

Z hlediska práce s databází Spring to považuji za velmi pohodlné. To platí zejména při práci se složitými dotazy. Chápu, že to má svou vlastní režii a ručně psaný a optimalizovaný SQL dotaz poběží rychleji.

Držím se ale i toho pohledu, že není potřeba vše dopředu optimalizovat. První verze by se měla spustit, fungovat a umožnit výměnu jednotlivých dílů. A pokud dojde k zátěži, je potřeba tyto jednotlivé části přepsat.

Bezpečnost

Je to jednoduché. Existují uživatelé s rolí ADMIN - mohou upravovat přírůstky, mazat je a přidávat nové.

A jsou tu další uživatelé (registrovaní nebo ne). Mohou pouze procházet seznam aditiv a hledat ty, které potřebují.

K oddělení práv byla použita Spring Security. Uživatelská data jsou uložena v databázi.

Uživatelé se mohou registrovat. Teď to nedává nic. Pokud budou studenti službu nadále rozvíjet a zavádět nějaké personalizované funkce, registrace se jim bude hodit.

Odezva a Bootstrap

Dalším bodem je přizpůsobivost. V případě naší služby (alespoň tak, jak jsme ji viděli) bude většina uživatelů s mobilními telefony. A dodatek si potřebujete rychle prohlédnout z mobilu.

Abychom netrpěli s CSS, vzali jsme Bootstrap. Levné, veselé a vypadá slušně.

Rozhraní nemohu označit za ideální. Hlavní stránka je ještě méně a stránka pro podrobný popis aditiva je úzká, na mobilních telefonech je potřeba ji rozšířit.

Mohu jen říci, že jsem se snažil do práce zasahovat co nejméně. Jedná se stále o studentský projekt. A takové momenty budou kluci samozřejmě moci později napravit.

Minuta SEO optimalizace

Vzhledem k tomu, že se webům a všemu kolem SEO věnuji již více než dva roky, nemohl bych vydat projekt bez alespoň základní SEO optimalizace.

Ve skutečnosti jsem pro každý doplněk vytvořil šablonu pro nadpis a popis. URL je téměř CNC, i když může být kratší.

Přidal jsem i počítadla docházky. Stránky byly přidány do služby Yandex Webmaster a Google Search Console za účelem sledování varování z vyhledávačů.

To nestačí. Pro úplné indexování je také potřeba přidat robots.txt a sitemap.xml. Ale opět se jedná o studentský projekt. Řeknu jim, co je třeba udělat, a když budou chtít, udělají to.

Musíte připojit certifikát SSL. Fungovat bude i bezplatné Let's Encrypt. Udělal jsem to pro Spring Boot. Není to těžké a důvěra PS se zvyšuje.

Co bude s projektem dál?

Pak už je výběr vlastně na chlapech. Původní myšlenka projektu zahrnovala také databázi produktů s odkazy na aditiva.

Zadejte „Snickers“ a podívejte se, jaké nutriční přísady obsahuje.

Už na začátku projektu jsem věděl, že nebudeme mít žádné produkty :) Začali jsme proto pouze s aditivy.

Nyní můžete přidávat produkty a představovat další. buchty. Pokud se jedná o rozsáhlou databázi, budou uživatelé.

Rozvinutí

Projekt byl nasazen na VPS, Aruba Cloud. Toto je nejlevnější VPS, které jsme mohli najít. Tohoto poskytovatele využívám pro své projekty již více než rok a jsem s ním příjemně spokojen.

Vlastnosti VPS: 1 GB RAM, 1 CPU (frekvenci nevím), 20 GB SSD. Pro náš projekt to stačí.

Projekt je vytvořen pomocí obvyklého čistého balíčku mvn. Výsledkem je fat jar - spustitelný soubor se všemi závislostmi.

Abych to všechno trochu zautomatizoval, napsal jsem pár bash skriptů.

První skript odstraní starý soubor jar a vytvoří nový.

Druhý skript spustí sestavený jar a předá mu název požadovaného profilu. Tento profil obsahuje informace o připojení k databázi.

DB - MySQL na stejném VPS.

Celkový restart projektu zahrnuje:

  • přihlásit se do VPS přes SSH
  • stáhněte si nejnovější změny git
  • spustit local-jar.sh
  • zabít spuštěnou aplikaci
  • spustit launch-production.sh

Tento postup trvá tři minuty. Zdá se mi to jako chytrá volba pro tak malý projekt.

Potíže

Hlavní potíže při vytváření projektu byly organizačního charakteru.

Existuje skupina lidí, která vypadá, že programovat umí, ale ne moc dobře. Něco vědí, ale stále to neumí pořádně aplikovat. A nyní potřebují dokončit projekt za měsíc.

V této skupině jsem identifikoval podmíněného vedoucího týmu. Vedl Google Doc se seznamem úkolů, distribuoval úkoly a kontroloval jejich přijímání. Přijímal také žádosti o stažení.

Požádal jsem také studenty, aby každý večer napsali krátkou zprávu o práci, kterou na projektu vykonali. Pokud jste nic neudělali, ok, napište „neudělali nic“. To je skvělá praxe a dostanete trochu napětí. Bohužel ne všichni toto pravidlo dodržovali.

Účel celého tohoto pohybu byl jednoduchý. Vytvořte tým, i když jen na krátkou dobu, ke spolupráci.

Chtěl jsem, aby kluci cítili, že jejich práce je důležitá. Pochopte, že nepíší sférický kód ve vakuu. A to, co spolu dělají, je projekt, který pak lidé využijí.

První týden nebo dva byly nahromadění. Entity a malé závazky byly prováděny pomalu. Postupně jsem je rozhýbal a práce mě bavila. Komunikace na chatu se stala živější, studenti nabízeli své doplnění.

Věřím, že cíl byl splněn. Projekt je hotový, kluci získali trochu zkušeností s prací v týmu. Existuje viditelný, hmatatelný výsledek, který lze ukázat přátelům a dále rozvíjet.

Závěry

Učení je zajímavé.

Po každé hodině jsem se vrátil emocionálně rozrušený. Snažím se, aby každý pár byl jedinečný a zprostředkoval co nejvíce znalostí.

Je fajn, když se skupina, kterou učím, dostane do finále. Zvlášť skvělé je, když kluci napíšou: "Mám práci, všechno je v pořádku, děkuji." I když je to junior, i když to zpočátku nejsou ty největší peníze. Ale nejdůležitější je, že udělali krok ke svým touhám a uspěli.

Přestože se článek ukázal jako poměrně objemný, rozhodně se nepodařilo obsáhnout všechny body. Své dotazy proto pište do komentářů.

Zdroj: www.habr.com

Přidat komentář