• Rezultati Niso Bili Najdeni

3.3.1 Razvojno okolje IntelliJ IDEA

IntelliJ IDEA je integrirano razvojno okolje (angl. integrated development environment), ki ga je razvilo podjetje JetBrains leta 2001. Na voljo je za Microsoft Windows 8 in dalje, na macOS od 10.13 naprej ter na Linuxovih distribucijah, ki podpirajo namizna okolja Gnome, KDE ali Unity. Napisano je v Javi in na voljo stacommunity editionincommercial edition. Prva je brezplaˇcna za vsakogar, drugo pa lahko brezplaˇcno dobijo vsi, ki obiskujejo izobraˇzevalne ustanove.

IDEA je zelo priljubljeno orodje za delo tako mobilnih kot spletnih in namiznih aplikacij, zato ima tudi veliko podporo samostojnih razvijalcev, ki lahko napiˇsejo vtiˇcnike, ki so tako na voljo tudi drugim. Vgrajeno ima podporo za jezike, kot so Java (primarno je bilo okolje razvito zgolj za ta jezik), Groovy, Kotlin, JavaScript, TypeScript itd. Podporo za druge jezike jezike, kot so npr. Dart, Python, Rust, R, GO in PHP, lahko dodamo s prej omenjenimi vtiˇcniki [13].

Okolje ponuja pomoˇc pri programiranju z dokonˇcanjem (predlaganjem)

Diplomska naloga 17 kode, navigacijo po kodi s skoki do deklaracij razredov in funkcij, refakto-riranjem kode, razhroˇsˇcevanjem itd. Prav tako podpira verzioniranje kode s sistemi, kot so Git, Mercurial, Perforce in SVN, ter integracijo z orodji za grajenje, kot so grunt, bower, gradle in SBT. Razliˇcica Ultimate edition ima vgrajeno razliˇcico DataGripa s katero lahko dostopamo do podatkovnih baz, kot so Microsoft SQL Server, Oracle, PostgreSQL, SQLite in MySQL.

Poleg tega ima vgrajeno ukazno okno, vnaprej definirane bliˇznjice, ki jih lahko uporabnik spremeni, izvajalec testov in pokritost kode, orodje za upravljanje z Docker zabojniki ter aplikacijski streˇznik. Za ohranjanje ˇciste in pregledne kode zaznava dvojnike, veriˇzno dopolnjevanje kode, analizo po-datkovnega toka in nudi hitre popravke v kodi.

3.3.2 VSCodium

VSCodium je zastonjska binarna distribucija [32] Microsoftovega urejevalnika kode VSCode. Izvirna koda VSCode je odprtokodna, vendar izdelek sam po sebi ni, saj vsebuje telemetrijo in sledenje, vendar v funkcionalnosti in razˇsiritvah ni razlike.

Okolje omogoˇca oznaˇcevanje sintakse, samodejno dokonˇcanje kode, ra-zhroˇsˇcevanje in ima vgrajene ukaze za verzioniranje kode s sistemom Git. Ta omogoˇca prikaz razlik v razliˇcicah in dostop do repozitorija kar v programu.

Kot IntelliJ IDEA ima tudi ta na voljo zelo veliko vtiˇcnikov, ki poma-gajo pri urejanju kode, spreminjanju teme, konfiguraciji razhroˇsˇcevalnika in povezovanju dodatnih storitev. Na zaˇcetku je to okolje hitrejˇse od IntelliJa, vendar ima veliko manj moˇznosti in sposobnosti. To se lahko (skoraj) povsem nadoknadi z vtiˇcniki, ˇce uporabik ˇzeli.

3.3.3 DBeaver

DBeaver je zastonjsko in odprtokodno orodje, na voljo na veˇc platformah, za razvijalce in administratorje podatkovnih baz [4]. Za povezovanje na bazo in delovanje potrebuje gonilnik JDBC (Java Database Connectivity), zato deluje

