E-Dobavki - un serviziu web per a ricerca di additivi alimentari in Java è Spring Boot, scrittu da i mo studienti

Introduzione

Hè accadutu chì per l'ultimi quasi dui anni aghju insignatu di prugrammazione in una di e scole IT in Kiev. Aghju cuminciatu à fà questu Just For Fun. Una volta aghju scrittu un blog di prugrammazione, dopu l'aghju rinunciatu. Ma u desideriu di dì cose utili à e persone interessate ùn hè micca andatu.

A mo lingua principale hè Java. Aghju scrittu ghjochi per i telefoni cellulari, software per e cumunicazioni radio è diversi servizii web nantu à questu. È insegnu Java.

Quì vogliu cuntà a storia di a furmazione di u mo ultimu gruppu. Cumu passanu da u principiu di furmazione à scrive un serviziu web di travagliu. Un serviziu web utile per truvà supplementi nutrizionali. Gratuitu, senza publicità, registrazione è SMS.

U serviziu stessu hè quì - E-Dobavki.com.

E-Dobavki - un serviziu web per a ricerca di additivi alimentari in Java è Spring Boot, scrittu da i mo studienti

U prughjettu hè educativu è ùn cuntene micca publicità. Comu capitu da sta publicazione, pudete furnisce ligami per tali prughjetti.

Prima di discrive u prughjettu stessu, vi dicu un pocu di u prucessu di apprendimentu di u gruppu; senza questu, a stampa serà incompleta.

9 mesi di furmazione

À a scola induve insegnu, u cursu di Java hè divisu in 2 parti. In totale, u cursu dura circa 9 mesi, cù tutti i pause (vacanze di l'annu novu, tempu per scrive prughjetti intermedi).

A prima parte introduce i studienti à i cuncetti basi di a lingua. Variabili, metudi, basi OOP è tutte e cose.

A seconda parte di u cursu prevede chì u studiente hà digià più o menu capisce cumu scrive in Java, è pò esse datu una pila di tecnulugia "adultu". Tuttu principia cù SQL, dopu JDBC, Hibernate. Allora HTTP, servlets. Dopu hè Spring, un pocu di git and maven. È i studienti scrivenu prughjetti finali.

Tutta a furmazione hè divisa in moduli. Aghju fattu e classi duie volte à settimana. A durata di una lezzione hè di duie ore.

U mo approcciu à l'apprendimentu

Aghju liberatu 5 gruppi. Sembra assai per dui anni, ma quasi sempre guidò 2 gruppi in parallelu.

Aghju pruvatu diversi approcci.

A prima opzione hè chì un paru hè attribuitu per una presentazione cù una teoria. U sicondu paru hè pura pratica. Stu approcciu in qualchì modu hà travagliatu, ma ùn era micca assai efficace, in my opinion.

A seconda opzione chì aghju vinutu è chì aghju travagliatu avà ùn hè micca di dedicà una coppia sana à a teoria. Invece, aghju mischjà brevi sezioni di teoria per 5-10 minuti, è rinfurzà immediatamente cù esempi pratichi. Stu approcciu travaglia megliu.

S'ellu ci hè abbastanza tempu, chjamu i studienti à u mo locu, si mette à u mo laptop, è facenu esempi pratichi stessi. Funziona bè, ma sfurtunatamenti ci vole assai tempu.

Micca tutti facianu finu à a fine

Una rivelazione per mè era u fattu chì micca u gruppu tutale ghjunghje à a fine di u cursu.

Sicondu i mo osservazioni, solu a mità di i studienti scrive u prughjettu finali. A maiò parte di elli sò eliminati durante a prima parte di u cursu. E quelli chì anu ghjuntu à a seconda parte di solitu ùn falanu micca.

Partenu per diverse ragioni.

U primu hè a cumplessità. Ùn importa ciò chì dicenu, Java ùn hè micca a lingua più simplice. Per scrive ancu u prugramma più simplice, avete bisognu di capiscenu u cuncettu di una classa, un metudu. È per capisce perchè avete bisognu di scrive public static void main(String[] arg) Ci hè uni pochi di cuncetti più per capiscenu.

Comparate questu cù Turbo Pascal, chì hè ciò chì parechje persone anu cuminciatu, cumpresu mè:

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

Per ciò chì sò, a scola risolverà stu prublema intruducendu teste supplementari. Avà micca tutti ponu studià Java. Questu hè sempre in u stadiu di cuncettu, ma u passu hè chjaramente u dirittu.

È a seconda ragione hè cum'è in a stampa sottu:

E-Dobavki - un serviziu web per a ricerca di additivi alimentari in Java è Spring Boot, scrittu da i mo studienti

A ghjente spessu pensa chì a prugrammazione hè di scrive assai testu è uttene assai soldi per questu. Cum'è un copywriter, solu più soldi.

A realità hè un pocu sfarente. Un saccu di codice di rutina, bugs micca evidenti, un prucessu di apprendimentu constante. Hè interessante, ma micca per tutti.

Quessi sò e statistiche. À u principiu m'hà sconvoltu, pensu chì forse aghju fattu qualcosa di male. Avà capiscu chì e statistiche sò apprussimatamente listessi per a maiò parte di i corsi. Avà ùn aghju micca preoccupatu, ma insegni à quelli persone chì sò interessate in questu.

Idea di serviziu

Una volta chì i studienti anu finitu tuttu u corsu, era ora di scrive u prughjettu finali. Ci era idee diverse. Offrevanu fogli ToDo, prughjetti di gestione di prughjetti, è qualcosa di più.

Vuliu fà qualcosa simplice ma utile. U mo criteriu era simplice - sì i mo amichi è aghju pussutu aduprà. Un serviziu web per a ricerca di l'additivi alimentarii cumpletu questi requisiti.

L'idea hè simplice. Quandu vi cumprà un pruduttu in una tenda, vi vede qualchi tipu di E-additive in a cumpusizioni. Ùn hè micca chjaru da u codice quantu periculosu hè o micca (è ci sò ancu additivi periculosi chì sò pruibiti in parechji paesi).

Apri u situ web, inserite u nome di u supplementu (numeru, unu di i nomi alternativi), è uttene un riassuntu di u supplementu:

E-Dobavki - un serviziu web per a ricerca di additivi alimentari in Java è Spring Boot, scrittu da i mo studienti

Ci sò prughjetti simili. Pudete ancu simpricimenti scrivite l'additivu in Google, ancu s'ellu ùn mostra micca sempre l'infurmazioni currettamente.

Ma postu chì u prugettu hè educativu, e difficultà sopra ùn ci anu impeditu :)

