E-Dobavki - layanan web kanggo nggoleki aditif panganan ing Jawa lan Spring Boot, sing ditulis dening siswa

Pambuka

Kedaden sing meh rong taun pungkasan aku wis memulang program ing salah siji saka sekolah IT ing Kyiv. Aku miwiti nindakake iki Just For Fun. Aku tau nulis blog pemrograman, banjur aku nyerah. Nanging kepinginan kanggo ngandhani bab-bab sing migunani kanggo wong sing kepengin weruh ora ilang.

Basa utamaku yaiku basa Jawa. Aku nulis game kanggo ponsel, piranti lunak kanggo komunikasi radio, lan macem-macem layanan web. Lan aku mulang basa Jawa.

Ing mriki kula badhe nyariyosaken babagan latihan kelompok kula ingkang pungkasan. Kepiye carane miwiti latihan kanggo nulis layanan web sing bisa digunakake. Layanan web sing migunani kanggo nemokake suplemen nutrisi. Gratis, ora ana pariwara, registrasi lan SMS.

Layanan kasebut dhewe ing kene - E-Dobavki.com.

E-Dobavki - layanan web kanggo nggoleki aditif panganan ing Jawa lan Spring Boot, sing ditulis dening siswa

Proyek kasebut minangka pendidikan lan ora ngemot pariwara. Nalika aku ngerti saka publikasi iki, sampeyan bisa nyedhiyakake pranala menyang proyek kasebut.

Sadurunge njlentrehake proyek kasebut dhewe, aku bakal ngandhani sampeyan babagan proses sinau klompok kasebut; tanpa iki, gambar kasebut bakal ora lengkap.

9 wulan latihan

Wonten ing sekolah kula mucal, mata kuliah Basa Jawi kaperang dados 2 perangan. Secara total, kursus kasebut mbutuhake udakara 9 wulan, kanthi kabeh istirahat (preian Taun Anyar, wektu kanggo nulis proyek perantara).

Bagian kapisan ngenalake siswa babagan konsep dhasar basa. Variabel, metode, dhasar OOP lan kabeh mau.

PΓ©rangan kapindho kursus kasebut nyedhiyakake siswa sing wis ngerti carane nulis ing Jawa, lan bisa diwenehi tumpukan teknologi "diwasa". Iku kabeh diwiwiti karo SQL, banjur JDBC, Hibernate. Banjur HTTP, servlets. Sabanjure yaiku Spring, sethithik babagan git lan maven. Lan siswa nulis proyek pungkasan.

Kabeh latihan dipΓ©rang dadi modul. Aku nindakake kelas kaping pindho saben minggu. Suwene siji pelajaran yaiku rong jam.

Pendekatanku kanggo sinau

Aku ngeculake 5 grup. Iku misale jek kaya akeh kanggo rong taun, nanging aku meh tansah mimpin 2 kelompok ing podo karo.

Aku wis nyoba macem-macem pendekatan.

Opsi pisanan yaiku siji pasangan dialokasikan kanggo presentasi kanthi teori. Pasangan kapindho yaiku praktik murni. Pendekatan iki piye wae, nanging ora efektif banget, miturut pendapatku.

Opsi kapindho sing dakkarepake lan sing dakkarepake saiki yaiku ora nyawisake saperangan kanggo teori. Nanging, aku nyampur bagean-bagean teori sing cendhak kanggo 5-10 menit, lan langsung nguatake kanthi conto praktis. Pendekatan iki luwih apik.

Yen ana wektu cukup, aku nelpon siswa menyang panggonanku, lungguh ing laptop, lan padha nindakake conto praktis dhewe. Kerjane apik, nanging sayangΓ© butuh wektu akeh.

Ora saben wong bisa nganti pungkasan

A wahyu kanggo kula ana kasunyatan sing ora kabeh klompok tekan mburi mesthi.

Miturut pengamatanku, mung separo siswa sing nulis tugas akhir. Akèh-akèhé diilangi nalika bagian pisanan kursus. Lan sing wis tekan bagian kapindho biasane ora tiba.

Padha ninggalake kanggo macem-macem alasan.