18 Matevˇz Kuˇsar z vsemi tipi relacijskih baz, ki ga imajo na voljo. Prav tako kot ˇstevilna druga orodja uporablja vtiˇcnike za poveˇcanje zmogljivosti in funkcionalnosti.

3.3.4 Docker

Docker je skupek produktov po naˇcelu platforma kot storitev (angl.platform as a service – PaaS), ki nudijo virtualizacijo na ravni operacijskega sistema.

Ti produkti so omejeni na vsebnike (angl. containers), ki so povsem loˇceni drug od drugega in imajo svojo programsko opremo, knjiˇznice, konfiguracijske datoteke ter se pogovarjajo med sabo po natanˇcno doloˇcenih kanalih.

Omogoˇcajo izvajanje programske opreme brez virtualne naprave, kar iz-jemno zmanjˇsa zahtevnost in obremenitev operacijskega sistema na napravi.

Izvaja se lahko v javnem in zasebnem oblaku ali na lokalni napravi.

3.3.5 Postman

Postman je platforma za razvoj, dokumentiranje, uporabo in testiranje API-jev [21]. Z njim lahko poˇsiljamo zahteve po pravilih REST-a, SOAP-a ali GraphQL-a na kateri koli streˇznik, v primeru razvijalcev z njim preverjamo lasten razvoj streˇznika. Omogoˇca avtomatizirane teste, ki jih lahko integrira-mo v CI/CD (Continuous Integration in Continuous Deployment) in s tem prepreˇcimo, da bi objavili kodo, ki bi pokvarila aplikacijo.

Na voljo je kot namizna aplikacija za Windows, Linux in macOS, spletna aplikacija ali razˇsiritev za brskalnik.

Poglavje 4

Analiza aplikacije

V tem poglavju bomo predstavili arhitekturo zaledja in spletne aplikacije ter predstavili in ovrednotili reˇsitev.

4.1 Arhitektura

Pri naˇcrtovanju izdelka smo delovanje razˇclenili na zaledje, ki se deli na podatkovni model in API, ter spletno aplikacijo. To nam omogoˇca, da poe-notimo delovanje v primeru, da dodamo ˇse mobilno aplikacijo.

Delovanje je na preprost naˇcin opisano tako: uporabnik preko raˇcunalnika uporablja aplikacijo, ta poˇsilja zahtevke na API, ki jih sprejme, in na podlagi le-teh iz podatkovne baze izbere primerne podatke. Nato jih vmesnik vrne spletni aplikaciji, ki jih prikaˇze uporabniku.

4.1.1 Zaledje

Podatkovni model

Pri izdelavi izdelka smo uporabljali ogrodje TypeORM, ki nam je na pod-lagi definiranih razredov generiralo entitetno-relacijski (ER) diagram. Ta diagram vidimo na sliki 4.1.

19

20 Matevˇz Kuˇsar Entitete imajo razliˇcne vloge, zato tudi razliˇcne atribute, ki jih bomo na kratko opisali spodaj.

• Vinogradnik - osnovni podatki o uporabniku.

• Posest – kdo je lastnik in kje se nahaja.

• Meritev posesti – tu zabeleˇzimo velikost posesti in ˇcas meritve.

• Trta – vsaka posest ima niˇc ali veˇc trt, ki beleˇzi meritev trte, delo na trti, sorto in grozdje.

• Delo – vkljuˇcuje opis dela, npr. ˇskropljenje, spodbiranje, trgatev in saditev.

• ˇSkropljenje – zelo pomembno delo, ki ima svojo tabelo s podatki o datumu, ˇskropivu, kadenci in koliˇcini ˇskropiva.

• Grozdje – trta nam da koliˇcino grozdja in tip.

• Letina – rodovitnost trte v enem letu.

• Vino – vsako leto pridelamo doloˇceno koliˇcino vina, ki ima svojo raven maceracije, se pretaka in hrani v cisternah.