Реализация

Tuttu u mondu hà scrittu in Java, codice fonte di u prughjettu nantu à Github.

Eramu 7 di noi, cumpresu mè. Tutti anu fattu una dumanda di pull, è eiu, o una altra persona di u gruppu, accettatu sta dumanda di pull.

L'implementazione di u prugettu hà pigliatu circa un mesi - da a voce di l'idea à u statu chì vede avà.

Parsing additivi

A prima cosa chì unu di i studienti hà fattu, in più di a creazione basica di un quadru intornu à a basa di dati (entità, repository, etc.), era analizà add-ons da un situ d'infurmazioni esistenti.

Questu era necessariu per pruvà i punti rimanenti. Nisun codice supplementu hè necessariu per populà a basa di dati. Dopu avè analizatu rapidamente parechji additivi, pudemu ancu pruvà l'UI, a classificazione è a filtrazione.

Spring Boot permette di creà parechji profili. Un prufilu hè un schedariu cù paràmetri.

Per l'ambiente dev, avemu usatu un prufilu cù un DBMS H2 locale è u portu HTTP predeterminatu (8080). Cusì, ogni volta chì l'applicazione hè stata lanciata, a basa di dati hè stata liberata. U parser in questu casu era a cosa chì ci hà salvatu.

Ricerca è filtrazione

Un puntu impurtante hè a ricerca è u filtru. Una persona in una tenda deve cliccà rapidamente nantu à u codice di u supplementu, o unu di i nomi, è uttene u risultatu.

Dunque, l'entità Additivu hà parechji campi. Questu hè u codice additivu, nomi alternativi, descrizzione. A ricerca hè realizata cù Like in tutti i campi à u stessu tempu. È se entre [123] o [amaranth], uttene u listessu risultatu.

