E-Dobavki - serwis internetowy do wyszukiwania dodatków do żywności w języku Java i Spring Boot, napisany przez moich uczniów

Wprowadzenie

Tak się złożyło, że od prawie dwóch lat uczę programowania w jednej z kijowskich szkół informatycznych. Zacząłem to robić po prostu dla zabawy. Kiedyś pisałem bloga o programowaniu, ale potem dałem sobie z tym spokój. Ale chęć opowiadania przydatnych rzeczy zainteresowanym osobom nie zniknęła.

Moim głównym językiem jest Java. Pisałem na nim gry na telefony komórkowe, oprogramowanie do komunikacji radiowej i różne usługi internetowe. I uczę Javy.

Tutaj chcę opowiedzieć historię treningu mojej ostatniej grupy. Jak przeszli od rozpoczęcia szkolenia do napisania działającej usługi internetowej. Przydatny serwis internetowy umożliwiający wyszukiwanie suplementów diety. Bezpłatnie, bez reklam, rejestracji i SMS-ów.

Sama usługa jest tutaj - E-Dobavki.com.

E-Dobavki - serwis internetowy do wyszukiwania dodatków do żywności w języku Java i Spring Boot, napisany przez moich uczniów

Projekt ma charakter edukacyjny i nie zawiera żadnych reklam. Jak rozumiem z tę publikację, możesz podać linki do takich projektów.

Zanim opiszę sam projekt, opowiem trochę o procesie uczenia się grupy, bez tego obraz będzie niepełny.

9 miesięcy szkolenia

W szkole, w której uczę, kurs Java podzielony jest na 2 części. W sumie kurs trwa około 9 miesięcy, ze wszystkimi przerwami (wakacje sylwestrowe, czas na pisanie projektów pośrednich).

Pierwsza część wprowadza studentów w podstawowe pojęcia języka. Zmienne, metody, podstawy OOP i tak dalej.

Druga część kursu przewiduje, że student już mniej więcej rozumie, jak pisać w Javie i może otrzymać „dorosły” stos technologii. Wszystko zaczyna się od SQL, następnie JDBC, Hibernate. Następnie HTTP, serwlety. Następny jest Spring, trochę o gicie i mavenie. A studenci piszą projekty końcowe.

Całość szkoleń podzielona jest na moduły. Zajęcia prowadziłam dwa razy w tygodniu. Czas trwania jednej lekcji wynosi dwie godziny.

Moje podejście do nauki

Wypuściłem 5 grup. Wydaje się, że to dużo jak na dwa lata, ale prawie zawsze prowadziłem 2 grupy równolegle.

Próbowałem różnych podejść.

Pierwsza opcja polega na tym, że na prezentację z teorią przeznaczona jest jedna para. Druga para to czysta praktyka. To podejście w jakiś sposób zadziałało, ale moim zdaniem nie było zbyt skuteczne.

Druga opcja, do której doszedłem i nad którą obecnie pracuję, to nie poświęcanie całej pary teorii. Zamiast tego miksuję krótkie fragmenty teorii przez 5-10 minut i od razu wzmacniam je praktycznymi przykładami. To podejście działa lepiej.

Jeżeli starcza mi czasu, zwołuję uczniów do siebie, siadam przy laptopie i sami wykonują praktyczne przykłady. Działa świetnie, ale niestety zajmuje dużo czasu.

Nie każdemu udaje się dotrwać do końca

Rewelacją dla mnie był fakt, że nie cała grupa dotarła do końca kursu.

Z moich obserwacji wynika, że ​​tylko połowa studentów pisze projekt końcowy. Większość z nich jest eliminowana w pierwszej części kursu. A ci, którzy dotarli do drugiej części, zwykle nie odpadają.

Odchodzą z różnych powodów.

Pierwszą z nich jest złożoność. Bez względu na to, co mówią, Java nie jest najprostszym językiem. Aby napisać nawet najprostszy program, trzeba zrozumieć pojęcie klasy, metody. I żeby zrozumieć, dlaczego trzeba pisać public static void main(String[] arg) Jest jeszcze kilka pojęć do zrozumienia.

