E-Dobavki - një shërbim në internet për kërkimin e aditivëve ushqimorë në Java dhe Spring Boot, shkruar nga studentët e mi

Paraqitje

Ndodhi që për gati dy vitet e fundit kam dhënë mësim programim në një nga shkollat ​​e IT në Kiev. Fillova ta bëj këtë vetëm për argëtim. Një herë shkrova një blog programimi, pastaj hoqa dorë prej tij. Por dëshira për t'u thënë gjëra të dobishme njerëzve të interesuar nuk është zhdukur.

Gjuha ime kryesore është Java. Kam shkruar lojëra për telefona celularë, softuer për komunikime radio dhe shërbime të ndryshme në internet. Dhe unë mësoj Java.

Këtu dua të tregoj historinë e stërvitjes së grupit tim të fundit. Si shkuan nga fillimi i trajnimit në shkrimin e një shërbimi në internet që funksionon. Një shërbim i dobishëm në internet për të gjetur suplemente ushqimore. Falas, pa reklama, regjistrim dhe SMS.

Vetë shërbimi është këtu - E-Dobavki.com.

E-Dobavki - një shërbim në internet për kërkimin e aditivëve ushqimorë në Java dhe Spring Boot, shkruar nga studentët e mi

Projekti është edukativ dhe nuk përmban asnjë reklamë. Siç kuptoj nga këtë botim, ju mund të ofroni lidhje me projekte të tilla.

Para se të përshkruaj vetë projektin, do t'ju tregoj pak për procesin e të mësuarit të grupit; pa këtë, fotografia do të jetë e paplotë.

Trajnim 9 mujor

Në shkollën ku jap mësim, kursi Java është i ndarë në 2 pjesë. Në total, kursi zgjat afërsisht 9 muaj, me të gjitha pushimet (festat e Vitit të Ri, koha për të shkruar projekte të ndërmjetme).

Pjesa e parë i njeh nxënësit me konceptet bazë të gjuhës. Variablat, metodat, bazat OOP dhe të gjitha ato gjëra.

Pjesa e dytë e kursit parashikon që studenti tashmë pak a shumë kupton se si të shkruajë në Java, dhe atij mund t'i jepet një grumbull teknologjie "të rritur". Gjithçka fillon me SQL, pastaj JDBC, Hibernate. Pastaj HTTP, servlets. Tjetra është Pranvera, pak për git dhe maven. Dhe studentët shkruajnë projektet përfundimtare.

I gjithë trajnimi është i ndarë në module. Unë mbaja mësime dy herë në javë. Kohëzgjatja e një mësimi është dy orë.

Qasja ime ndaj të mësuarit

Kam lëshuar 5 grupe. Duket shumë për dy vjet, por pothuajse gjithmonë drejtoja 2 grupe paralelisht.

Kam provuar qasje të ndryshme.

Opsioni i parë është që një çift të ndahet për një prezantim me një teori. Çifti i dytë është praktikë e pastër. Kjo qasje funksionoi disi, por nuk ishte shumë efektive, për mendimin tim.

Opsioni i dytë në të cilin kam ardhur dhe për të cilin jam duke punuar tani është që të mos i kushtoj një çift të tërë teorisë. Në vend të kësaj, unë përziej pjesë të shkurtra të teorisë për 5-10 minuta dhe i përforcoj menjëherë me shembuj praktikë. Kjo qasje funksionon më mirë.

Nëse ka kohë të mjaftueshme, i thërras studentët në shtëpinë time, i ulem në laptop dhe ata bëjnë vetë shembuj praktik. Punon shkëlqyeshëm, por fatkeqësisht kërkon shumë kohë.

Jo të gjithë e arrijnë deri në fund

Një zbulim për mua ishte fakti që jo i gjithë grupi arrin në fund të kursit.

Sipas vëzhgimeve të mia, vetëm gjysma e nxënësve shkruajnë projektin përfundimtar. Shumica e tyre eliminohen gjatë pjesës së parë të kursit. Dhe ata që kanë arritur në pjesën e dytë zakonisht nuk bien.

Ata largohen për arsye të ndryshme.

E para është kompleksiteti. Pavarësisht se çfarë thonë ata, Java nuk është gjuha më e thjeshtë. Për të shkruar edhe programin më të thjeshtë, duhet të kuptoni konceptin e një klase, një metodë. Dhe për të kuptuar pse duhet të shkruani kryesore e zbrazët statike publike (String[] arg) Ka disa koncepte të tjera për t'u kuptuar.

