Martini blogi - tammmatTLU/suvepraktika_tiim2 GitHub Wiki

Esmaspäev - 09.06.2025

Täna oli praktikasse sissejuhatav päev, mis algas loenguga praktika korralduse kohta ja lisaks toimus ka loeng SCRUM raamistiku kohta, mis mõlemad aitasid meil meeskonnana ja mul meeskonnaliikmena paremini aru saada, kuidas hakkavad siin asjad järgmised kaks nädalat kulgema. Võtsime kasutusele Jira backlog-i loomiseks ja veetsime suure osa esmaspäevast Jira-t täites kasutajalugudega ja üldisemate taskidega. Kustutasime oma vana andmebaasi, mis oli loodud Hi-Fi prototüübi testimiseks ja alustasime suvepraktika projekti püstipanekuga. Meie meeskonnle tuli õnneks appi härra Peter, kes saab näidata meile, kuidas backendi tegemine PHP-s käib. Samuti tutvustas ta meile Docker-it, mida ta aitab meil rakendada meie projektis, et meil oleks lihtsam tööd teha. Tegime symfony-ga backendile php frameworki valmis, et homme oleks alustades see juba olemas. Samuti päeva jooksul arutasime Peteriga ja õppejõud Jaagupiga meie projekti arendusest ning tegime andmebaasi mudelile paar muudatust. Üldiselt sai pilt eesolevast arendusest selgemaks.

Teisipäev - 10.06.2025

Päeva alguses tutvusin ma Symfony dokumentatsiooniga ja lugesin täpsemalt routingu, URL-ide genereerimise ja controllerite kohta. Mulle määrasime backendi meeskonnana ülesande implementeerida algeline API, nii et hakkasin sellega tegelema. Õnneks OOP kursusel tehtud backend Javas järgis ülesehituselt sarnaseid reegleid nagu php backend, siis failistruktuuri suhtes oli palju tuttavat - samamoodi controllerid, entityd, routerid ja repositoryd. Peter tegeles terve päeva Dockeri püstipanemisega ja selgitas mulle, kuidas see kogu asi töötab. Siis kui mõned routerid ja controllerid olin paika pannud ja töötasid, tegi Armin API dokumentatsiooni minu tehtud API otspunktide kohta (../api/docs). Samal ajal kui API implementeerimisega tegelesin, genereeris Armin migratsioonid ja lõi uue andmebaasi MariaDB-s. Üldiselt jäin tänase päeva progressiga rahule, kuna sain palju uusi teadmisi nii php, symfony kui ka dockeri kohta.

Kolmapäev - 11.06.2025

Täna ma arendustöös ei osalenud, kuna olin isiklikel põhjustel eemal. Küll aga vaatasin üle kõik päevalõpuks tehtud commitid ülejäänud meeskonna poolt ja uurisin neilt, et mida nad targemaks said pärast kliendiga suhtlemist. Docker on nüüd püsti ja edaspidine arendustöö on mugavam. Samuti andsid nad mulle ülevaate sellest, mis veel tehtud sai ja mis ootab meid ees homme.

Neljapäev - 12.06.2025

Hommikul jooksutasin ka mina enda arvutis esmakordselt dockeris meie projekti. Hakkasime tegelema testandmete genereerimisega ja alguses tekkis selline olukord, kus igal kirjel oli 2 id-d (nt room_id_id), kuid lõuna paiku sai see probleem lahendatud. Pärast seda suhtlesime frontendi poistega ja küsisime neilt, et milliseid andmeid oleks kõige kiiremini vaja andmebaasist kätte saada, et neid frontendis kuvada olemasolevate lehtedega testimiseks. Palju läks aega raisku dockeri jamadega ja ma möllasin kokku mingi 4 tundi probleemidega, mis ei lasknud mul isiklikus arvutis dockerit käimagi saada. Tegime algsed custom repo päringuid nagu getById kasutajatele, et authentication-i osaga saaks edasi liikuda.

Reede - 13.06.2025

