44 postitust kokku

Programmeerimine

Sildid

Git hook'id

Ilmselt on kõik, kes kasutavad Git'i, vähemalt korra kuulnud terminit Git hook. Aga mul isiklikult ei ole varasemalt olnud vajadust neid uurida. Mingites projektides olen küll näid näinud kasutusel, aga ma ei olnud neid kunagi loonud ega süveninud nende sisusse. Tuleb aga välja, et Git hoo ...

Valmistehtud kujundusmallid

Vanast ajast on jäänud iganenud seisukoht, et parima kasutajakogemusega veebilehe saab, kui see ise nullist ehitada. Esimese muutustelaine põhjustasid ilmselt valmistehtud CSS kujundusmallide raamistikud (näiteks Bootstrap, TailWind). Ei olnud lihtsalt mõistlik hakata igat baaaselementi is ...

Tehnilise võla tasumine

Tehnilisest võlast on räägitud väga palju ja ilmselt on selle olulisus kõigile arusaadav. Mõnede uuringute kohaselt võib see kulutada 30-50% ajaressursist, seega sellega tuleb tegeleda. Mõistlik oleks võlga süsteemaatiliset ja pidevalt tagasi maksta, ning hoida koodi kvaliteeti jälgimises. ...

Arendaja distsipliin

Agiilsed arendusmeetodid on väga levinud ja kõigile teada. Kuid näiteks raamistikud, nagu Scrum ja Kanban, keskenduvad protsessidele ja vaatavad olukorda kõrgemal tasemel, kui seda on arendaja kirjutatud kood. Madalam tasemel agiilsete võtete kasutamisel tuleks vaadata aga näiteks Extreme ...

Spring Boot andmebaasi testimine

Andmebaaside testimiseks Spring Boot raamistikus käivitatakse tihti kogu rakenduse kontekst. See aga võib kaua aega võtta, ning muu hulgas käivitada ka antud olukorras mittevajalikke teenuseid, nagu Kafka sõnumite kuulamine või ajastatud tööd (cron job). Selliste olukordade lahendamiseks p ...

Kotlini invoke() operaator

Kotlinis on olemas operaator nimega invoke. Kui klassis defineerida see operaator, siis on koods võimalik kutsuda klassi instantse välja ilma meetodi nime defineerimata. Kui klass teeb ainult ühte tegevust ja klassi enda nimi on piisavalt arusaadav, võib kaaluda invoke() operaatori definee ...

Kotlini vaikeväärtused JSONi deserialiseerimisel

Kotlinis vaikeväärtuste lisamine võimaldab andmeobjekte muuta ning lisada välju koos piirangutega, et antud väli ei ole kunagi väärtustamata (null). Selline lahendus töötab väga hästi näiteks andmebaasist loetavate andmetega, kuna andmeobjektide loomise üle on täielik kontroll ning väärtus ...

Ajagraafikute konflikt

Arendajate ja juhtkonna ajaplaneerimine toimuvad väga erinevalt. Kui arendajad teevad süvenemist vajavat tööd, siis nende päevaplaan koosneb suurtest töötegemise ajablokkidest. Katkestus sellise bloki keskel tähendab, et suur osa sellest läheb raisku. Peale katkestust ei ole võimalik tööd ...

Kotlini tüübialias

Kotlinis on võimalik defineerida andmetüübi nimedele aliaseid ja seega viidata samale tüübile teise nimega. See on väga praktiline kui olemasolev tüübinimi on juba väga pikk ja lohisev. Näiteks: Või anda näiteks primitiivsetele andmetüüpidele olukorda paremini kirjeldav nimi: Kuna tüübi ...

Testkeskkonna taastamine

Üritades tarkvara ehitamise protsess üle viia GitHub Actions keskkonda, tekkis probleem integratsioonitestidega, mis järku enam ei töötanud. Esialgu kahtlustasime pikalt probleemi kasutuses oleva SpringBoot embedded Kafka või Wiremockiga. Aga lõpuks selgus, et viga oli hoopis Ping veebires ...