E-Dobavki - layanan wéb pikeun milarian aditif pangan dina Java sareng Spring Boot, ditulis ku murid kuring

perkenalan

Kajadian éta ampir dua taun ka tukang kuring ngajar program di salah sahiji sakola IT di Kyiv. Kuring mimiti ngalakukeun ieu Just For Fun. Kuring sakali nulis blog programming, teras kuring nyerah. Tapi kahayang pikeun nyaritakeun hal-hal anu mangpaat pikeun jalma-jalma anu resep henteu leungit.

Basa utama kuring nyaéta Jawa. Kuring nulis kaulinan pikeun handphone, software pikeun komunikasi radio, sarta sagala rupa layanan web di dinya. Sareng kuring ngajar basa Jawa.

Di dieu abdi hoyong nyaritakeun palatihan kelompok terakhir abdi. Kumaha aranjeunna angkat ti mimiti pelatihan pikeun nyerat jasa wéb anu tiasa dianggo. Hiji layanan web mangpaat pikeun manggihan suplemén gizi. Gratis, teu aya iklan, pendaptaran sareng SMS.

Palayanan sorangan aya di dieu - E-Dobavki.com.

E-Dobavki - layanan wéb pikeun milarian aditif pangan dina Java sareng Spring Boot, ditulis ku murid kuring

Proyék atikan sareng henteu ngandung pariwara. Salaku I ngartos ti ieu publikasi, anjeun tiasa nyayogikeun tautan kana proyék sapertos kitu.

Saméméh ngajéntrékeun proyék sorangan, kuring gé ngabejaan Anjeun saeutik ngeunaan prosés diajar grup urang; tanpa ieu, gambar bakal teu lengkep.

9 bulan latihan

Di sakola tempat kuring ngajar, mata pelajaran basa Jawa dibagi jadi 2 bagian. Dina total, kursus nyandak sakitar 9 bulan, sareng sadaya istirahat (liburan Taun Anyar, waktos nyerat proyék panengah).

Bagian kahiji ngawanohkeun siswa kana konsép dasar basa. Variabel, metode, dasar OOP sareng sadaya barang éta.

Bagian kadua kursus nyadiakeun yén murid geus leuwih atawa kirang ngartos kumaha carana nulis dina Java, sarta anjeunna bisa dibéré "dewasa" tumpukan téhnologi. Éta sadayana dimimitian ku SQL, teras JDBC, Hibernate. Lajeng HTTP, servlets. Salajengna nyaéta Spring, sakedik ngeunaan git sareng maven. Jeung siswa nulis proyék ahir.

Sadaya latihan dibagi kana modul. Kuring ngalaksanakeun kelas dua kali saminggu. Durasi hiji palajaran dua jam.

Pendekatan kuring pikeun diajar

Kuring ngarilis 5 grup. Sigana mah loba pikeun dua taun, tapi kuring ampir sok mingpin 2 grup dina paralel.

Kuring geus diusahakeun pendekatan béda.

Pilihan kahiji nyaéta yén hiji pasangan dialokasikeun pikeun presentasi kalayan téori. Pasangan kadua nyaéta prakték murni. pendekatan ieu kumaha bae digawé, tapi teu pisan éféktif, dina pamanggih kuring.

Pilihan kadua anu kuring sumping sareng anu kuring damel ayeuna nyaéta henteu bakti sababaraha pasangan kana téori. Gantina, kuring nyampur bagian pondok tina téori pikeun 5-10 menit, sarta geuwat nguatkeun aranjeunna kalayan conto praktis. pendekatan ieu jalan hadé.

Lamun aya cukup waktu, abdi nelepon murid ka tempat kuring, diuk aranjeunna handap dina laptop kuring, sarta maranéhna ngalakukeun conto praktis sorangan. Gawéna hébat, tapi hanjakalna butuh loba waktu.

Henteu sadayana tiasa dugi ka tungtungna

A wahyu pikeun kuring éta kanyataan yén teu sakabéh grup ngahontal tungtung tangtu.

Numutkeun observasi kuring, ngan satengah siswa nulis proyék ahir. Seuseueurna dileungitkeun nalika bagian mimiti kursus. Jeung jalma anu geus ngahontal bagian kadua biasana teu layu atawa gugur.

Aranjeunna ninggalkeun pikeun sagala rupa alesan.

Kahiji nyaeta pajeulitna. Henteu masalah naon anu aranjeunna nyarios, Java sanés basa anu pangbasajanna. Pikeun nulis malah program pangbasajanna, Anjeun kudu ngarti konsép kelas, metoda a. Sareng ngartos naha anjeun kedah nyerat public static void main(String[] arg) Aya sababaraha konsép deui pikeun ngarti.

