E-Dobavki - vefþjónusta til að leita að matvælaaukefnum í Java og Spring Boot, skrifuð af nemendum mínum

Inngangur

Það gerðist að síðustu tæp tvö ár hef ég kennt forritun í einum upplýsingatækniskólanna í Kyiv. Ég byrjaði að gera þetta bara til gamans. Ég skrifaði einu sinni forritunarblogg, þá gafst ég upp á því. En löngunin til að segja áhugasömum hlutum hefur ekki horfið.

Aðaltungumálið mitt er Java. Ég skrifaði leiki fyrir farsíma, hugbúnað fyrir fjarskipti og ýmsar vefþjónustur á það. Og ég kenni Java.

Hér vil ég segja söguna af þjálfun síðasta hóps míns. Hvernig þeir fóru frá því að hefja þjálfun yfir í að skrifa virka vefþjónustu. Gagnleg vefþjónusta til að finna fæðubótarefni. Ókeypis, engar auglýsingar, skráning og SMS.

Þjónustan sjálf er hér - E-Dobavki.com.

E-Dobavki - vefþjónusta til að leita að matvælaaukefnum í Java og Spring Boot, skrifuð af nemendum mínum

Verkefnið er fræðandi og inniheldur engar auglýsingar. Eins og mér skilst af þessa útgáfu, þú getur veitt tengla á slík verkefni.

Áður en ég lýsi verkefninu sjálfu mun ég segja þér aðeins frá námsferli hópsins; án þess verður myndin ófullkomin.

9 mánaða þjálfun

Í skólanum þar sem ég kenni er Java áfanganum skipt í 2 hluta. Alls tekur námskeiðið um það bil 9 mánuði, með öllum hléum (nýársfrí, tími til að skrifa milliverkefni).

Fyrsti hluti kynnir nemendum grunnhugtök tungumálsins. Breytur, aðferðir, OOP grunnatriði og allt það dót.

Í seinni hluta námskeiðsins er kveðið á um að nemandinn skilji nú þegar meira og minna hvernig á að skrifa á Java og hann getur fengið „fullorðna“ tæknistafla. Þetta byrjar allt með SQL, síðan JDBC, Hibernate. Síðan HTTP, servlets. Næst er vorið, smá um git og maven. Og nemendur skrifa lokaverkefni.

Öllum þjálfun er skipt í einingar. Ég hélt námskeið tvisvar í viku. Lengd einnar kennslustundar er tvær klukkustundir.

Mín nálgun við nám

Ég gaf út 5 hópa. Það virðist vera mikið í tvö ár, en ég stýrði næstum alltaf 2 hópum samhliða.

Ég hef prófað mismunandi aðferðir.

Fyrsti kosturinn er að einu pari er úthlutað fyrir kynningu með kenningu. Annað parið er hrein æfing. Þessi nálgun virkaði einhvern veginn, en hún var ekki mjög áhrifarík, að mínu mati.

Annar kosturinn sem ég kom að og sem ég er að vinna að núna er að helga ekki heilu hjónunum fræði. Þess í stað blanda ég stuttum köflum úr kenningum í 5-10 mínútur og styrki þá strax með hagnýtum dæmum. Þessi nálgun virkar betur.

Ef nægur tími gefst kalla ég nemendur heim til mín, sest við fartölvuna mína og þeir gera sjálfir hagnýt dæmi. Það virkar frábærlega, en því miður tekur það mikinn tíma.

Það eru ekki allir sem ná sér á strik

Opinberun fyrir mig var sú staðreynd að ekki nær allur hópurinn á námskeiðinu.

Samkvæmt athugunum mínum skrifar aðeins helmingur nemenda lokaverkefnið. Flest þeirra falla út á fyrri hluta námskeiðsins. Og þeir sem hafa náð seinni hlutanum detta venjulega ekki af.

Þeir fara af ýmsum ástæðum.

Í fyrsta lagi er flókið. Sama hvað þeir segja, Java er ekki einfaldasta tungumálið. Til að skrifa jafnvel einfaldasta forritið þarftu að skilja hugmyndina um flokk, aðferð. Og til að skilja hvers vegna þú þarft að skrifa public static void main(String[] arg) Það eru nokkur fleiri hugtök til að skilja.

Berðu þetta saman við Turbo Pascal, sem er það sem margir byrjuðu á, þar á meðal ég:

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