Porównaj to z Turbo Pascalem, od którego zaczynało wiele osób, w tym ja:

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

Z tego, co wiem, szkoła rozwiąże ten problem, wprowadzając dodatkowe egzaminy. Teraz nie każdy może uczyć się języka Java. Jest to wciąż na etapie koncepcji, ale jest to zdecydowanie właściwy krok.

Drugi powód jest taki jak na obrazku poniżej:

E-Dobavki - serwis internetowy do wyszukiwania dodatków do żywności w języku Java i Spring Boot, napisany przez moich uczniów

Ludzie często myślą, że programowanie polega na pisaniu dużej ilości tekstu i zarabianiu za to dużych pieniędzy. Jak copywriter, tylko więcej pieniędzy.

Rzeczywistość jest trochę inna. Dużo rutynowego kodu, nieoczywistych błędów, ciągła nauka. To ciekawe, ale nie dla każdego.

Takie są statystyki. Na początku mnie to zdenerwowało, pomyślałam, że może robię coś nie tak. Teraz rozumiem, że statystyki są w przybliżeniu takie same dla większości kursów. Teraz już się tym nie przejmuję, ale uczę tych, którzy są tym zainteresowani.

Pomysł na usługę

Po ukończeniu przez uczniów całego kursu przyszedł czas na napisanie końcowego projektu. Były różne pomysły. Oferowali arkusze ToDo, projekty zarządzania projektami i coś jeszcze.

Chciałem zrobić coś prostego, ale przydatnego. Moje kryterium było proste – czy ja i moi przyjaciele moglibyśmy z tego skorzystać. Serwis internetowy umożliwiający wyszukiwanie dodatków do żywności spełnił te wymagania.

Pomysł jest prosty. Kupując produkt w sklepie, widzisz w składzie jakiś rodzaj E-dodatku. Z kodeksu nie wynika jasno, jak bardzo jest to niebezpieczne (istnieją też niebezpieczne dodatki zakazane w wielu krajach).

Otwierasz stronę, wpisujesz nazwę suplementu (numer, jedna z alternatywnych nazw) i otrzymujesz podsumowanie suplementu:

E-Dobavki - serwis internetowy do wyszukiwania dodatków do żywności w języku Java i Spring Boot, napisany przez moich uczniów

Istnieją podobne projekty. Możesz także po prostu wpisać dodatek w Google, chociaż nie zawsze wyświetla on poprawnie informacje.

Ponieważ jednak projekt ma charakter edukacyjny, powyższe trudności nas nie powstrzymały :)

realizacja

Wszyscy pisali w Javie, kod źródłowy projektu na Githubie.

Było nas 7, łącznie ze mną. Wszyscy złożyli prośbę o ściągnięcie i ja lub inna osoba z grupy zaakceptowałem tę prośbę.

Realizacja projektu trwała około miesiąca – od wyrażenia pomysłu do stanu, który widzisz obecnie.

Parsowanie dodatków

Pierwszą rzeczą, którą zrobił jeden z uczniów, poza podstawowym stworzeniem frameworka wokół bazy danych (jednostek, repozytoriów itp.), było przeanalizowanie dodatków z istniejącej witryny informacyjnej.

Było to konieczne do przetestowania pozostałych punktów. Do zapełnienia bazy danych nie jest potrzebny żaden dodatkowy kod. Po szybkim przeanalizowaniu kilku dodatków mogliśmy dalej testować interfejs użytkownika, sortowanie i filtrowanie.

Spring Boot umożliwia tworzenie wielu profili. Profil to plik z ustawieniami.

W środowisku deweloperskim użyliśmy profilu z lokalnym systemem DBMS H2 i domyślnym portem HTTP (8080). W ten sposób przy każdym uruchomieniu aplikacji baza danych była czyszczona. W tym przypadku parser nas uratował.

Wyszukiwanie i filtrowanie

Ważnym punktem jest wyszukiwanie i filtrowanie. Osoba w sklepie musi szybko kliknąć na kod suplementu, lub jedną z nazw, i otrzymać wynik.