Sing pisanan yaiku kerumitan. Ora preduli apa sing diomongake, basa Jawa dudu basa sing paling gampang. Kanggo nulis program sing paling gampang, sampeyan kudu ngerti konsep kelas, metode. Lan ngerti sebabe sampeyan kudu nulis public static void main(String[] arg) Ana sawetara konsep liyane kanggo ngerti.

Bandhingake karo Turbo Pascal, sing diwiwiti dening akeh wong, kalebu aku:

begin
    writeln("ΠŸΠ΅Ρ€Π²Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°");
end.

Sa adoh aku ngerti, sekolah bakal ngatasi masalah iki kanthi ngenalake tes tambahan. Saiki ora kabeh wong bisa sinau basa Jawa. Iki isih ing tahap konsep, nanging langkah kasebut jelas sing bener.

Lan alesan kapindho kaya ing gambar ing ngisor iki:

E-Dobavki - layanan web kanggo nggoleki aditif panganan ing Jawa lan Spring Boot, sing ditulis dening siswa

Wong asring mikir yen pemrograman yaiku babagan ngetik akeh teks lan entuk dhuwit akeh. Kaya copywriter, mung luwih dhuwit.

Kasunyatane rada beda. Akeh kode rutin, bug sing ora jelas, proses sinau sing terus-terusan. Iku menarik, nanging ora kanggo kabeh wong.

Iki minangka statistik. Kaping pisanan aku nesu, aku mikir yen aku nindakake salah. Saiki aku ngerti yen statistik kira-kira padha kanggo umume kursus. Saiki aku ora padha sumelang ing bab iku, nanging mulang wong-wong sing kasengsem ing.

Gagasan layanan

Sawise siswa ngrampungake kabeh kursus, wektune nulis proyek pungkasan. Ana macem-macem gagasan. Dheweke nawakake lembar ToDo, proyek manajemen proyek, lan liya-liyane.

Aku wanted kanggo nindakake soko prasaja nanging migunani. Kriteriaku prasaja - apa aku lan kanca-kanca bisa nggunakake. Layanan web kanggo nggoleki aditif panganan wis nyukupi syarat kasebut.

Ide punika prasaja. Nalika sampeyan tuku produk ing toko, sampeyan bakal weruh sawetara jenis E-aditif ing komposisi. Ora jelas saka kode carane mbebayani utawa ora (lan ana uga aditif mbebayani sing dilarang ing pirang-pirang negara).

Sampeyan mbukak situs web, ketik jeneng suplemen (nomer, salah sawijining jeneng alternatif), lan entuk ringkesan suplemen:

E-Dobavki - layanan web kanggo nggoleki aditif panganan ing Jawa lan Spring Boot, sing ditulis dening siswa

Ana proyek sing padha. Sampeyan uga bisa ngetik aditif menyang Google, sanajan ora tansah nuduhake informasi kanthi bener.

Nanging amarga proyek kasebut minangka pendidikan, kesulitan ing ndhuwur ora mandheg :)

РСализация

Kabeh wong nulis nganggo aksara Jawa, kode sumber proyek ing Github.

Ana 7 kita, kalebu aku. Saben uwong nggawe panjaluk narik, lan aku, utawa wong liya saka grup kasebut, nampa panjaluk tarik iki.

Implementasi proyek kasebut butuh udakara sewulan - saka nyuarakake ide menyang negara sing sampeyan deleng saiki.

Aditif parsing

Babagan pisanan sing ditindakake dening siswa, kajaba nggawe kerangka dhasar ing sekitar database (entitas, repositori, lsp.), yaiku parsing add-on saka situs informasi sing wis ana.

Iki perlu kanggo nyoba poin sing isih ana. Ora ana kode tambahan sing dibutuhake kanggo ngisi basis data. Sawise ngurai sawetara aditif kanthi cepet, kita bisa nguji UI, ngurutake, lan nyaring.

Spring Boot ngidini sampeyan nggawe macem-macem profil. Profil minangka file kanthi setelan.

Kanggo lingkungan dev, kita nggunakake profil karo DBMS H2 lokal lan port HTTP standar (8080). Mangkono, saben-saben aplikasi dibukak, database wis dibusak. Parser ing kasus iki yaiku sing nylametake kita.

Telusuri lan nyaring

Titik penting yaiku telusuran lan nyaring. Wong ing toko kudu cepet ngeklik kode suplemen, utawa salah sawijining jeneng, lan entuk asil.