Täna hilinesin arendusele u. 3h ja enesetunne on selle koha pealt halb, kuna oleksin võinud täna arendusse rohkem panustada. Kui kooli jõudsin, siis aitasin Peteril backendis autentimiseks vajalikke muudatusi sisse viia - lõin uue tabeli Token (mille sidusin User kasutajaga, millega saab rakendus checkida lehtede vahel liikumisel, kas kasutajal on valid token olemas ehk nad on sisse logitud või mitte). Samuti kirjutasin tokeni genereerimiseks vajaliku faili, mida Peter autentimise controlleris rakendas.

Esmaspäev - 16.06.2025

Täna tegelesin controllerite findById funktsioonidega täiustamisega, kuna pidime mõned ära kustutama eelneva nädala lõpus. Siis lõin serialize() funktsiooni iga entity faili sisse, mis muudab PHP objektid lihtsaks arrayks, et neid saaks kuvada JSON kujul GET API-otspunktidel. Lisasin iga controlleri sisse vastavalt serialize funktsiooni. Mõnes controlleris oli mõne atribuudi saatmine samuti puudu tänase päeva alguses (mis tulenes sellest, et algselt testimise pärast me proovisime mõnes kohas ainult id-d ja nime saada api otspunktidel), seega lisasin kõikidesse controlleritesse need mis puudu. Samaaegselt tegeles Armin errorhandlinguga ja status koodide tagastamisega - samuti api dokumentatsiooni täiendamisega. Siis mergesime oma branchid mainiga ja lahendasime merge conflictid, kuna me ehitasime samades failides.

Teisipäev - 17.06.2025