Bandingkeun ieu sareng Turbo Pascal, anu dimimitian ku seueur jalma, kalebet kuring:

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

Sajauh anu kuring terang, sakola bakal ngabéréskeun masalah ieu ku ngenalkeun tés tambahan. Ayeuna henteu sadayana tiasa diajar basa Jawa. Ieu masih dina tahap konsép, tapi léngkahna jelas anu leres.

Sareng alesan kadua sapertos dina gambar di handap ieu:

E-Dobavki - layanan wéb pikeun milarian aditif pangan dina Java sareng Spring Boot, ditulis ku murid kuring

Jalma sering nganggap yén program nyaéta ngeunaan ngetik seueur téks sareng kéngingkeun seueur artos. Kawas copywriter a, ngan leuwih duit.

Kanyataanana rada béda. Seueur kode rutin, bug anu teu jelas, prosés diajar konstan. Ieu metot, tapi teu for everyone.

Ieu statistik. Mimitina éta kesel kuring, kuring ngira yén meureun kuring ngalakukeun anu salah. Ayeuna kuring ngarti yén statistikna kira-kira sami pikeun kalolobaan kursus. Ayeuna kuring henteu hariwang ngeunaan éta, tapi ngajarkeun jalma-jalma anu resep kana éta.

Gagasan palayanan

Sanggeus siswa réngsé sakabéh kursus, nya éta waktu nulis proyék ahir. Aya ide anu béda. Aranjeunna nawiskeun lambaran ToDo, proyék manajemén proyék, sareng anu sanés.

Kuring hayang ngalakukeun hal basajan tapi mangpaat. Kriteria kuring basajan - naha kuring sareng réréncangan tiasa nganggo éta. Ladenan wéb pikeun milarian aditif dahareun nyumponan sarat ieu.

Idena basajan. Nalika anjeun mésér produk di toko, anjeun ningali sababaraha jinis E-aditif dina komposisi. Teu jelas tina kode kumaha bahaya atanapi henteu (sareng aya ogé aditif bahaya anu dilarang di seueur nagara).

Anjeun muka situs wéb, lebetkeun nami suplement (nomer, salah sahiji nami alternatif), sareng kéngingkeun kasimpulan suplement:

E-Dobavki - layanan wéb pikeun milarian aditif pangan dina Java sareng Spring Boot, ditulis ku murid kuring

Aya proyék sarupa. Anjeun oge bisa saukur ngetik aditif kana Google, sanajan teu salawasna némbongkeun informasi bener.

Tapi kusabab proyék éta atikan, kasusah di luhur henteu ngeureunkeun kami :)

Реализация

Sadayana nyerat dina basa Jawa, kode sumber proyék on Github.

Aya 7 urang, kaasup kuring. Sarerea ngadamel pamundut tarik, sareng kuring, atanapi jalma sanés ti grup, nampi pamundut tarikan ieu.

Palaksanaan proyek nyandak ngeunaan sabulan - ti voicing ide ka kaayaan nu anjeun tingali ayeuna.

Parsing aditif

Hal kahiji anu dilakukeun ku salah sahiji murid, salian ti nyiptakeun kerangka dasar di sekitar pangkalan data (éntitas, repositori, jsb.), nyaéta ngémutan tambihan tina situs inpormasi anu tos aya.

Ieu diperlukeun pikeun nguji titik sésana. Taya kode tambahan diperlukeun pikeun populate database. Sanggeus gancang parsed sababaraha aditif, urang bisa salajengna nguji UI, asihan, sarta nyaring.

Spring Boot ngidinan Anjeun pikeun nyieun sababaraha propil. Profil mangrupikeun file sareng setélan.

Pikeun lingkungan dev, kami nganggo profil sareng H2 DBMS lokal sareng port HTTP standar (8080). Ku kituna, unggal waktos aplikasi dibuka, database diberesihan. Parser dina hal ieu mangrupikeun hal anu nyalametkeun urang.

Pilarian sareng nyaring

Titik penting nyaéta milarian sareng nyaring. Hiji jalma di toko kudu gancang klik dina kode suplement, atawa salah sahiji ngaran, tur meunangkeun hasilna.

Ku alatan éta, éntitas Aditif boga sababaraha widang. Ieu kode aditif, ngaran alternatif, déskripsi. Pilarian dilaksanakeun nganggo Kawas dina sadaya widang dina waktos anu sami. Tur upami Anjeun salah ngasupkeun [123] atawa [amaranth], anjeun bakal meunang hasil anu sarua.

