E-Dobavki - gwasanaeth gwe ar gyfer chwilio ychwanegion bwyd yn Java a Spring Boot, a ysgrifennwyd gan fy myfyrwyr

Cyflwyniad

Digwyddodd felly fy mod wedi bod yn addysgu rhaglennu yn un o'r ysgolion TG yn Kyiv ers bron i ddwy flynedd ddiwethaf. Dechreuais wneud hyn Just For Fun. Ysgrifennais blog rhaglennu unwaith, yna rhoddais y gorau iddi. Ond nid yw'r awydd i ddweud pethau defnyddiol wrth bobl â diddordeb wedi diflannu.

Fy mhrif iaith yw Java. Ysgrifennais gemau ar gyfer ffonau symudol, meddalwedd ar gyfer cyfathrebu radio, a gwasanaethau gwe amrywiol arno. Ac rwy'n dysgu Java.

Yma rwyf am adrodd hanes hyfforddiant fy ngrŵp diwethaf. Sut aethon nhw o ddechrau hyfforddiant i ysgrifennu gwasanaeth gwe gweithredol. Gwasanaeth gwe defnyddiol ar gyfer dod o hyd i atchwanegiadau maethol. Am ddim, dim hysbysebu, cofrestru a SMS.

Mae'r gwasanaeth ei hun yma - E-Dobavki.com.

E-Dobavki - gwasanaeth gwe ar gyfer chwilio ychwanegion bwyd yn Java a Spring Boot, a ysgrifennwyd gan fy myfyrwyr

Mae'r prosiect yn addysgol ac nid yw'n cynnwys unrhyw hysbysebu. Fel y deallaf o y cyhoeddiad hwn, gallwch ddarparu dolenni i brosiectau o'r fath.

Cyn disgrifio’r prosiect ei hun, fe ddywedaf ychydig wrthych am broses ddysgu’r grŵp; heb hyn, bydd y darlun yn anghyflawn.

9 mis o hyfforddiant

Yn yr ysgol lle rwy'n addysgu, mae'r cwrs Java wedi'i rannu'n 2 ran. Yn gyfan gwbl, mae'r cwrs yn cymryd tua 9 mis, gyda phob egwyl (gwyliau'r Flwyddyn Newydd, amser i ysgrifennu prosiectau canolradd).

Mae'r rhan gyntaf yn cyflwyno myfyrwyr i gysyniadau sylfaenol iaith. Newidynnau, dulliau, pethau sylfaenol OOP a'r holl bethau hynny.

Mae ail ran y cwrs yn darparu bod y myfyriwr eisoes fwy neu lai yn deall sut i ysgrifennu yn Java, a gellir rhoi pentwr technoleg “oedolyn” iddo. Mae'r cyfan yn dechrau gyda SQL, yna JDBC, gaeafgysgu. Yna HTTP, servlets. Nesaf yw Gwanwyn, ychydig am git a maven. Ac mae myfyrwyr yn ysgrifennu prosiectau terfynol.

Rhennir yr holl hyfforddiant yn fodiwlau. Roeddwn i'n cynnal dosbarthiadau ddwywaith yr wythnos. Hyd un wers yw dwy awr.

Fy agwedd at ddysgu

Rhyddheais 5 grŵp. Mae'n ymddangos fel llawer am ddwy flynedd, ond roeddwn bron bob amser yn arwain 2 grŵp yn gyfochrog.

Rwyf wedi rhoi cynnig ar ddulliau gwahanol.

Yr opsiwn cyntaf yw bod un pâr yn cael ei neilltuo ar gyfer cyflwyniad gyda theori. Mae'r ail bâr yn arfer pur. Roedd y dull hwn yn gweithio rywsut, ond nid oedd yn effeithiol iawn, yn fy marn i.

Yr ail opsiwn y deuthum ato ac yr wyf yn gweithio arno nawr yw peidio â neilltuo cwpl cyfan i theori. Yn lle hynny, rwy'n cymysgu adrannau byr o theori am 5-10 munud, ac yn eu hatgyfnerthu ar unwaith gydag enghreifftiau ymarferol. Mae'r dull hwn yn gweithio'n well.