Mulane, entitas Additive duwe sawetara lapangan. Iki kode aditif, jeneng alternatif, deskripsi. Panelusuran ditindakake kanthi nggunakake Kaya ing kabeh lapangan bebarengan. Lan yen sampeyan ngetik [123] utawa [amaranth], sampeyan bakal entuk asil sing padha.

Kita nindakake kabeh iki adhedhasar Spesifikasi. Iki minangka bagéan saka Spring sing ngidini sampeyan njlèntrèhaké kondisi panelusuran dhasar (kaya sawetara lapangan, contone), banjur gabungke kondisi kasebut (UTAWA utawa AND).

Sawise nulis puluhan spesifikasi, sampeyan bisa takon pitakon rumit kaya "kabeh aditif pewarna sing mbebayani sing duwe tembung [abang] ing katrangan."

Ing babagan nggarap database Spring, aku rumangsa trep banget. Iki utamanΓ© bener nalika nggarap pitakon rumit. Aku ngerti manawa iki duwe overhead dhewe, lan pitakon SQL sing ditulis lan dioptimalake kanthi manual bakal luwih cepet.

Nanging aku uga netepi sudut pandang yen ora perlu ngoptimalake kabeh sadurunge. Versi pisanan kudu miwiti, bisa, lan ngidini panggantos bagean individu. Lan yen ana beban, bagean individu kasebut kudu ditulis maneh.

keamanan

Iku prasaja. Ana pangguna sing duwe peran ADMIN - bisa ngowahi tambahan, mbusak, lan nambah sing anyar.

Lan ana pangguna liyane (kadhaftar utawa ora). Dheweke mung bisa nelusuri dhaptar aditif lan nelusuri sing dibutuhake.

Spring Security digunakake kanggo misahake hak. Data pangguna disimpen ing basis data.

Pangguna bisa ndhaftar. Saiki ora menehi apa-apa. Yen siswa terus ngembangake layanan kasebut lan ngenalake sawetara fungsi khusus, mula registrasi bakal migunani.

Responsiveness lan Bootstrap

Titik sabanjure yaiku adaptasi. Ing kasus layanan kita (paling ora kaya sing kita deleng), mayoritas pangguna bakal nganggo ponsel. Lan sampeyan kudu cepet ndeleng tambahan saka ponsel.

Supaya ora nandhang sangsara karo CSS, kita njupuk Bootstrap. Murah, ceria, lan katon prayoga.

Aku ora bisa nelpon antarmuka becik. Kaca utama malah kurang, lan kaca kanggo katrangan rinci babagan aditif kasebut sempit; ing ponsel kudu digawe luwih akeh.

Aku mung bisa ngomong sing aku nyoba kanggo ngganggu karya minangka sethitik sabisa. Iki isih proyek mahasiswa. Lan mesthi, wong lanang bakal bisa mbenerake wektu kasebut mengko.

A Menit Optimization SEO

Awit aku wis melu banget ing situs web lan kabeh sing ana gandhengane karo SEO luwih saka rong taun, aku ora bisa ngeculake proyek tanpa optimasi SEO dhasar.

Nyatane, aku nggawe generasi Cithakan Title lan Description kanggo saben add-on. URL meh CNC, sanajan bisa digawe luwih cendhek.

Aku uga nambah counter rawuh. Nambahake situs menyang Yandex Webmaster lan Google Search Console kanggo ngawasi bebaya saka mesin telusur.

Iku ora cukup. Sampeyan uga kudu nambah robots.txt lan sitemap.xml kanggo indeksasi lengkap. Nanging maneh, iki proyek mahasiswa. Aku bakal ngandhani apa sing kudu ditindakake, lan yen dheweke pengin, dheweke bakal nindakake.

Sampeyan kudu masang sertifikat SSL. Let's Encrypt gratis uga bakal bisa digunakake. Aku nindakake iki kanggo Spring Boot. Ora angel ditindakake, lan kapercayan PS tambah.

Apa sabanjure kanggo proyek kasebut?

Banjur, nyatane, pilihan gumantung saka wong lanang. Ide asli proyek kasebut uga kalebu database produk kanthi tautan menyang aditif.