Eilne serialize funktsioon oli ühe api otspunkti teinud mitte kättesaadavaks, kuna olin seda rakendanud kohas, kus see ei järginud seda loogikat, et mul oli vaja tagastada array, aga serialize tagastas seal stringi. Sellele leidsin ruttu lahenduse ja õnneks see oli ainuke leht, kus see oli vea tekitanud - küllap oli see mul pärast eilset api-de testimist kahe silma vahele jäänud. Pärast seda hakkasime Arminiga tegelema puldi vaate redigeerimise vaates salvesta nupu vajutamise loogikaga, mis siis pidi töötama nii: salvesta nuppu vajutades saadetakse backendile hetkeste nuppude redux state-d ja siis backend võrdleb neid andmebaasis olevate nuppudega (ButtonInstance-itega) - võimalikuks pidid tegema 4 olukorda, mille kõigi puhul oskab backendis olev ButtonInstanceController õiget asja teha. Need 4 võimalikku olukorda on järgmised: 1. admin ei muutnud ühtegi asja vaates - ei lisanud nuppe, ei kustutanud nuppe ja ei muutnud olemasolevate nuppude välimust, ehk kui backend võrdleb saadud nuppe andmebaasis olevatega, siis ei tehta midagi. 2. admin kustutas mingi nupu ära - võrdlemisel tuleb välja, et saadetud nuppude seas pole sellist nuppu enam, nagu andmebaasis kirjas on, ehk see kustutatakse andmebaasist. 3. admin lisas nupu - andmebaasi lisatakse ka. 4. admin muutis mingi nupu parameetreid (asukohta, välimust jne) - andmebaasis olev väärtus POST-itakse sama idga, kuid uuendatud parameetritega üle. Sellega tegelesime kella 17:00-ni välja, aga lõpuks POSTMAN-iga testimisel saime teada, et töötab. Nüüd proovisime frontendis loodud api otspunkti testida, kuid tuli välja, et kuna frontendi poisid olid nii palju meist ette jõudnud, siis nad olid juba andmete pärimisele teise kuju juurde kirjutanud. Istusime kuni 19:00-ni klassis ja proovisime backendis seda kuju teha selliseks et frontendist saadetud asjad lõpuks päriselt jõuavad kohale. Ma olin juba kella 17:00-st saati täiesti sooda peast ja minust polnud palju kasu probleemide lahendamisel - ma vaatasin, proovisin kaasa mõelda ja vahest äkki midagi tarka öelda, kuid Armin lahendas selle frontendi ja backendi connectimise probleemi antud api otspunkti puhul põhimõtteliselt üksinda ära (kolmas liige, kes meiega õhtuni seal oli ja jäi veel kauemaks peale meid oli frontendi Mattias ja ta aitas Arminil mõista frontendi andmete saatmise loogikat, millest oli kindlasti kasu probleemi leidmisel.

Kolmapäev - 18.06.2025

Täna ma jällegi arendustöös ei osalenud, kuna olin isiklikel põhjustel eemal. Viisin ennast õhtul kurssi päeva jooksul tehtud commitidega githubis ja Jira taskide olekuga.

Neljapäev - 19.06.2025

On kätte jõudnud arenduse viimane päev ja täna jõudsin arendusele alles peale lõunapausi, kuna magasin sisse. Testimiseni ma kahjuks ei jõudnudki - mõtlesin Selenium Robot Framework-iga teha automatiseeritud testimise. Enesetunne arenduse viimasel päeval oli mul suhteliselt halb, kuna ei panustanud arendusse sama palju, kui ülejäänud meeskond - arenduselt puudumised ja hilinemised. Tunnen, et vedasin oma arendusmeeskonda oma puuduliku pühendumisega alt. Käisime ka kella 5 paiku kliendiga rääkimas ja näitasime talle seda, mis valmis saime. Paar asja ei töötanud, kuna me ei jõudnud neid testida niimoodi, kui projektifailid on käivitatud dockerit kasutamata. Arenduse ajal tegime kõike kasutades dockerit, aga kuna üks projekti nõuetest oleks see, et seda saaks käivitada ükskõik millises seadmes, ükskõik kus serveris, siis meeskond kulutas selle peale täna terve päeva, et seda ilma dockerita käima saada. Klient mainis mõnda asja, mis me tegime ja oli tema arvates üleliigne ja mis oli puudu (nt nupu kujunduses kujundi valimine). Kokkuvõttena ütles klient, et olime tublid ja peaasi et saime targemaks ning järgmise projekti puhul juba oskaks paremini esilekerkivaid probleeme lahendada ja teaks asju rohkem läbi mõelda enne arendust.

Reflekteeriv kokkuvõte - 19.06.2025

Minu jaoks kõige olulisem "sündmus"/õppetund kogu suvepraktika vältel oli meeskonnatöö ja pühendumise tähtsus. Meeskonnaliikmena oleks mul võinud olla rohkem austust ülejäänud tiimi vastu, kuid kahjuks taipan ma seda alles nüüd arenduse lõpupäevadel. Austuse all pean ma silmas meeskonnatöö aspekte nagu suhtlemine, panuse kvaliteet ja rohkem tiimi jaoks olemas olemine. Kõige õnnelikum sündmus oli justkui see, kui saime frontendis puldi vaate redigeerimise lehe vastava backendi osa lõplikult tööle, nii et puldi vaadetesse sai nuppe lisada, neid kustutada, neid muuta ja vaateid kopeerida sellisel viisil, et salvestatud muudatused jõuavad backendi kaudu andmebaasi.

Õppisin Dockeri, PHP-s backendi kirjutamise ja Symfony frameworki kohta. Kõike, mida tegin projekti raames, pidin ka samaaegselt õppima, kuna puutusin nende asjadega kokku põhimõtteliselt esmakordselt. Üks asi millega olin varem tutvunud oli backendi struktuur, kuna OOP kursusel läbitud Java-ga kirjutatud backendi struktuur sarnanes sellega. Tuleviku projektides peaks ka frontendi meeskonnaliikmetega rohkem suhtlema, kuna meie arenduse vältel jõudis frontend nii palju ette, et me oleks võinud nende soovitud kujul andmete saatmise ja vastuvõtmise teha kohe API otspunktide loomise alguses, kuid kuna ei suhelnud selle koha pealt, siis pidime hiljem ümber tegema.

Samuti taipasin, et väga suuri eesmärke (nagu antud olukorras oleks projekti lõppprodukti valmis saamine) ei tasu endale (meeskonnaliikmena/meeskonnana) seada, kuna pidevalt lakkasid eelmisel päeval valmis saadud asjad uuel päeval töötamast ja kõikide isegi väiksemate vigade parandamine võttis palju rohkem aega ära kui oli arvata.

Suvepraktika näitas mulle, et hea ja tõhusalt organiseeritud meeskond vajab iga liikme täielikku kaasatust. See kogemus andis mulle tugeva aluse järgmisteks projektideks, kus proovin ennast kindlasti meeskonnaliikmena parandada ja olla suuresti rohkem kasulik :/ .

Reede - 20.06.2025