Urang ngalakukeun sadayana ieu dumasar kana spésifikasi. Ieu bagian tina Spring nu ngidinan Anjeun pikeun ngajelaskeun kaayaan pilarian dasar (kawas sababaraha widang, contona), lajeng ngagabungkeun kaayaan ieu (OR atawa AND).

Saatos nyerat belasan spésifikasi, anjeun tiasa naroskeun patarosan rumit sapertos "sadayana aditif ngawarnaan bahaya anu ngagaduhan kecap [beureum] dina katerangan."

Dina watesan gawé bareng database Spring, kuring manggihan eta pisan merenah. Ieu hususna leres nalika damel sareng patarosan kompleks. Kuring ngarti yén ieu boga overhead sorangan, sarta query SQL ditulis sacara manual tur dioptimalkeun bakal ngajalankeun gancang.

Tapi kuring ogé taat kana sudut pandang anu henteu kedah ngaoptimalkeun sadayana sateuacanna. Versi kahiji kudu ngamimitian, dianggo, sarta ngidinan ngagantian bagian individu. Sareng upami aya beban, bagian-bagian individu ieu kedah ditulis ulang.

kaamanan

Ieu basajan. Aya pangguna anu ngagaduhan peran ADMIN - aranjeunna tiasa ngédit tambihan, ngahapus, sareng nambihan anu énggal.

Sareng aya pangguna anu sanés (kadaptar atanapi henteu). Éta ngan ukur tiasa ngotéktak daptar aditif sareng milarian anu diperyogikeun.

Spring Kaamanan ieu dipaké pikeun misahkeun hak. Data pamaké disimpen dina database a.

Pamaké bisa ngadaptar. Ayeuna teu masihan nanaon. Upami murid terus ngembangkeun jasa sareng ngenalkeun sababaraha fungsi anu dipersonalisasi, maka pendaptaran bakal mangpaat.

Responsiveness sareng Bootstrap

Titik salajengna nyaéta adaptasi. Dina kasus jasa kami (sahenteuna cara urang ningali éta), seuseueurna pangguna bakal nganggo telepon sélulér. Sareng anjeun kedah gancang ningali suplement tina ponsel anjeun.

Dina raraga teu sangsara kalawan CSS, urang nyandak Bootstrap. Murah, bageur, sareng katingalina lumayan.

Abdi teu tiasa nelepon idéal panganteur. Halaman utama malah kirang kitu, sareng halaman pikeun katerangan detil ngeunaan aditif sempit; dina telepon sélulér éta kedah langkung lega.

Kuring ngan ukur tiasa nyarios yén kuring nyobian ngaganggu padamelan sakedik-gancang. Ieu masih proyek murid. Sarta tangtu, guys bakal tiasa ngabenerkeun moments misalna engké.

Hiji Menit Optimasi SEO

Kusabab kuring geus aub raket dina situs web jeung sagalana patali SEO pikeun leuwih ti dua taun, abdi teu bisa ngaleupaskeun proyék tanpa optimasi SEO sahenteuna dasar.

Nyatana, kuring ngadamel generasi template Judul sareng Pedaran pikeun tiap tambihan. URL ampir CNC, sanajan bisa dijieun pondok.

Kuring ogé ditambahkeun counters kahadiran. Nambahkeun situs ka Yandex Webmaster sareng Google Search Console pikeun ngawas peringatan tina mesin pencari.

Teu cukup. Anjeun oge kedah nambahkeun robots.txt na sitemap.xml pikeun indexing pinuh. Tapi deui, ieu proyek mahasiswa. Kuring bakal nyarioskeun ka aranjeunna naon anu kedah dilakukeun, sareng upami aranjeunna hoyong, aranjeunna bakal ngalakukeunana.

Anjeun kedah ngagantelkeun sertipikat SSL. Gratis Hayu urang Encrypt ogé bakal jalan. Kuring ngalakukeun ieu pikeun Spring Boot. Teu hese dilakonan, da kapercayaan PS teh nambahan.

Naon salajengna pikeun proyék éta?

Lajeng, kanyataanna, pilihan téh nepi ka guys. Gagasan aslina tina proyék ogé kalebet database produk sareng tautan kana aditif.

Lebetkeun "Snickers" sareng tingali naon aditif gizi anu dikandungna.

Malah dina mimiti proyek, abdi terang yen urang moal boga produk nanaon :) Ku alatan éta, urang ngan dimimitian ku aditif.