Krahasoni këtë me Turbo Pascal, me të cilën filluan shumë njerëz, përfshirë mua:

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

Me sa di unë, shkolla do ta zgjidhë këtë problem duke futur testime shtesë. Tani jo të gjithë mund të studiojnë Java. Ky është ende në fazën e konceptit, por hapi është qartazi i duhuri.

Dhe arsyeja e dytë është si në foton më poshtë:

E-Dobavki - një shërbim në internet për kërkimin e aditivëve ushqimorë në Java dhe Spring Boot, shkruar nga studentët e mi

Njerëzit shpesh mendojnë se programimi ka të bëjë me shtypjen e shumë tekstit dhe marrjen e shumë parave për të. Ashtu si një copywriter, vetëm më shumë para.

Realiteti është pak më ndryshe. Shumë kode rutinë, gabime të padukshme, një proces i vazhdueshëm mësimi. Është interesante, por jo për të gjithë.

Këto janë statistikat. Në fillim më mërziti, mendova se ndoshta po bëja diçka të gabuar. Tani e kuptoj që statistikat janë afërsisht të njëjta për shumicën e kurseve. Tani nuk shqetësohem për këtë, por mësoj ata njerëz që janë të interesuar për të.

Ideja e shërbimit

Pasi studentët kishin përfunduar të gjithë kursin, ishte koha për të shkruar projektin përfundimtar. Kishte ide të ndryshme. Ata ofruan fletë ToDo, projekte të menaxhimit të projekteve dhe diçka tjetër.

Doja të bëja diçka të thjeshtë por të dobishme. Kriteri im ishte i thjeshtë - nëse unë dhe miqtë e mi mund ta përdornim atë. Një shërbim në internet për kërkimin e aditivëve ushqimorë i plotësonte këto kërkesa.

Ideja është e thjeshtë. Kur blini një produkt në një dyqan, shihni një lloj shtese E në përbërje. Nga kodi nuk është e qartë se sa i rrezikshëm është apo jo (dhe ka edhe aditivë të rrezikshëm që janë të ndaluar në shumë vende).

Ju hapni faqen e internetit, shkruani emrin e suplementit (numrin, një nga emrat alternativë) dhe merrni një përmbledhje të suplementit:

E-Dobavki - një shërbim në internet për kërkimin e aditivëve ushqimorë në Java dhe Spring Boot, shkruar nga studentët e mi

Ka projekte të ngjashme. Ju gjithashtu thjesht mund të shkruani shtesën në Google, megjithëse jo gjithmonë i tregon saktë informacionin.

Por duke qenë se projekti është edukativ, vështirësitë e mësipërme nuk na penguan :)

Zbatimi

Të gjithë shkruan në Java, kodi burim i projektit në Github.

Ishim 7 veta, mes tyre edhe unë. Të gjithë bënë një kërkesë për tërheqje dhe unë, ose një person tjetër nga grupi, e pranuam këtë kërkesë për tërheqje.

Zbatimi i projektit zgjati rreth një muaj - nga shprehja e idesë në gjendjen që shihni tani.

Aditivë analizues

Gjëja e parë që bëri një nga studentët, përveç krijimit bazë të një kuadri rreth bazës së të dhënave (entitete, depo, etj.), ishte analizimi i shtesave nga një sajt informacioni ekzistues.

Kjo ishte e nevojshme për të testuar pikat e mbetura. Asnjë kod shtesë nuk nevojitet për të mbushur bazën e të dhënave. Pasi kemi analizuar shpejt disa aditivë, ne mund të testonim më tej ndërfaqen e përdoruesit, renditjen dhe filtrimin.

Spring Boot ju lejon të krijoni profile të shumta. Një profil është një skedar me cilësime.

Për mjedisin e devijimit, ne përdorëm një profil me një DBMS lokale H2 dhe portën e paracaktuar HTTP (8080). Kështu, sa herë që lansohej aplikacioni, baza e të dhënave fshihej. Analisti në këtë rast ishte gjëja që na shpëtoi.

Kërkoni dhe filtroni

Një pikë e rëndësishme është kërkimi dhe filtrimi. Një person në një dyqan duhet të klikojë shpejt në kodin e suplementit, ose një nga emrat, dhe të marrë rezultatin.

Prandaj, entiteti Shtues ka disa fusha. Ky është kodi shtesë, emrat alternativë, përshkrimi. Kërkimi kryhet duke përdorur Like në të gjitha fushat në të njëjtën kohë. Dhe nëse futni [123] ose [amaranth], do të merrni të njëjtin rezultat.