Ketik "Snickers" lan deleng apa aditif nutrisi sing ana.

Malah ing wiwitan proyek, aku ngerti yen kita ora bakal duwe produk :) Mulane, kita miwiti mung karo aditif.

Saiki sampeyan bisa nambah produk lan ngenalake tambahan. roti. Yen database ekstensif, bakal ana pangguna.

Penyebaran

Proyek kasebut disebarake ing VPS, Aruba Cloud. Iki minangka VPS paling murah sing bisa ditemokake. Aku wis nggunakake panyedhiya iki luwih saka setahun kanggo proyekku, lan aku seneng banget.

Karakteristik VPS: 1 GB RAM, 1 CPU (Aku ora ngerti babagan frekuensi), 20 GB SSD. Kanggo proyek kita iki cukup.

Proyèk iki dibangun nggunakake paket resik mvn biasanipun. Asil punika jar lemak - file eksekusi karo kabeh dependensi.

Kanggo ngotomatisasi kabeh iki, aku nulis sawetara skrip bash.

Skrip pisanan mbusak file jar lawas lan mbangun sing anyar.

Skrip kapindho ngluncurake jar sing dipasang, menehi jeneng profil sing dibutuhake. Profil iki ngemot informasi sambungan database.

DB - MySQL ing VPS padha.

Total miwiti maneh proyek kalebu:

  • mlebu VPS liwat SSH
  • download owah-owahan git paling anyar
  • mbukak local-jar.sh
  • mateni aplikasi sing mlaku
  • mbukak launch-production.sh

Prosedur iki njupuk telung menit. Iki misale jek kaya pilihan pinter kanggo kula kanggo proyek cilik kuwi.

Kesulitan

Kesulitan utama kanggo nggawe proyek kasebut yaiku babagan organisasi.

Ana klompok wong sing koyone ngerti carane program, nanging ora banget uga. Dheweke ngerti apa wae, nanging isih ora bisa ngetrapake. Lan saiki dheweke kudu ngrampungake proyek kasebut sajrone sewulan.

Aku ngenali pimpinan tim kondisional ing grup iki. Dheweke nyimpen Google Doc kanthi dhaptar tugas, mbagekke tugas, lan ngontrol panriman kasebut. Dheweke uga nampa panjalukan narik.

Aku uga njaluk siswa nulis laporan singkat saben sore babagan karya sing ditindakake ing proyek kasebut. Yen sampeyan ora nindakake apa-apa, ok, mung nulis "apa-apa". Iki minangka latihan sing apik lan nggawe sampeyan rada tegang. Ora saben wong ngetutake aturan iki, sayangΓ©.

Tujuan kabeh gerakan iki prasaja. Nggawe tim, sanajan mung sedhela, kanggo kerja bareng.

Aku pengin wong lanang rumangsa yen karyane penting. Ngerti yen dheweke ora nulis kode bola ing vakum. Lan apa sing ditindakake bebarengan yaiku proyek sing bakal digunakake wong.

Minggu utawa rong minggu pisanan ana mbangun. Entitas lan komitmen cilik digawe alon-alon. Sithik-sithik tak gawe, lan gaweyane dadi luwih nyenengake. Komunikasi ing obrolan dadi luwih urip, siswa menehi tambahan.

Aku pracaya sing goal wis ngrambah. Proyek wis rampung, wong lanang entuk pengalaman sethithik kerja ing tim. Ana asil sing katon lan nyata sing bisa dituduhake menyang kanca lan luwih dikembangake.

temonan

Sinau iku menarik.

Sawise saben kelas aku bali kanthi emosi. Aku nyoba nggawe saben pasangan unik lan menehi kawruh sabisa.

Enak yen grup sing tak wulang tekan final. Iku utamanΓ© kelangan nalika wong lanang nulis "Aku entuk proyek, kabeh apik, matur nuwun." Malah yen iku junior, malah yen ora dhuwit paling gedhe ing kawitan. Nanging sing paling penting yaiku dheweke njupuk langkah menyang kepinginan, lan dheweke sukses.

Sanajan artikel kasebut cukup akeh, mesthine ora bisa nutupi kabeh poin. Mulane, tulis pitakonan sampeyan ing komentar.

Source: www.habr.com

Add a comment