Vaiko blogi - tammmatTLU/suvepraktika_tiim2 GitHub Wiki

Esmaspäev - 09.06.2025

Täna oli minu jaoks väga aeglane päev. Sain aimu, mis asi on SCRUM täpsemalt. Minu arvates, mu panus täna ei olnud väga suur. Tegin üksikuid asju, nt endise andmebaasi droppimine, blogide templateid, backlog jne. Mu mõte ei jooksnud ning väga raske oli klassis müra käes keskenduda. Loodan, et järgnevate päevade jooksul suudan rohkem panustada ja kaasa rääkida. "Flow" on vaja uuesti kätte saada. Kui juba alguses oli raske käima saada, siis kella kahe/kolme paiku oli juba aju koos ning tundsin end veel kasutumalt kui päeva alguses. Selline tunne, nagu mul oleks tehnilist taipu palju vähem. Loodan, et homme saan veidi kasulikum olla.

Teisipäev - 10.06.2025

Täna alustasime koodi kirjutamisega. Mulle ei olnud kohe eraldi isiklikku ülesannet, minu ja Mattiase ülesandeks oli frontendiga alustada - valmis teha default kasutajavaade ja sisse-logimine. Mattias hakkas kiirelt tööle ning ma ei osanud kuskilt alustada ja tundsin, et istun siin tühja. Üks hetk sain aru, et mõistlikum oleks kahekesi ühte XP praktikat kasutada. Ühendasin ühe arvutiga ära kaks monitori, kaks hiirt ja kaks klaviatuuri ning hakkasime tegutsema. Kahekesi saime väga kiirelt ülesanded valmis. Kui on konstantne "koodikontroll", on ikka kõvasti kergem ja kiirem asju teha. Kahekesi saime mõtteid bounce-ida ning jõudsime palju ilusama kasutajaliideseni kui meil HiFi prototüübis oli.