Ne e bëmë të gjithë këtë bazuar në Specifikimet. Kjo është një pjesë e Spring që ju lejon të përshkruani kushtet bazë të kërkimit (si disa fusha, për shembull), dhe më pas t'i kombinoni këto kushte (OR ose DHE).

Pasi të keni shkruar një duzinë specifikimesh, mund të bëni pyetje komplekse si "të gjithë aditivët e rrezikshëm të ngjyrosjes që kanë fjalën [e kuqe] në përshkrim".

Për sa i përket punës me bazën e të dhënave Spring, më duket shumë i përshtatshëm. Kjo është veçanërisht e vërtetë kur punoni me pyetje komplekse. E kuptoj që kjo ka shpenzimet e veta dhe një pyetje SQL e shkruar dhe e optimizuar me dorë do të funksionojë më shpejt.

Por unë gjithashtu i përmbahem këndvështrimit se nuk ka nevojë të optimizoni gjithçka paraprakisht. Versioni i parë duhet të fillojë, të funksionojë dhe të lejojë zëvendësimin e pjesëve individuale. Dhe nëse ka një ngarkesë, këto pjesë individuale duhet të rishkruhen.

Siguri

Është e thjeshtë. Ka përdorues me rolin ADMIN - ata mund të modifikojnë shtesat, t'i fshijnë ato dhe të shtojnë të reja.

Dhe ka përdorues të tjerë (të regjistruar ose jo). Ata mund të shfletojnë vetëm listën e aditivëve dhe të kërkojnë për ato që u nevojiten.

Spring Security u përdor për të ndarë të drejtat. Të dhënat e përdoruesit ruhen në një bazë të dhënash.

Përdoruesit mund të regjistrohen. Tani nuk jep asgjë. Nëse studentët vazhdojnë të zhvillojnë shërbimin dhe të prezantojnë disa funksione të personalizuara, atëherë regjistrimi do të jetë i dobishëm.

Përgjegjshmëria dhe Bootstrap

Pika tjetër është përshtatshmëria. Në rastin e shërbimit tonë (të paktën ashtu siç e pamë ne), shumica e përdoruesve do të jenë me celularë. Dhe duhet ta shikoni shpejt suplementin nga telefoni juaj celular.

Për të mos vuajtur me CSS, morëm Bootstrap. I lirë, i gëzuar dhe duket i mirë.

Nuk mund ta quaj ndërfaqen ideale. Faqja kryesore është edhe më pak, dhe faqja për një përshkrim të hollësishëm të aditivit është e ngushtë; në telefonat celularë duhet të bëhet më e gjerë.

Mund të them vetëm se jam përpjekur të ndërhyj sa më pak në punë. Ky është ende një projekt studentor. Dhe sigurisht, djemtë do të jenë në gjendje të korrigjojnë momente të tilla më vonë.

Një minutë optimizimi SEO

Meqenëse kam qenë i përfshirë nga afër në faqet e internetit dhe gjithçka që lidhet me SEO për më shumë se dy vjet, nuk mund të lëshoja një projekt pa të paktën optimizimin bazë të SEO.

Në fakt, unë bëra një gjenerim shabllonesh Titulli dhe Përshkrimi për çdo shtesë. URL-ja është pothuajse CNC, megjithëse mund të bëhet më e shkurtër.

Shtova edhe sportelet e frekuentimit. U shtua siti te Yandex Webmaster dhe Google Search Console për të monitoruar paralajmërimet nga motorët e kërkimit.

nuk mjafton. Ju gjithashtu duhet të shtoni robots.txt dhe sitemap.xml për indeksim të plotë. Por përsëri, ky është një projekt studentor. Unë do t'u them atyre se çfarë duhet bërë dhe nëse duan, do ta bëjnë.

Duhet të bashkëngjitni një certifikatë SSL. Pa pagesë Let's Encrypt do të funksionojë gjithashtu. E bëra këtë për çizmet e pranverës. Nuk është e vështirë të bëhet dhe besimi i PS-së rritet.

Çfarë është më pas për projektin?

Atëherë, në fakt, zgjedhja u takon djemve. Ideja origjinale e projektit përfshinte gjithashtu një bazë të dhënash të produkteve me lidhje me aditivët.

Futni "Snickers" dhe shikoni se çfarë aditivësh ushqimorë përmban.