Os oes digon o amser, rydw i'n galw'r myfyrwyr i'm lle, yn eistedd i lawr wrth fy ngliniadur, ac maen nhw'n gwneud enghreifftiau ymarferol eu hunain. Mae'n gweithio'n wych, ond yn anffodus mae'n cymryd llawer o amser.

Nid yw pawb yn cyrraedd y diwedd

Datguddiad i mi oedd y ffaith nad yw'r grŵp cyfan yn cyrraedd diwedd y cwrs.

Yn ôl fy arsylwadau, dim ond hanner y myfyrwyr sy'n ysgrifennu'r prosiect terfynol. Mae'r rhan fwyaf ohonynt yn cael eu dileu yn ystod rhan gyntaf y cwrs. Ac fel arfer nid yw'r rhai sydd wedi cyrraedd yr ail ran yn cwympo i ffwrdd.

Maent yn gadael am wahanol resymau.

Y cyntaf yw cymhlethdod. Waeth beth maen nhw'n ei ddweud, nid Java yw'r iaith symlaf. I ysgrifennu hyd yn oed y rhaglen symlaf, mae angen i chi ddeall y cysyniad o ddosbarth, dull. Ac i ddeall pam mae angen i chi ysgrifennu prif gyflenwad gwag sefydlog cyhoeddus (Llinynnol[] arg) Mae ychydig mwy o gysyniadau i'w deall.

Cymharwch hyn â Turbo Pascal, sef yr hyn y dechreuodd llawer o bobl ag ef, gan gynnwys fi:

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

Hyd y gwn i, bydd yr ysgol yn datrys y broblem hon drwy gyflwyno profion ychwanegol. Nawr ni all pawb astudio Java. Mae hyn yn dal i fod yn y cam cysyniad, ond y cam yn amlwg yw'r un iawn.

Ac mae'r ail reswm fel yn y llun isod:

E-Dobavki - gwasanaeth gwe ar gyfer chwilio ychwanegion bwyd yn Java a Spring Boot, a ysgrifennwyd gan fy myfyrwyr

Mae pobl yn aml yn meddwl bod rhaglennu yn ymwneud â theipio llawer o destun a chael llawer o arian ar ei gyfer. Fel ysgrifennwr copi, dim ond mwy o arian.

Mae'r realiti ychydig yn wahanol. Llawer o god arferol, bygiau anamlwg, proses ddysgu gyson. Mae'n ddiddorol, ond nid i bawb.

Dyma'r ystadegau. Ar y dechrau roedd wedi fy ypsetio, roeddwn i'n meddwl efallai fy mod yn gwneud rhywbeth o'i le. Nawr deallaf fod yr ystadegau tua'r un peth ar gyfer y rhan fwyaf o gyrsiau. Nawr nid wyf yn poeni amdano, ond dysgaf y bobl hynny sydd â diddordeb ynddo.

Syniad gwasanaeth

Unwaith yr oedd myfyrwyr wedi cwblhau'r cwrs cyfan, roedd yn amser ysgrifennu'r prosiect terfynol. Roedd syniadau gwahanol. Roeddent yn cynnig taflenni ToDo, prosiectau rheoli prosiect, a rhywbeth arall.

Roeddwn i eisiau gwneud rhywbeth syml ond defnyddiol. Roedd fy maen prawf yn syml - a allai fy ffrindiau a minnau ei ddefnyddio. Roedd gwasanaeth gwe ar gyfer chwilio am ychwanegion bwyd yn bodloni'r gofynion hyn.

Mae'r syniad yn syml. Pan fyddwch chi'n prynu cynnyrch mewn siop, rydych chi'n gweld rhyw fath o E-ychwanegyn yn y cyfansoddiad. Nid yw'n glir o'r cod pa mor beryglus ydyw ai peidio (ac mae yna hefyd ychwanegion peryglus sy'n cael eu gwahardd mewn llawer o wledydd).

Rydych chi'n agor y wefan, yn nodi enw'r atodiad (rhif, un o'r enwau amgen), ac yn cael crynodeb o'r atodiad:

E-Dobavki - gwasanaeth gwe ar gyfer chwilio ychwanegion bwyd yn Java a Spring Boot, a ysgrifennwyd gan fy myfyrwyr

Mae yna brosiectau tebyg. Gallwch hefyd deipio'r ychwanegyn i mewn i Google, er nad yw bob amser yn dangos y wybodaeth yn gywir.

Ond gan fod y prosiect yn addysgol, ni wnaeth yr anawsterau uchod ein rhwystro :)