Avemu fattu tuttu questu basatu annantu à Specificazioni. Questa hè una parte di Spring chì vi permette di discrìviri e cundizioni di ricerca basi (cum'è qualchì campu, per esempiu), è poi cumminà sti cundizioni (OR o AND).

Dopu avè scrittu una decina di specificazioni, pudete dumandà dumande cumplesse cum'è "tutti l'additivi di coloranti periculosi chì anu a parolla [rossu] in a descrizzione".

In quantu à travaglià cù a basa di dati Spring, mi pare assai còmuda. Questu hè soprattuttu veru quandu u travagliu cù dumande cumplesse. Capiscu chì questu hà u so propiu overhead, è una dumanda SQL scritta manualmente è ottimizzata correrà più veloce.

Ma ancu aderisce à u puntu di vista chì ùn ci hè bisognu di ottimisà tuttu in anticipu. A prima versione deve principià, travaglià, è permette a sustituzione di parti individuali. È s'ellu ci hè una carica, sti parti individuali deve esse riscritti.

Sistemi

Hè simplice. Ci sò utilizatori cù u rolu ADMIN - ponu edità aghjunte, sguassate, è aghjunghje novi.

È ci sò altri utilizatori (registrati o micca). Puderanu solu cercà a lista di additivi è cercate quelli chì anu bisognu.

Spring Security hè stata utilizata per separà i diritti. I dati di l'utilizatori sò guardati in una basa di dati.

L'utilizatori ponu registrà. Avà ùn dà nunda. Se i studienti cuntinueghjanu à sviluppà u serviziu è intruduce alcune funzioni persunalizati, allora a registrazione serà utile.

Rispunsibilità è Bootstrap

U prossimu puntu hè l'adattabilità. In u casu di u nostru serviziu (almenu a manera chì l'avemu vistu), a maiò parte di l'utilizatori seranu cù i telefuni mobili. È avete bisognu di vede rapidamente u supplementu da u vostru telefuninu.

Per ùn soffre micca cù CSS, avemu pigliatu Bootstrap. Economicu, allegru, è pare decentu.

Ùn possu micca chjamà l'interfaccia ideale. A pagina principale hè ancu menu, è a pagina per una descrizzione dettagliata di l'additivu hè stretta; nantu à i telefuni mobili, deve esse più larga.

Puderaghju solu chì aghju pruvatu à interferisce cù u travagliu u più pocu pussibule. Questu hè sempre un prughjettu studiente. E di sicuru, i picciotti puderanu curregà tali mumenti dopu.

Un Minutu di Ottimizazione SEO

Siccomu aghju participatu strettamente à i siti web è tuttu ciò chì tocca à SEO per più di dui anni, ùn puderebbe liberà un prughjettu senza almenu ottimisazione SEO basica.

In fatti, aghju fattu una generazione di mudellu di Titulu è Descrizzione per ogni add-on. L'URL hè quasi CNC, ancu s'ellu pò esse più curtu.

Aghju aghjustatu ancu i contatori di presenza. Aggiuntu u situ à Yandex Webmaster è Google Search Console per monitorizà l'avvirtimenti da i motori di ricerca.

Ùn hè micca abbastanza. Avete ancu bisognu di aghjunghje robots.txt è sitemap.xml per l'indexazione completa. Ma dinò, questu hè un prughjettu studiente. Li diciaraghju ciò chì ci vole à fà, è s'ellu volenu, a feranu.

Avete bisognu di aghjunghje un certificatu SSL. U gratuitu Let's Encrypt funzionerà ancu. Aghju fattu questu per Spring Boot. Ùn hè micca difficiule di fà, è a fiducia di u PS aumenta.

Chì ci hè dopu per u prugettu?

Allora, in fattu, a scelta hè à i picciotti. L'idea originale di u prugettu include ancu una basa di dati di prudutti cù ligami per additivi.

Inserite "Snickers" è vede ciò chì additivi nutrizionale cuntene.

Ancu à u principiu di u prugettu, sapia chì ùn averemu micca prudutti :) Per quessa, avemu principiatu solu cù additivi.