Ayeuna anjeun tiasa nambihan produk sareng ngenalkeun produk tambahan. roti. Lamun mangrupa database éksténsif, bakal aya pamaké.

Panempatan

Proyék ieu disebarkeun dina VPS, Aruba Cloud. Ieu mangrupikeun VPS paling murah anu urang tiasa mendakan. Kuring geus ngagunakeun panyadia ieu leuwih ti sataun pikeun proyék-proyék kuring, sarta Kami pleasantly pleased jeung eta.

ciri VPS: 1 GB RAM, 1 CPU (Kuring henteu weruh ngeunaan frékuénsi), 20 GB SSD. Pikeun proyék kami ieu cukup.

Proyék diwangun ngagunakeun pakét bersih mvn biasa. Hasilna nyaéta toples gajih - file anu tiasa dieksekusi sareng sadaya katergantungan.

Pikeun ngajadikeun otomatis sadayana ieu sakedik, kuring nyerat sababaraha skrip bash.

Skrip munggaran ngahapus file jar lami sareng ngawangun anu énggal.

Aksara kadua ngajalankeun jar dirakit, ngalirkeun eta nami profil diperlukeun. Propil ieu ngandung inpormasi sambungan database.

DB - MySQL dina VPS sarua.

Total balikan deui proyék ngawengku:

  • asup ka VPS via SSH
  • unduh parobahan git panganyarna
  • ngajalankeun local-jar.sh
  • maéhan ngajalankeun aplikasi
  • ngajalankeun launch-production.sh

Prosedur ieu nyokot tilu menit. Ieu sigana pilihan anu pinter pikeun kuring pikeun proyék leutik sapertos kitu.

Kasusah

Kasusah utama dina nyieun proyék éta sipat organisasi.

Aya sakelompok jalma anu sigana terang kumaha program, tapi henteu saé pisan. Aranjeunna terang hiji hal, tapi aranjeunna tetep teu tiasa leres-leres nerapkeunana. Sareng ayeuna aranjeunna kedah ngarengsekeun proyék dina sabulan.

Kuring ngaidentifikasi pamimpin tim kondisional dina grup ieu. Anjeunna nyimpen hiji Dok Google kalawan daptar tugas, tugas disebarkeun, sarta dikawasa ditampa maranéhanana. Anjeunna oge nampi requests tarikan.

Kuring ogé naroskeun ka murid nyerat laporan pondok unggal malem ngeunaan padamelan anu aranjeunna lakukeun dina proyék éta. Mun anjeun teu ngalakukeun nanaon, ok, ngan nulis "teu nanaon". Ieu prakték anu saé sareng ngajantenkeun anjeun rada tegang. Hanjakalna, henteu sadayana nuturkeun aturan ieu.

Tujuan sadaya gerakan ieu basajan. Ngabentuk tim, sanajan ngan sakeudeung, pikeun gawé babarengan.

Kuring hayang guys ngarasa yen karya maranéhanana penting. Ngartos yén maranéhna teu nulis kode buleud dina vakum. Sareng naon anu aranjeunna lakukeun babarengan nyaéta proyék anu bakal dianggo ku jalma.

Minggu atawa dua minggu kahiji éta ngawangun-up. Entitas jeung komitmen leutik dijieun sluggishly. Saeutik-saeutik kuring ngagaur maranéhna, sarta pagawéan jadi leuwih senang. Komunikasi dina obrolan janten livelier, siswa ditawarkeun tambahan maranéhanana.

Kuring yakin yén tujuan geus kahontal. Proyék parantos réngsé, budak ngagaduhan sakedik pangalaman damel di tim. Aya hasil anu katingali, nyata anu tiasa ditingalikeun ka babaturan sareng dikembangkeun salajengna.

papanggihan

Diajar téh metot.

Sanggeus unggal kelas kuring datang deui emotionally agitated. Kuring nyoba nyieun unggal pasangan unik tur nepikeun saloba pangaweruh jéntré.

Geulis lamun grup anu kuring ajar nepi ka final. Utamana keren nalika lalaki nyerat "Kuring ngagaduhan padamelan, sadayana henteu kunanaon, hatur nuhun." Sanajan éta SMP, sanajan éta henteu duit pangbadagna di hareup. Tapi anu paling penting nyaéta yén aranjeunna nyandak léngkah ka arah kahayangna, sareng aranjeunna suksés.

Sanajan artikel tétéla rada voluminous, éta pasti moal mungkin pikeun nutupan sakabéh titik. Ku alatan éta, nulis patarosan anjeun dina komentar.

sumber: www.habr.com

Tambahkeun komentar