Eftir því sem ég best veit mun skólinn leysa þetta vandamál með því að taka upp viðbótarpróf. Nú geta ekki allir lært Java. Þetta er enn á hugmyndastigi en skrefið er greinilega rétt.

Og önnur ástæðan er eins og á myndinni hér að neðan:

E-Dobavki - vefþjónusta til að leita að matvælaaukefnum í Java og Spring Boot, skrifuð af nemendum mínum

Fólk heldur oft að forritun snúist um að skrifa mikinn texta og fá mikinn pening fyrir það. Eins og auglýsingatextahöfundur, aðeins meiri peningar.

Raunveruleikinn er aðeins annar. Mikið af venjubundnum kóða, óljósar villur, stöðugt námsferli. Það er áhugavert, en ekki fyrir alla.

Þetta eru tölfræðin. Í fyrstu kom það mér í uppnám, ég hélt að ég væri kannski að gera eitthvað rangt. Nú skilst mér að tölfræðin sé nokkurn veginn sú sama fyrir flest námskeið. Nú hef ég ekki áhyggjur af því, en kenna þeim sem hafa áhuga á því.

Þjónustuhugmynd

Þegar nemendur höfðu lokið öllu námskeiðinu var kominn tími til að skrifa lokaverkefnið. Það voru mismunandi hugmyndir. Þeir buðu upp á verkefnablöð, verkefnastjórnunarverkefni og eitthvað fleira.

Mig langaði að gera eitthvað einfalt en gagnlegt. Mín viðmiðun var einföld - hvort ég og vinir mínir gætum notað það. Vefþjónusta til að leita að aukefnum í matvælum uppfyllti þessar kröfur.

Hugmyndin er einföld. Þegar þú kaupir vöru í búð sérðu einhvers konar E-aukefni í samsetningunni. Það er ekki ljóst af kóðanum hversu hættulegt það er eða ekki (og það eru líka hættuleg aukefni sem eru bönnuð í mörgum löndum).

Þú opnar vefsíðuna, slærð inn nafn viðbótarinnar (númer, eitt af öðrum nöfnum) og færð samantekt á viðbótinni:

E-Dobavki - vefþjónusta til að leita að matvælaaukefnum í Java og Spring Boot, skrifuð af nemendum mínum

Það eru sambærileg verkefni. Þú getur líka einfaldlega slegið aukefnið inn í Google, þó það sýni upplýsingarnar ekki alltaf rétt.

En þar sem verkefnið er fræðandi stöðvuðu erfiðleikarnir hér að ofan okkur ekki :)

Framkvæmd

Allir skrifuðu á Java, frumkóða verkefnisins á Github.

Við vorum 7, þar á meðal ég. Allir lögðu fram pull beiðni og ég, eða annar aðili úr hópnum, samþykkti þessa pull beiðni.

Framkvæmd verkefnisins tók um það bil mánuð - frá því að hugmyndinni var komið á framfæri til ástandsins sem þú sérð núna.

Að flokka aukefni

Það fyrsta sem einn af nemendunum gerði, fyrir utan grunngerð ramma utan um gagnagrunninn (einingar, geymslur o.s.frv.), var að flokka viðbætur frá núverandi upplýsingasíðu.

Þetta var nauðsynlegt til að prófa þau stig sem eftir voru. Enginn viðbótarkóði er nauðsynlegur til að fylla gagnagrunninn. Eftir að hafa flokkað nokkur aukefni fljótt gætum við prófað notendaviðmótið, flokkun og síun enn frekar.

Spring Boot gerir þér kleift að búa til mörg snið. Prófíll er skrá með stillingum.

Fyrir þróunarumhverfið notuðum við prófíl með staðbundnu H2 DBMS og sjálfgefna HTTP tengi (8080). Þannig var gagnagrunnurinn hreinsaður í hvert skipti sem forritið var ræst. Þjálfarinn í þessu tilfelli var hluturinn sem bjargaði okkur.

Leit og síun

Mikilvægur punktur er leit og síun. Einstaklingur í verslun verður að smella fljótt á kóðann á viðbótinni, eða eitt af nöfnunum, og fá niðurstöðuna.