Gweithredu

Ysgrifennodd pawb yn Java, cod ffynhonnell y prosiect ar Github.

Roedd 7 ohonom, gan gynnwys fi. Gwnaeth pawb gais tynnu, a derbyniais i, neu berson arall o'r grŵp, y cais tynnu hwn.

Cymerodd gweithrediad y prosiect tua mis - o leisio'r syniad i'r cyflwr a welwch nawr.

Dosrannu ychwanegion

Y peth cyntaf a wnaeth un o'r myfyrwyr, ar wahân i greu fframwaith sylfaenol o amgylch y gronfa ddata (endidau, ystorfeydd, ac ati), oedd dosrannu ychwanegion o safle gwybodaeth a oedd yn bodoli eisoes.

Roedd hyn yn angenrheidiol i brofi gweddill y pwyntiau. Nid oes angen cod ychwanegol i lenwi'r gronfa ddata. Ar ôl dosrannu sawl ychwanegyn yn gyflym, gallem brofi'r UI ymhellach, ei ddidoli a'i hidlo.

Mae Spring Boot yn caniatáu ichi greu proffiliau lluosog. Ffeil gyda gosodiadau yw proffil.

Ar gyfer yr amgylchedd datblygu, gwnaethom ddefnyddio proffil gyda DBMS H2 lleol a'r porthladd HTTP rhagosodedig (8080). Felly, bob tro y lansiwyd y cais, y gronfa ddata yn cael ei glirio. Y parser yn yr achos hwn oedd y peth a'n hachubodd.

Chwilio a hidlo

Pwynt pwysig yw chwilio a hidlo. Rhaid i berson mewn siop glicio'n gyflym ar god yr atodiad, neu un o'r enwau, a chael y canlyniad.

Felly, mae gan yr endid Ychwanegion sawl maes. Dyma'r cod ychwanegyn, enwau amgen, disgrifiad. Cynhelir y chwiliad gan ddefnyddio Like ym mhob maes ar yr un pryd. Ac os ewch i mewn [123] neu [amaranth], byddwch yn cael yr un canlyniad.

Gwnaethom hyn i gyd yn seiliedig ar Fanylebau. Mae hwn yn rhan o'r Gwanwyn sy'n eich galluogi i ddisgrifio amodau chwilio sylfaenol (fel rhyw faes, er enghraifft), ac yna cyfuno'r amodau hyn (OR neu AND).

Ar ôl ysgrifennu dwsin o fanylebau, gallwch ofyn cwestiynau cymhleth fel “pob ychwanegyn lliwio peryglus sydd â'r gair [coch] yn y disgrifiad.”

O ran gweithio gyda chronfa ddata Spring, mae'n gyfleus iawn i mi. Mae hyn yn arbennig o wir wrth weithio gydag ymholiadau cymhleth. Rwy'n deall bod gan hwn ei orbenion ei hun, a bydd ymholiad SQL wedi'i ysgrifennu â llaw a'i optimeiddio yn rhedeg yn gyflymach.

Ond rwyf hefyd yn cadw at y safbwynt nad oes angen gwneud y gorau o bopeth ymlaen llaw. Rhaid i'r fersiwn gyntaf ddechrau, gweithio, a chaniatáu ailosod rhannau unigol. Ac os oes llwyth, mae angen ailysgrifennu'r rhannau unigol hyn.

diogelwch

Mae'n syml. Mae yna ddefnyddwyr gyda'r rôl ADMIN - gallant olygu ychwanegiadau, eu dileu, ac ychwanegu rhai newydd.

Ac mae yna ddefnyddwyr eraill (cofrestredig ai peidio). Dim ond trwy'r rhestr o ychwanegion y gallant bori a chwilio am y rhai sydd eu hangen arnynt.

Defnyddiwyd Spring Security i wahanu hawliau. Mae data defnyddwyr yn cael ei storio mewn cronfa ddata.