Pikalt muretsesin, et kuidas lahendada sellist situatsiooni, kui ühes auditooriumis on kaks pulti ning mõlemale puldile on vaja saata tagasisidet seadmete olekute kohta. Tänase jooksul leidsin sellise Reacti contexti nagu WebSocket (https://blog.stackademic.com/websockets-and-react-wscontext-and-components-subscription-pattern-4e580fc67bb5), mis sisuliselt lahendaks meie "kahe puldi" probleemi. See kontekst kuulab kui on mõni staatuse muudatus ning edastab selle teistele komponentidele, mis on "subscribed". See väldiks backendis pollimist ning on teoorias tegelikult hea lahendus meie situatsioonis. Pean nüüd uurima kuidas seda implementeerida ning kas see ka praktikas meid aitaks.

Homne plaan on "vaatab jooksvalt", arvatavasti üritame aidata backendiga ning kui selle valmis saame siis ühendame puldi vaate backendiga.

Kolmapäev - 11.06.2025

Tänane päev läks juba palju edukamalt. Tegime valmis nö kondikava kuhu saame asju edasi implementeerida kui backendi mehed oma asjad enamvähem valmis saavad. Kõige raskem osa on veel ees - kasutajaliidese redigeerimine, nuppude lohistamine jne (ma arvan, et selle peale läheb ca 3-4 päeva). Saime rääkida ka oma kliendiga. Olin väga õnnelik selle üle, et ei pea asju uuesti/ümber tegema ja tegelikult liigume õiges suunas. Tänase jooksul sain Reacti selgemaks. Jirasse said kirja ka meie järgmised ülesanded - lõviosa ongi kasutajaliidese redigeerimise kohta.

Ma olen tänase päevaga väga rahul, päev muidu algas väga aeglaselt - hommik oli raske ning tegelikult ei tahtnud üldse kohale tulla, aga pärast lõunasööki tuli energia ja uus motivatsioon ning töö hakkas uue hooga pihta. Homme teeme algust Redux store-iga, loodetavasti saame lisada ka näidisandmed ja API päringud.

Neljapäev - 12.06.2025

Nüüdseks on rutiin juba välja kujunenud. Täna tegime tagasinupu ning alustasime Redux store-iga. Väga raske on nii "tühja" koodi kirjutada (ning samal ajal seda õppida) kui reaalselt kontrollida ei saa, kas asi toimib. Siiani ootame backendi meeste API punkte ning testandmeid. Tahaksime need juba ära ühendada, et saaksime normaalselt edasi liikuda. Täna juhtus ka väike äpardus kus Mattias kustutas terve frontendi kausta ära. Pidime selle restore-ima. Unevõlg on üsna suur ja väsimus kipub peale.

Meie töö ongi praegu nö "pausil", sest kõik kood mida me kirjutame sõltub backendist. Üsna mõttetu oleks kirjutada, kui pärast peaksime kõik täielikult ümber tegema.

Reede - 13.06.2025

Implementeerisime täna Redux store-i ning alustasime kasutajaliidese redigeerimisega. Mattias oli põhiline "juht" kuna ta on Redux-iga palju tuttavam, mul oli suuresti õppimine, et mis mida teeb ning liidese bugidega kaasa aitamine. Sain giti selgemaks, kuna pidime välja mõtlema, miks Martini tehtud töö ära kadus - lõpuks leidsime, et ta ei olnudki commitinud oma tööd. Õhtuks saime ka ühendatud esimese API otspunkti, mis tegi liidese uuesti katki ning peame jälle parandusi otsima hakkama. Õhtu lõppes kell viis minu jaoks väga masendavalt. Lootsin, et saame rohkem tehtud ning kahtlen, et nelja päevaga projekti valmis saame. Ilmselt peame automatiseerimise täielikult välja jätma. Õhtul peale arendust, läksime tegime esimese nädala tähistamiseks ühed õlled.

Esmaspäev - 16.06.2025

Täna jätkasime tööd kasutajaliidese redigeerimisega (täpsemalt nuppude ja tekstide lisamine). Alguses tegime väikese "refresheri", et mida eelmine nädal tegime. Mul oli täna meeletud allergiahood ning siiani on silmad punased ja kuivad, samuti pidin paari isikliku asjaga tegelema, niiet olin päeva alguses tagaplaanil, parandasin mõned bugid ära (uued elemendid "hüppasid" ekraani alla paremale). Lisasime uutele nuppudele kustutamise ja editimise võimaluse. Mattias käis vahepeal juuksuris ning selle ajaga tegin editimisesse uuesti malli valiku ning APIst nende fetchimise (juhul kui kasutaja tahab teist nupumalli kasutada) ning lisasin võimaluse muuta nuppude taustad läbipaistvaks. Hetkel tegeleme "grid"-iga. Klient soovis, et oleks võimalik valida kas elemente saab vabalt paigutada või on olemas "grid", kus elemendid jäävad kindla koha peale lukku. Üsna raske on õppida ainult AI abiga. Loogika kohaselt peaks kõik toimima (erroreid ei ole, kõik tundub loogiline) kuid tegelikult ei tööta. AI ei paku ka midagi tarka.

Väike uuendus, mässasime mega pikalt selle gridiga, lugesime dokumentatsiooni, kogu jutt mida AI meile rääkis oli vale ning tegelik õige property oli dragGrid. Proovisime ka seda ning ikka ei toiminud. Lõpuks märkasime, et olime seda propertyt muutnud ainult nuppudel. Gridi testimiseks kasutasime tavalisi tekste. Parandasin meie lolli vea ära ning kõik hakkas tööle nii nagu peab. See pisike asi võttis meil liiga kaua aega. Kell on ilmselgelt liiga palju ja rohkem täna kvaliteetset tööd ei tule.

Teisipäev - 17.06.2025

Täna jätkasime ikka kasutajaliidese redigeerimisega. Plaaniks oli valmis saada salvestamine (et uuendatud kasutajaliidesed salvestuksid Redux storei ja andmebaasi ning API otspunktidega saaksime need kuvada vastavalt vaatele). Kohe ei saanudki tööd alustada, kuna meil tekkisid mingisugused bugid backendi. Peaaegu kogu tiim keskendus sellele - Martin oli eile lisanud serialize-imise ning see tekitas pahandust. Lisaks oli ühest kohast olid loogelised sulud puudu (samal ajal lisasime Redux-oleku salvestamisel spanide postitamisele kasutajanime). Kui bugid said parandatud siis hakkasime oma ülesandega mässama. Veidi pärast pärast-lõunat saime elemendid korrektselt salvestama. Lisasime juurde ka Mattiase OOP-i eksamil tehtud undo nupu ja selle koodi veidi ümber muutes ka redo nupu. Tegime ka toolbar-i kujundust veidi inimlikumaks. Kella neljast sai minul tööpäev läbi ning läksin koju. Mattias, Armin ja Martin jäid veel kooli tööd tegema. Mattias tegi kuni seitsmeni ning ütles, et teeb kodus edasi kuna midagi jäi tal katkisena. Ma loodan, et ta päris kõike ära ei tee kuna tahaksin ka asjadega kursis olla ning pean oma "produktiivsuse protsenti" hoidma :D - ei taha tiimikaaslastelt väiksemat hinnangu ning halvemat hinnet. Homme pean end kurssi viima sellega, mida teised tegid. Homme peaksime lisama ka taustavärvi muutmise UI-configi (vaja muuta backendi natuke), lisaks veel vaadete kopeerimise ja võiks mingi hetk ka ajapõhise automatiseerimisega alustada.

Kolmapäev - 18.06.2025

Hommikul uurisin mida teised eelmisel õhtul tegid. Tööd alustasime logi välja nupuga - tegime lihtsalt nupu kuna sisuline pool tuleb Peterilt, ta tegeleb autentimise ja tokenitega. Järgmisena tegelesime kõikide seadmete haldamise lehega (admin "ruum"). Tegime uue slice-i, uue elemendi buttonTemplate. buttonTemplateSlice-i lisasime ruumide fetchimise, et nupud grupeerida ruumide kaupa. Kõik andmed paiknevad nüüd ühes scrollable tabelis - lisasin ka filtrisüsteemi selleks kui on suur kogus erinevaid nuppe - saab otsida kas klassiruumi või malli kaudu.

Mattiase eilsel koodil olid veel bugid sees. Probleem oli andmete parsimisega. Errorid tulenesid sellest, et meie "seeditud" (genereeritud testandmed) andmed olid valel kujul. Me parsisime neid teistmoodi. Kustutasime ära lihtsalt buttonInstance seedimise, ning saime parsimise parandatud. See "seedimine" oli suht mõttetu töö minu arvates. Me oleks ilma hakkama saanud ning see töö üksi võttis meie backendi meestel mingi 3-4 päeva. Selle ajaga oleks saanud API otspunkte ja kontrollereid teha ning äkki selle lisaajaga oleksime saanud toote täielikult valmis - praegu plaanikohaselt jääb meil ajapõhine automatiseerimine täielikult ära (kui me just homme ületunde ei tee).

Lisasime ka ruumide fetchimise, enam ei ole ruumid hardcoded. Seal tekkis ka alguses probleem - kui valida ruum, siis url-i läheb ruum valel kujul ning kuidagi tekkis meil infinite fetch loop (jäi buttoneid ja spane fetchima). Lahenduseks lisasime slicedesse loaded state-i. InitialState-i lisasime boolean väärtuse, mis on algselt false - kui tehakse ära thunk ja state on fulfilled (boolean muutub true-ks), alles siis hakkab pihta fetchmine.

Okei lisana, see oli ka probleem. Leidsime, et me võtsime võtsime ruumide informationi, mitte useri (mida tegelikult oli vaja). Terve aja tahtsime valest kohast informatsiooni. Järjekordne loll viga, mida oleksime võinud kohe märgata.

Päeva lõpu poole üritasime teha nii, et meie alguses tehtud roomSelect tuleks siis, kui valida "admin" ruum. Sellega tegelemine võttis päris kaua aega - loogika tundus korras olevat. Sellega oli ka loll viga. Küsisime ID-d, mitte userName-i.

Tegime valmis ka vaadete kopeerimise. Toolbari lisasime uue nupu millega avaneb modal aken, sealt saab valida ruumi mille vaadet kopeerida. Selle saime rekordkiirusega valmis veel päeva lõpus, kuna muud modal aknad olid sisult üsna sarnased, siis saime copy-pasteda.

Homme üritame ära teha nuppude grupeerimise (et saaks nt kõik klassiruumis olevad tuled ühe nupuga tööle panna)(kui me selle valmis saame, siis oleks kasutajaliidese redigeerimine otsast lõpuni valmis), tahaks täielikult valmis saada ka uute kasutajate loomise. Lisaks saame homme kokku kliendiga, ning peame tiimiga koos maha istuma ja lõpetamise dokumenti vaatama (readme korda, dokumentatsioon ja testid korda jne). Kui meil õhtul veel motivatsiooni ja energiat on, siis teeme valmis ka ajapõhise automatiseerimise. Väga nõme on projekti poolikuna esitada. Oleks see arendus-sprint 2. juunil alanud, oleksime rahulikult oma toote täismahus valmis saanud. Praegu läheb pisut kiireks.

Neljapäev - 19.06.2025

Võtsime ette bug fixid - lisasime sisselogimise routingu - tuvastab ara kas kasutaja on admin v mitte, parandasime tagasi nupu kuvamise ruumi vaadetel (kuvab ainult admin vaates) parandasime tagasi nupu cssi. tekkis vahepeal merge conflict, kuna peter ei saanud tana tulla, siis ta tegi asju kodust. samal ajal kui me valmis saime oli ta maini mergenud ning tekkis konflikt, me ei süvenenud kohe ning parandasime kahku ara. hiljem saime aru et midagi laks katki - mattias tahtis kohe "undo"-da meie merge-i, ma hakkasin vaatama mis täpsemalt mergei lahendamisega kaasa ei tulnud. otsisin eelnevatest commitidest üles ning parandasin ära.

parandasime ara ka navigeerimise - kui uus konto luua, viskab tagasi sisselogimisse - see tähendab seda, et admin peab enda kontoga uuesti sisse logima ja hakkama vaadet tegema. Tegime nii, et kui uus konto luua, saab admin kohe sellele vaadet luua.

15:33 update - tegelesime Mattiasega mõlemad oma arvutites. üritasime saada projekti tööle Dockerita. Mingi 3-4 tundi läks, et tööle saada. Kõik oli vaja alla laadida, andmebaas püsti panna jne. Väga suured probleemid erinevate asjadega (andmebaas ei töödanud, localhost oli vigane jne). Lõpuks sain tööle pärast AI-ga pikalt konsulteerimist. Lõpuks jäi mul lihtsalt frontend kausta .env fail lisamata - sellepärast ei toiminud mitte midagi. Mina ainsana sain projekti käima - keegi teine ei ole hakkama saanud siiani.

15:59 sai Mattias ka lokaalselt projekti püsti. Kohe peale seda läksime kliendiga kohtuma. Seal näitasime oma senini tehtud töö ning muljetasime. Tuli välja, et lahendus mida alguses pakkusin Mattiasele oli tegelikult õige ja klient sooviski nii - reaalsuses tegime adminile töö veidi raskemaks (klient soovis lihtsalt "käsurida", aga meie tegime nii, et käsud on vaja ise eraldi teha ja lisada Scripts kausta). Aega jäi puudu ja tegelikult on kurb meel, et homme peame poolikut projekti esitlema.

Reflekteeriv kokkuvõte - 20.06.2025

Kõige olulisem sündmus tiimi jaoks oli ilmselt see, kui buttonInstance salvestamine hakkas tööle. Minu jaoks oli kõige olulisem "sündmus" see, et pidime hakkama saama sisuliselt neljakesi. Üks tiimikaaslastest kadus täielikult ära, teine tiimikaaslane hilines peaaegu iga päev ning puudus suht tihti (ühel päeval me reaalselt kartsime, et temaga juhtus midagi kuna ta ei olnud kella kolmeks meile vastanud - ta ärkas alles 15:30 paiku). Nüüd neljapäeval (kõige olulisem päev) puudus ka meie "laenutatud" liige. Diskrediteerimata mu tublisi tiimikaaslasi, sain olulise õppetunni, et reaalsuses saad sada protsenti kindel olla ainult enda peale. Nende kahe nädala jooksul pidi meeletult palju juurde õppima - sellisest vaatevinklist sain tükk maad targemaks ja tehnilist taipu kõvasti juurde.

Peale uute keelte, raamistike, giti, dockeri ja muude tarkvarade, õppisin et asi tuleb korralikult läbi mõelda. Selline tunne on, nagu kogu töö mida me semestri vältel tegime, oli "pseudotöö". Pidime nii palju mõttetut tööd juurde tegema, et kursused läbida. Tehniliselt poolelt polnud meil palju teadmisi ja kõik polnud otsast lõpuni läbi mõeldud.

Õppisin, et ei tasu väga suuri ootusi sättida. See on garanteeritud, et midagi läheb katki ning sööb meeletult aega. Tihtipeale on need mingisugused lollid vead (ala, fetchid valesid andmeid, kontrollisid valede elementidega jne). Tööd tuleb teha rahulikult. Selliste vigade puhul tuleb jääda rahulikuks ja kõik uuesti üle vaadata (kui asjad korda ei saanud, siis muutusime tihtipeale üsna emotsionaalseks ning ei suutnud selge peaga mõelda).

Lisaks saime normaalselt selgeks ühiselt ühe arvuti taga tegutsemise ja sellega koos ka konstantse suhtluse. Pidevalt pidime selgitama mida me teeme ja mida kood teeb. Peab suhtlema kui tahad ise "juhtida". Meeletult hea oli mõtteid ja lahendusi omavahel arutada. Suured tänud Marek Kusminile :D