Dlatego encja Dodatek ma kilka pól. To jest kod dodatku, alternatywne nazwy, opis. Wyszukiwanie odbywa się za pomocą opcji Like we wszystkich polach jednocześnie. A jeśli wpiszesz [123] lub [amarant], otrzymasz ten sam wynik.

Wszystko to zrobiliśmy w oparciu o Specyfikacje. Jest to część Springa, która pozwala opisać podstawowe warunki wyszukiwania (np. jakieś pole), a następnie połączyć te warunki (OR lub AND).

Po napisaniu kilkunastu specyfikacji możesz zadawać złożone zapytania typu „wszystkie niebezpieczne dodatki barwiące, które mają w opisie słowo [czerwony]”.

Jeśli chodzi o pracę z bazą danych Spring, uważam ją za bardzo wygodną. Jest to szczególnie prawdziwe podczas pracy ze złożonymi zapytaniami. Rozumiem, że ma to swój własny narzut, a ręcznie napisane i zoptymalizowane zapytanie SQL będzie działać szybciej.

Ale ja też stoję na stanowisku, że nie trzeba wszystkiego z góry optymalizować. Pierwsza wersja musi się uruchomić, działać i umożliwiać wymianę poszczególnych części. A jeśli jest obciążenie, te poszczególne części trzeba przepisać.

Bezpieczeństwo

To proste. Istnieją użytkownicy z rolą ADMIN - mogą edytować dodatki, usuwać je i dodawać nowe.

Są też inni użytkownicy (zarejestrowani lub nie). Mogą jedynie przeglądać listę dodatków i wyszukiwać te, których potrzebują.

Do oddzielenia praw zastosowano Spring Security. Dane użytkownika przechowywane są w bazie danych.

Użytkownicy mogą się rejestrować. Teraz to nic nie daje. Jeśli studenci będą nadal rozwijać serwis i wprowadzać spersonalizowane funkcje, to rejestracja się przyda.

Responsywność i Bootstrap

Następną kwestią jest zdolność adaptacji. W przypadku naszego serwisu (przynajmniej tak to widzieliśmy), większość użytkowników będzie korzystać z telefonów komórkowych. A dodatek trzeba szybko przeglądać na telefonie komórkowym.

Aby nie cierpieć z powodu CSS, wzięliśmy Bootstrap. Tani, wesoły i wygląda przyzwoicie.

Interfejsu nie mogę nazwać idealnym. Strona główna jest jeszcze mniejsza, a strona ze szczegółowym opisem dodatku jest wąska, w telefonach komórkowych trzeba ją poszerzyć.

Mogę tylko powiedzieć, że starałem się jak najmniej ingerować w pracę. To wciąż projekt studencki. I oczywiście chłopaki będą mogli później poprawić takie chwile.

Minuta optymalizacji SEO

Ponieważ od ponad dwóch lat zajmuję się stronami internetowymi i wszystkim, co jest związane z SEO, nie mógłbym wypuścić projektu bez przynajmniej podstawowej optymalizacji SEO.

W rzeczywistości stworzyłem szablon generowania tytułu i opisu dla każdego dodatku. Adres URL jest prawie CNC, chociaż można go skrócić.

Dodałem także liczniki obecności. Dodano witrynę do Yandex Webmaster i Google Search Console, aby monitorować ostrzeżenia z wyszukiwarek.

To nie wystarczy. Aby uzyskać pełne indeksowanie, musisz także dodać pliki robots.txt i sitemap.xml. Ale to znowu projekt studencki. Powiem im, co trzeba zrobić, i jeśli będą chcieli, zrobią to.

Musisz dołączyć certyfikat SSL. Darmowy Let's Encrypt również będzie działać. Zrobiłem to dla Spring Boot. Nie jest to trudne, a zaufanie PS wzrasta.

Co dalej z projektem?

Tak naprawdę wybór należy do chłopaków. Pierwotny pomysł projektu obejmował także bazę produktów z linkami do dodatków.

Wpisz „Snickers” i zobacz, jakie dodatki odżywcze zawiera.

Już na początku projektu wiedziałam, że nie będziemy mieli żadnych produktów :) Dlatego zaczęliśmy tylko od dodatków.