Gall defnyddwyr gofrestru. Nawr nid yw'n rhoi unrhyw beth. Os bydd myfyrwyr yn parhau i ddatblygu'r gwasanaeth a chyflwyno rhai swyddogaethau personol, yna bydd cofrestru'n ddefnyddiol.

Ymatebolrwydd a Bootstrap

Y pwynt nesaf yw addasrwydd. Yn achos ein gwasanaeth (o leiaf y ffordd y gwelsom ef), bydd y mwyafrif o ddefnyddwyr gyda ffonau symudol. Ac mae angen i chi weld yr atodiad yn gyflym o'ch ffôn symudol.

Er mwyn peidio â dioddef gyda CSS, fe wnaethon ni gymryd Bootstrap. Yn rhad, yn siriol, ac yn edrych yn weddus.

Ni allaf alw'r rhyngwyneb yn ddelfrydol. Mae'r brif dudalen yn llai byth, ac mae'r dudalen ar gyfer disgrifiad manwl o'r ychwanegyn yn gul; ar ffonau symudol mae angen ei gwneud yn ehangach.

Ni allaf ond dweud imi geisio ymyrryd â'r gwaith cyn lleied â phosibl. Mae hwn yn dal i fod yn brosiect myfyrwyr. Ac wrth gwrs, bydd y dynion yn gallu cywiro eiliadau o'r fath yn ddiweddarach.

Munud o Optimeiddio SEO

Gan fy mod wedi bod yn ymwneud yn agos â gwefannau a phopeth sy'n ymwneud â SEO am fwy na dwy flynedd, ni allwn ryddhau prosiect heb optimeiddio SEO sylfaenol o leiaf.

Yn wir, gwnes dempled cenhedlaeth o Teitl a Disgrifiad ar gyfer pob ychwanegiad. Mae'r URL bron yn CNC, er y gellir ei wneud yn fyrrach.

Fe wnes i ychwanegu cownteri presenoldeb hefyd. Ychwanegwyd y wefan at Yandex Webmaster a Google Search Console i fonitro rhybuddion o beiriannau chwilio.

Nid yw'n ddigon. Mae angen i chi hefyd ychwanegu robots.txt a sitemap.xml ar gyfer mynegeio llawn. Ond eto, prosiect myfyrwyr yw hwn. Byddaf yn dweud wrthynt beth sydd angen ei wneud, ac os ydynt yn dymuno, byddant yn ei wneud.

Mae angen i chi atodi tystysgrif SSL. Bydd yr am ddim Let's Encrypt hefyd yn gweithio. Fe wnes i hyn ar gyfer Spring Boot. Nid yw'n anodd ei wneud, ac mae ymddiriedaeth y PS yn cynyddu.

Beth sydd nesaf i'r prosiect?

Yna, mewn gwirionedd, y bois sydd i ddewis. Roedd syniad gwreiddiol y prosiect hefyd yn cynnwys cronfa ddata o gynhyrchion gyda chysylltiadau ag ychwanegion.

Rhowch “Snickers” a gweld pa ychwanegion maethol sydd ynddo.

Hyd yn oed ar ddechrau'r prosiect, roeddwn i'n gwybod na fyddai gennym unrhyw gynhyrchion :) Felly, fe wnaethom ddechrau gydag ychwanegion yn unig.

Nawr gallwch chi ychwanegu cynhyrchion a chyflwyno rhai ychwanegol. byns. Os yw'n gronfa ddata helaeth, bydd defnyddwyr.

Defnyddio

Defnyddiwyd y prosiect ar VPS, Aruba Cloud. Dyma'r VPS rhataf y gallem ddod o hyd iddo. Rwyf wedi bod yn defnyddio'r darparwr hwn ers mwy na blwyddyn ar gyfer fy mhrosiectau, ac rwy'n falch iawn ohono.

Nodweddion VPS: 1 GB RAM, 1 CPU (nid wyf yn gwybod am yr amlder), 20 GB SSD. Mae hyn yn ddigon ar gyfer ein prosiect.

Mae'r prosiect yn cael ei adeiladu gan ddefnyddio'r pecyn glân mvn arferol. Y canlyniad yw jar braster - ffeil gweithredadwy gyda phob dibyniaeth.