Avà pudete aghjunghje prudutti è intruduce altri. panini. S'ellu hè una basa di dati larga, ci saranu utilizatori.

Distribuzione

U prugettu hè statu implementatu in VPS, Aruba Cloud. Questu hè u VPS più prezzu chì pudemu truvà. Aghju utilizatu stu fornitore per più di un annu per i mo prughjetti, è sò piacevule cun piacè.

Caratteristiche VPS: 1 GB RAM, 1 CPU (ùn cunnosci micca a freccia), 20 GB SSD. Per u nostru prughjettu hè abbastanza.

U prugettu hè custruitu cù u solitu pacchettu mvn clean. U risultatu hè un fat jar - un schedariu eseguibile cù tutte e dipendenze.

Per automatizà tuttu questu un pocu, aghju scrittu un paru di scripts bash.

U primu script elimina u vechju schedariu jar è custruisce un novu.

U sicondu script lancia u vasu assemblatu, passendu u nome di u prufilu necessariu. Stu prufilu cuntene infurmazione di cunnessione di basa di dati.

DB - MySQL nantu à u stessu VPS.

U riavviu tutale di u prugettu include:

  • accede à VPS via SSH
  • scaricate l'ultimi cambiamenti git
  • run local-jar.sh
  • uccidere l'applicazione in esecuzione
  • run launch-production.sh

Sta prucedura dura trè minuti. Questa mi pare una scelta intelligente per un prughjettu cusì chjucu.

Difficultes

I difficultà principali in a creazione di u prugettu eranu di natura urganisazione.

Ci hè un gruppu di pirsuni chì parenu sapè à u prugramma, ma micca assai bè. Sapenu qualcosa, ma ùn ponu micca veramente applicà. È avà anu bisognu à compie u prugettu in un mesi.

Aghju identificatu un capu di squadra cundizionale in questu gruppu. Hà guardatu un Google Doc cù una lista di e tarei, hà distribuitu i travaglii è cuntrullava a so accettazione. Hà accettatu ancu e richieste di pull.

Aghju ancu dumandatu à i studienti di scrive un brevi rapportu ogni sera nantu à u travagliu chì anu fattu nantu à u prugettu. Se ùn avete micca fattu nunda, ok, basta à scrive "Ùn hà fattu nunda". Questa hè una grande pratica è vi mette un pocu tensu. Micca tutti seguitanu sta regula, sfurtunatamenti.

U scopu di tuttu stu muvimentu era simplice. Formà una squadra, ancu s'ellu hè solu per un pocu tempu, per travaglià inseme.

Vuliu chì i picciotti sentenu chì u so travagliu era impurtante. Capisce chì ùn scrive micca codice sfericu in u vacuum. È ciò chì facenu inseme hè un prughjettu chì a ghjente hà da aduprà.

A prima settimana o duie era un build-up. Entità è picculi commits sò stati fatti lentu. Pocu à pocu l'aghju sbulicatu, è u travagliu hè diventatu più divertente. A cumunicazione in u chat hè diventata più viva, i studienti offrinu i so aghjunte.

Credu chì u scopu hè statu rializatu. U prugettu hè fattu, i picciotti anu avutu una piccula sperienza di travaglià in una squadra. Ci hè un risultatu visibile, tangibile chì pò esse dimustratu à l'amichi è più sviluppatu.

scuperti

L'apprendimentu hè interessante.

Dopu ogni classa sò tornatu emotivamente agitatu. Pruvate di fà ogni paru unicu è trasmette quant'è cunniscenze pussibule.

Hè bellu quandu u gruppu ch'e insegnu ghjunghje à a finale. Hè soprattuttu cool quandu i ragazzi scrivenu "Aghju un travagliu, tuttu va bè, grazie". Ancu s'ellu hè un junior, ancu s'ellu ùn hè micca u più grande soldi in prima. Ma u più impurtante hè chì anu fattu un passu versu i so desideri, è anu successu.

Ancu s'ellu l'articulu hè statu abbastanza voluminosu, ùn era certamente micca pussibule di copre tutti i punti. Dunque, scrivite e vostre dumande in i cumenti.

Source: www.habr.com

Add a comment