Teraz możesz dodawać produkty i wprowadzać kolejne. bułeczki. Jeśli jest to rozbudowana baza danych, znajdą się użytkownicy.

Rozlokowanie

Projekt został wdrożony na VPS, Aruba Cloud. To najtańszy VPS, jaki udało nam się znaleźć. Korzystam z usług tego dostawcy przy realizacji moich projektów od ponad roku i jestem z niego bardzo zadowolony.

Charakterystyka VPS: 1 GB RAM, 1 CPU (nie wiem jak z częstotliwością), 20 GB SSD. Dla naszego projektu to wystarczy.

Projekt jest zbudowany przy użyciu zwykłego pakietu mvn clean. Rezultatem jest gruby słoik - plik wykonywalny ze wszystkimi zależnościami.

Aby to wszystko trochę zautomatyzować, napisałem kilka skryptów basha.

Pierwszy skrypt usuwa stary plik jar i tworzy nowy.

Drugi skrypt uruchamia złożony słoik, przekazując mu nazwę wymaganego profilu. Ten profil zawiera informacje o połączeniu z bazą danych.

DB - MySQL na tym samym VPS.

Całkowity restart projektu obejmuje:

  • zaloguj się do VPS przez SSH
  • pobierz najnowsze zmiany git
  • uruchom local-jar.sh
  • zabij działającą aplikację
  • uruchom launch-production.sh

Ta procedura trwa trzy minuty. Wydaje mi się to mądrym wyborem w przypadku tak małego projektu.

Trudności

Główne trudności w tworzeniu projektu miały charakter organizacyjny.

Istnieje grupa ludzi, którzy wydają się umieć programować, ale niezbyt dobrze. Wiedzą coś, ale nadal nie potrafią tego zastosować. A teraz muszą zakończyć projekt w ciągu miesiąca.

W tej grupie zidentyfikowałem warunkowego lidera zespołu. Prowadził Dokument Google z listą zadań, rozdzielał zadania i kontrolował ich akceptację. Przyjmował także prośby o ściągnięcie.

Poprosiłem także uczniów, aby każdego wieczoru pisali krótki raport na temat pracy wykonanej nad projektem. Jeśli nic nie zrobiłeś, ok, po prostu napisz „nic nie zrobiłeś”. To świetna praktyka, która powoduje lekkie napięcie. Nie wszyscy, niestety, zastosowali się do tej zasady.

Cel całego tego ruchu był prosty. Utwórz zespół, nawet jeśli tylko na krótki czas, aby współpracować.

Chciałem, żeby chłopaki poczuli, że ich praca jest ważna. Zrozum, że nie piszą kodu sferycznego w próżni. A to, co wspólnie robią, to projekt, z którego ludzie będą później korzystać.

Pierwszy tydzień lub dwa to było narastanie. Jednostki i małe zatwierdzenia były dokonywane powoli. Stopniowo je poruszałem i praca stała się przyjemniejsza. Komunikacja na czacie stała się ożywiona, studenci oferowali swoje dodatki.

Wierzę, że cel został osiągnięty. Projekt ukończony, chłopaki nabrali trochę doświadczenia w pracy zespołowej. Daje to widoczny, namacalny rezultat, który można pokazać znajomym i dalej rozwijać.

odkrycia

Nauka jest interesująca.

Po każdych zajęciach wracałam podekscytowana. Staram się aby każda para była wyjątkowa i przekazała jak najwięcej wiedzy.

Miło jest, gdy grupa, którą uczę, dociera do finału. Szczególnie fajnie jest, gdy faceci piszą: „Mam pracę, wszystko jest w porządku, dziękuję”. Nawet jeśli jest to junior, nawet jeśli na początku nie są to największe pieniądze. Ale najważniejsze, że zrobili krok w stronę swoich pragnień i udało im się.

Choć artykuł okazał się dość obszerny, z całą pewnością nie udało się omówić wszystkich punktów. Dlatego napiszcie swoje pytania w komentarzach.

Źródło: www.habr.com

Dodaj komentarz