Þess vegna hefur Additive einingin nokkra reiti. Þetta er viðbótarkóði, önnur nöfn, lýsing. Leitin er framkvæmd með því að nota Like á öllum sviðum á sama tíma. Og ef þú slærð inn [123] eða [amaranth] færðu sömu niðurstöðu.

Við gerðum þetta allt út frá forskriftum. Þetta er hluti af Spring sem gerir þér kleift að lýsa grunnleitarskilyrðum (eins og sumum sviðum, til dæmis), og sameina síðan þessar aðstæður (OR eða OG).

Eftir að hafa skrifað tugi forskrifta geturðu spurt flóknar fyrirspurna eins og „öll hættuleg litarefni sem hafa orðið [rautt] í lýsingunni.

Hvað varðar að vinna með Spring gagnagrunninn þá finnst mér hann mjög þægilegur. Þetta á sérstaklega við þegar unnið er með flóknar fyrirspurnir. Mér skilst að þetta hafi sína eigin kostnað og handvirkt skrifuð og fínstillt SQL fyrirspurn mun keyra hraðar.

En ég held líka fast við það sjónarmið að það þurfi ekki að hagræða öllu fyrirfram. Fyrsta útgáfan verður að byrja, virka og leyfa skipti á einstökum hlutum. Og ef það er álag þarf að endurskrifa þessa einstöku hluta.

Öryggi

Það er einfalt. Það eru notendur með ADMIN hlutverkið - þeir geta breytt viðbótum, eytt þeim og bætt við nýjum.

Og það eru aðrir notendur (skráðir eða ekki). Þeir geta aðeins skoðað lista yfir aukefni og leitað að þeim sem þeir þurfa.

Voröryggi var notað til að aðskilja réttindi. Notendagögn eru geymd í gagnagrunni.

Notendur geta skráð sig. Nú gefur það ekki neitt. Ef nemendur halda áfram að þróa þjónustuna og kynna sérsniðnar aðgerðir þá mun skráning koma sér vel.

Viðbragðsflýti og Bootstrap

Næsta atriði er aðlögunarhæfni. Þegar um er að ræða þjónustu okkar (að minnsta kosti eins og við sáum hana), mun meirihluti notenda vera með farsíma. Og þú þarft að skoða viðbótina fljótt úr farsímanum þínum.

Til þess að þjást ekki af CSS tókum við Bootstrap. Ódýrt, glaðlegt og lítur vel út.

Ég get ekki kallað viðmótið tilvalið. Aðalsíðan er enn síður svo og síðan fyrir nákvæma lýsingu á aukefninu er þröng, í farsímum þarf að gera hana breiðari.

Ég get ekki sagt annað en að ég hafi reynt að trufla starfið sem minnst. Þetta er samt nemendaverkefni. Og auðvitað munu krakkarnir geta leiðrétt slík augnablik síðar.

Mínúta af SEO hagræðingu

Þar sem ég hef tekið mikinn þátt í vefsíðum og öllu sem tengist SEO í meira en tvö ár gæti ég ekki gefið út verkefni án að minnsta kosti grunn SEO hagræðingar.

Reyndar bjó ég til sniðmátsgerð af titli og lýsingu fyrir hverja viðbót. Vefslóðin er nánast CNC, þó hægt sé að stytta hana.

Ég bætti líka við aðsóknarteljum. Bætti síðunni við Yandex Webmaster og Google Search Console til að fylgjast með viðvörunum frá leitarvélum.

Það er ekki nóg. Þú þarft líka að bæta við robots.txt og sitemap.xml til að fá fulla flokkun. En aftur, þetta er nemendaverkefni. Ég mun segja þeim hvað þarf að gera og ef þeir vilja þá munu þeir gera það.

Þú þarft að hengja SSL vottorð. Ókeypis Let's Encrypt mun líka virka. Ég gerði þetta fyrir Spring Boot. Það er ekki erfitt að gera og traust PS eykst.

Hvað er framundan í verkefninu?

Þá er í rauninni valið hjá strákunum. Upprunalega hugmynd verkefnisins innihélt einnig gagnagrunn yfir vörur með tenglum á aukefni.

Sláðu inn „Snickers“ og sjáðu hvaða næringaraukefni það inniheldur.

Jafnvel í upphafi verkefnisins vissi ég að við myndum ekki vera með neinar vörur :) Þess vegna byrjuðum við aðeins með aukaefni.