Edhe në fillim të projektit e dija që nuk do të kishim asnjë produkt :) Prandaj, filluam vetëm me aditivë.

Tani mund të shtoni produkte dhe të prezantoni të tjera. simite. Nëse është një bazë të dhënash e gjerë, do të ketë përdorues.

Vendosja

Projekti u vendos në VPS, Aruba Cloud. Ky është VPS-ja më e lirë që mund të gjenim. Unë e kam përdorur këtë ofrues për më shumë se një vit për projektet e mia dhe jam shumë i kënaqur me të.

Karakteristikat e VPS: 1 GB RAM, 1 CPU (nuk e di për frekuencën), 20 GB SSD. Për projektin tonë kjo është e mjaftueshme.

Projekti është ndërtuar duke përdorur paketën e zakonshme të pastër mvn. Rezultati është një kavanoz yndyror - një skedar i ekzekutueshëm me të gjitha varësitë.

Për ta automatizuar pak të gjithë këtë, shkrova disa skripta bash.

Skripti i parë fshin skedarin e vjetër jar dhe ndërton një të ri.

Skripti i dytë lëshon kavanozin e montuar, duke i kaluar emrin e profilit të kërkuar. Ky profil përmban informacione për lidhjen e bazës së të dhënave.

DB - MySQL në të njëjtin VPS.

Rinisja totale e projektit përfshin:

  • hyni në VPS përmes SSH
  • shkarkoni ndryshimet më të fundit të git
  • drejtoj lokal-jar.sh
  • vras aplikacionin e ekzekutimit
  • drejtuar nisjen-prodhimin.sh

Kjo procedurë zgjat tre minuta. Kjo më duket si një zgjedhje e zgjuar për një projekt kaq të vogël.

kompleksitet

Vështirësitë kryesore në krijimin e projektit ishin të natyrës organizative.

Ka një grup njerëzish që duket se dinë të programojnë, por jo shumë mirë. Ata dinë diçka, por ende nuk mund ta zbatojnë atë. Dhe tani ata duhet ta përfundojnë projektin brenda një muaji.

Unë identifikova një drejtues ekipi të kushtëzuar në këtë grup. Ai mbante një Google Doc me një listë detyrash, shpërndante detyra dhe kontrollonte pranimin e tyre. Ai gjithashtu pranoi kërkesat për tërheqje.

Gjithashtu u kërkova studentëve të shkruanin një raport të shkurtër çdo mbrëmje mbi punën që bënë në projekt. Nëse nuk keni bërë asgjë, ok, thjesht shkruani "bërë asgjë". Kjo është praktikë e shkëlqyer dhe ju bën pak të tensionuar. Jo të gjithë e ndoqën këtë rregull, për fat të keq.

Qëllimi i gjithë kësaj lëvizjeje ishte i thjeshtë. Formoni një ekip, qoftë edhe për një kohë të shkurtër, për të punuar së bashku.

Doja që djemtë të mendonin se puna e tyre ishte e rëndësishme. Kuptoni që ata nuk shkruajnë kodin sferik në vakum. Dhe ajo që ata po bëjnë së bashku është një projekt që njerëzit do ta përdorin më pas.

Javën e parë ose dy ishte një rritje. Subjektet dhe angazhimet e vogla u bënë me ngadalësi. Pak nga pak i trazoja dhe puna u bë më argëtuese. Komunikimi në chat u bë më i gjallë, studentët ofruan shtesat e tyre.

Besoj se qëllimi është arritur. Projekti u krye, djemtë morën pak përvojë duke punuar në një ekip. Ekziston një rezultat i dukshëm, i prekshëm që mund t'u tregohet miqve dhe të zhvillohet më tej.

Gjetjet

Të mësuarit është interesant.

Pas çdo klase kthehesha i shqetësuar emocionalisht. Mundohem ta bëj çdo çift unik dhe të përcjell sa më shumë njohuri.

Është bukur kur grupi që mësoj arrin në finale. Është veçanërisht interesante kur djemtë shkruajnë "Kam një punë, gjithçka është në rregull, faleminderit". Edhe nëse është një junior, edhe nëse nuk janë paratë më të mëdha në fillim. Por më e rëndësishmja është se ata hodhën një hap drejt dëshirave të tyre dhe ia dolën.

Edhe pse artikulli doli të ishte mjaft voluminoz, sigurisht që nuk ishte e mundur të mbuloheshin të gjitha pikat. Prandaj, shkruani pyetjet tuaja në komente.

Burimi: www.habr.com

Shto një koment