I awtomeiddio hyn i gyd ychydig, ysgrifennais ychydig o sgriptiau bash.

Mae'r sgript gyntaf yn dileu'r hen ffeil jar ac yn adeiladu un newydd.

Mae'r ail sgript yn lansio'r jar wedi'i ymgynnull, gan roi enw'r proffil gofynnol iddo. Mae'r proffil hwn yn cynnwys gwybodaeth cysylltu cronfa ddata.

DB - MySQL ar yr un VPS.

Mae cyfanswm ailgychwyn y prosiect yn cynnwys:

  • mewngofnodwch i VPS trwy SSH
  • lawrlwythwch y newidiadau git diweddaraf
  • rhedeg local-jar.sh
  • lladd rhedeg cais
  • rhedeg launch-production.sh

Mae'r weithdrefn hon yn cymryd tri munud. Mae hwn yn ymddangos fel dewis craff i mi ar gyfer prosiect mor fach.

Anawsterau

Roedd y prif anawsterau wrth greu'r prosiect yn rhai trefniadol.

Mae yna grŵp o bobl sydd i bob golwg yn gwybod sut i raglennu, ond ddim yn dda iawn. Maen nhw'n gwybod rhywbeth, ond ni allant ei gymhwyso mewn gwirionedd. Ac yn awr mae angen iddynt gwblhau'r prosiect mewn mis.

Nodais arweinydd tîm amodol yn y grŵp hwn. Cadwodd Google Doc gyda rhestr o dasgau, dosbarthu tasgau, a rheoli eu derbyn. Derbyniodd hefyd geisiadau tynnu.

Gofynnais hefyd i'r myfyrwyr ysgrifennu adroddiad byr bob nos ar y gwaith a wnaethant ar y prosiect. Os na wnaethoch chi unrhyw beth, iawn, ysgrifennwch “Wnaethoch chi ddim byd.” Mae hyn yn arfer gwych ac yn rhoi ychydig o straen i chi. Nid oedd pawb yn dilyn y rheol hon, yn anffodus.

Roedd pwrpas yr holl symudiad hwn yn syml. Ffurfiwch dîm, hyd yn oed os mai dim ond am gyfnod byr, i gydweithio.

Roeddwn i eisiau i'r bechgyn deimlo bod eu gwaith yn bwysig. Deall nad ydynt yn ysgrifennu cod sfferig mewn gwactod. A'r hyn y maent yn ei wneud gyda'i gilydd yw prosiect y bydd pobl wedyn yn ei ddefnyddio.

Roedd yr wythnos neu ddwy gyntaf yn groniad. Gwnaed endidau a mân ymrwymiadau yn swrth. O dipyn i beth cynhyrfais nhw, a daeth y gwaith yn fwy o hwyl. Daeth cyfathrebu yn y sgwrs yn fwy bywiog, cynigiodd myfyrwyr eu hychwanegiadau.

Credaf fod y nod wedi’i gyrraedd. Mae'r prosiect wedi'i gwblhau, cafodd y bechgyn ychydig o brofiad yn gweithio mewn tîm. Mae canlyniad gweladwy, diriaethol y gellir ei ddangos i ffrindiau a'i ddatblygu ymhellach.

Canfyddiadau

Mae dysgu yn ddiddorol.

Ar ôl pob dosbarth des i'n ôl yn llawn cyffro. Rwy'n ceisio gwneud pob pâr yn unigryw a chyfleu cymaint o wybodaeth â phosib.

Mae'n braf pan fydd y grŵp rwy'n ei ddysgu yn cyrraedd y rowndiau terfynol. Mae'n arbennig o cŵl pan fydd bechgyn yn ysgrifennu "Cefais swydd, mae popeth yn iawn, diolch." Hyd yn oed os yw'n iau, hyd yn oed os nad dyma'r arian mwyaf ar y dechrau. Ond y peth pwysicaf yw iddynt gymryd cam tuag at eu chwantau, a llwyddo.

Er bod yr erthygl wedi troi allan i fod yn eithaf swmpus, yn sicr nid oedd yn bosibl ymdrin â'r holl bwyntiau. Felly, ysgrifennwch eich cwestiynau yn y sylwadau.

Ffynhonnell: hab.com

Ychwanegu sylw