Nú geturðu bætt við vörum og kynnt fleiri. bollur. Ef það er umfangsmikill gagnagrunnur verða notendur.

Dreifing

Verkefnið var sent á VPS, Aruba Cloud. Þetta er ódýrasta VPS sem við gátum fundið. Ég hef notað þessa þjónustuveitu í meira en ár fyrir verkefnin mín og er skemmtilega ánægð með það.

VPS eiginleikar: 1 GB vinnsluminni, 1 CPU (ég veit ekki um tíðnina), 20 GB SSD. Fyrir verkefnið okkar er þetta nóg.

Verkefnið er byggt með venjulegum mvn clean pakka. Niðurstaðan er feitur krukku - keyranleg skrá með öllum ósjálfstæðum.

Til að gera þetta allt sjálfvirkt, skrifaði ég nokkur bash-forskriftir.

Fyrsta handritið eyðir gömlu jar skránni og byggir nýja.

Önnur forskriftin ræsir samansetta krukku og gefur henni nafn nauðsynlegs sniðs. Þetta snið inniheldur upplýsingar um gagnagrunnstengingu.

Gagnagrunnurinn er MySQL á sama VPS.

Heildarendurræsing verkefnisins felur í sér:

  • skráðu þig inn á VPS í gegnum SSH
  • hlaða niður nýjustu git breytingunum
  • keyra local-jar.sh
  • drepa keyrandi forrit
  • keyra launch-production.sh

Þessi aðferð tekur þrjár mínútur. Þetta finnst mér snjallt val fyrir svona lítið verkefni.

Erfiðleikar

Helstu erfiðleikar við gerð verkefnisins voru skipulagslegs eðlis.

Það er hópur fólks sem virðist kunna að forrita, en ekki mjög vel. Þeir vita eitthvað, en þeir geta samt í raun ekki beitt því. Og nú þurfa þeir að klára verkefnið á mánuði.

Ég benti á skilyrtan liðsstjóra í þessum hópi. Hann hélt Google skjal með lista yfir verkefni, dreifði verkum og stjórnaði samþykki þeirra. Hann samþykkti einnig dráttarbeiðnir.

Ég bað nemendur líka að skrifa stutta skýrslu á hverju kvöldi um vinnuna sem þeir unnu við verkefnið. Ef þú gerðir ekki neitt, allt í lagi, skrifaðu bara „gerði ekkert“. Þetta er frábær æfing og gerir þig svolítið spenntan. Ekki fóru allir eftir þessari reglu, því miður.

Tilgangurinn með allri þessari hreyfingu var einfaldur. Myndaðu teymi, þó ekki væri nema í stuttan tíma, til að vinna saman.

Ég vildi að strákarnir upplifðu að vinnan þeirra væri mikilvæg. Skilja að þeir skrifa ekki kúlulaga kóða í tómarúmi. Og það sem þeir eru að gera saman er verkefni sem fólk mun síðan nota.

Fyrstu eða tvær vikurnar voru uppbygging. Aðilar og litlar skuldbindingar voru gerðar hægt. Smám saman hrærði ég í þeim og vinnan varð skemmtilegri. Samskipti í spjallinu urðu líflegri, nemendur buðu upp á viðbætur sínar.

Ég tel að markmiðinu hafi verið náð. Verkefnið er búið, strákarnir fengu smá reynslu af því að vinna í teymi. Það er sýnileg, áþreifanleg niðurstaða sem hægt er að sýna vinum og þróa frekar.

Niðurstöður

Nám er áhugavert.

Eftir hvern tíma kom ég aftur tilfinningalega órólegur. Ég reyni að gera hvert par einstakt og miðla eins mikilli þekkingu og hægt er.

Það er gaman þegar hópurinn sem ég kenni kemst í úrslit. Það er sérstaklega flott þegar krakkar skrifa „Ég fékk vinnu, allt er í lagi, takk fyrir“. Jafnvel þótt það sé yngri, jafnvel þótt það sé ekki stærsti peningurinn í fyrstu. En það mikilvægasta er að þeir tóku skref í átt að óskum sínum og það tókst.

Þrátt fyrir að greinin hafi reynst nokkuð fyrirferðarmikil var svo sannarlega ekki hægt að ná öllum atriðum. Skrifaðu því spurningar þínar í athugasemdirnar.

Heimild: www.habr.com

Bæta við athugasemd