• Maceracija – ob vsakem merjenju si zapomnimo koliˇcino sladkorja, da-tum in posebnosti.

• Cisterna – vsebuje podatke o vrstah in koliˇcini vina, ki ga hrani.

• Botelka – konˇcni izdelek vinogradniˇskega dela je vino, ki ga lahko pro-damo ali spijemo. To shranimo v tej tabeli s podatki o tipu vina, koliˇcini, datumu izdelave in velikosti botelke.

• Merska enota – uporabnik lahko s pomoˇcjo tega sam izbere, katere merske enote ˇzeli uporabljati v aplikaciji.

22 Matevˇz Kuˇsar }

in primer objekta Posest:

@Entity()

export class Posest extends BaseEntity {

@PrimaryGeneratedColumn()

Entiteti vinogradnik in posest sta povezani z notacijo povezave mnogo proti ena – vsak vinogradnik ima lahko veˇc posesti, vendar vsaka posest pripada zgolj enemu vinogradniku. Oba razreda razˇsirita BaseEntity, ki je objekt ogrodja TypeORM, ki v ozadju ustvari pravilno povezavo za izbrano podatkovno bazo. Vsak objekt potrebuje primarni kljuˇc, ki je v tem primeru nakljuˇcno generiran ob vstavljanju v tabelo.

API

API je namenjen pogovoru spletne aplikacije z zaledjem. V primerjavi z mobilno aplikacijo, kjer je vmesna raven med podatkovno bazo in aplikacijo nujno potrebna, pri spletnih aplikacijah ni obvezna, vendar je zelo velik ko-rak k izboljˇsanju varnosti sistema, zato smo ga, kot primer dobre pko-rakse, uporabili tudi mi.

Pri APIju smo uporabil standardne HTTP-zahtevke, kot so GET, POST, DELETE in PUT. GET se uporablja za pridobitev podatkov z zaledja, POST za poˇsiljanje podatkov v JSON-obliki, DELETE za brisanje doloˇcenih podat-kov na zaledju in PUT za spreminjanje podatpodat-kov ali dodajanje k obstojeˇcim zapisom.

Diplomska naloga 23

• Pridobitev vseh vinogradnikov v bazi:

const getAllVinogradnik = () => { const conn = getConnection();

const repo = conn.getRepository(Vinogradnik);

return repo.find();

}.

• Iskanje vinogradnika po njegovem identifikacijskem kljuˇcu:

const getVinogradnikById = (id: number) => { const conn = getConnection();

const repo = conn.getRepository(Vinogradnik);

return repo.findOne(id);

}.

• Kreiranje novega vinogradnika:

const createNewVinogradnik = () => {

const repo = getRepository(Vinogradnik);

const newVinogradnik = {ime: "Janez Novak"};

return repo.save(newVinogradnik);

}.

• Brisanje vinogradnika:

const deleteVinogradnikById = (id: number) =>{

const conn = getConnection();

const repo = conn.getRepository(Vinogradnik);

return repo.delete(id);

}.

Diplomska naloga 25 SPA

Aplikacija je enostranska, kar pomeni, da uporabnik v resnici upravlja z eno stranjo, vendar se obnaˇsa, kot da vedno naloˇzi novo stran – to vidimo tudi po spreminjanju spletnega naslova URL. Ta pristop je v primerjavi s tradi-cionalno veˇcstransko spletno aplikacijo preprostejˇsi za razvoj in raˇcunalniˇske vire, ki jih potrebuje za nemoteno delovanje. Ker SPA vedno spreminja le en del strani (po navadi se spreminja vsebina, medtem ko zgornja vrstica in stranski meni ostajata enaka), je hitrejˇsa, porabi manj internetne pasovne ˇsirine in nalaga slikovne vire le po potrebi. V Reactu, Vueju in Angularju se primarno razvijajo enostranske aplikacije, zato se tudi drugi pomikajo k uporabi tega.

POVEZANI DOKUMENTI