Monday, July 1, 2019

Praktika Iakov Kanyuchka 01.07.2019-11.10.2019

01.07.
Olen tutvunud firmaga. Allkirjastasun juhendid. Mulle oli antud koolituse vihikud ja projekt.

Projekt on inglise keeles. Kirjutan tema nagu nii:

Implement restful web application with frontend and backend.

The application logic should be written in a functional style and in front-end should be used Ecmascript6 and other option are available to choose for development. UX and design won't be evaluated by this task, but preferred to use in project Bootstrap.

Programming languages (one of options): Java; Scala; Kotlin.
DataStore (one of options): MongoDB; SQLite: H2: ElasticSearch.
Frameworks (back end options): Spring Framework; J2 EE; Akka; Vertx.lo
Frameworks/Libraries (fron end options): AngularJS; React; Elm.
Project builder tool (one of options): Maven; SBT; Gradle.

In addition, front-end part shoul be packaged with webpack and gulp.

For testing RESTful web service use REST-assured (https://code.google.com/p/rest-assured)
For testing User Interface use SelenlumHQ (http://docs.selenium.org) or Jasmine (http://jasmine.github.io/edge/introduction.html).

Alustan koolitada kõik need prograamid.

02.07.

Pärast väike koolitus tean, et pean instaleerida Back-End-i jaoks: Mongo BD Server (temaga koos tuleb Mongo BD Shell - tema räägib Back-End koodiga CLI-ga).

Java open JDK (juba olemas pärast 2 kursi ülikoolis).

cmder - mulle selline terminal soovitatud, kuna ta töötab hästi.

Front-Endile pean installerida: npm ja yarn.

Pärast õige installerimist ja ühendamisest ja kui mina õigesti kõik avan ja kirjutan käivitamised, siis minu tuleviku äpp avada localhost:8081-s.

Täna alustasin seda töö. Esimene proov teen homme.

03.07.

Kõigi elementide stardimine peab olla oma terminalide aknas. Cmder-s on vaja kasutada kombinatsioon ctrl + t ja enter. See kombinatsioon teeb tavaline terminal ja seal mina alustan järgmine äppi element.

Jooksen Back-end: Kõik järgmised instrumendid kokuvad pärast "mvnw spring-boot:run" kirjutamist  projekti kaustas (pom.xml).

Stardin Mongo BD: Terinalis aadres C:\Program Files\MongoDB\Server\4.0\bin
Mulle vaja: mongo.exe, mongod.exe.

mongo - DB shell. Õigus suhtelda Mongo BD-ga
mongod - service mis stardib Mongo BD

Nüüd kaustas kirjutan terinalis "mongod" see stardib BD. Uues terminali aknas saamas kaustas kirjutan "mongo" ja "show databases". Kui näen missugune järjekord - siis kõik töötab.

Aga, vot - ei tööta... Kuni esmaspäeva mul on ise õppimine.

23.07.

Kirjutasin iga päev siia. Mõtlesin et nupp värskendada, on salvestmine - aga see ei olnud õige. Kõik oli kadunud...

Proviin nüüd tastuda.

Mina juba tegin: Ärikirjeldus, Huvipooled, Ärisõnastik, Mittefunktsionaalsed nõuded, Ärireeglid, Äriinfomudel, BPMN mudel, Kasutuslood, Kasutusmallid, Halva kasutusloo diagramm, Riskianalüüs, Projekti plaan, Oleku diagrammid, Tegevus diagrammid, Koostöödiagrammid, Jargnevus diagrammid

On vaja veel teha Komponent diagrammid, Evitus diagrammid.


Sprintide algus: 5 august.
Sprinti pikkus: 1 nädal
Standup - iga esmaspäev kell 10.00



Pean valmistada ise teoreetiline baas:
Back-end:
  • Java algused;
  • Java Spring Boot2 algused;
  • MongoDB;
  • Maven;
Front-end

  • JavaScript algused;
  • React algused;
  • Redux;
  • React Router;
  • Bootstrap;
  • ESlint;
  • Pretier;
  • Webpack;
  • Yarn;
  • Bebel.
  • Axios;

Nüüd laadin mis on võimalus laadida (Pärast Komponentide ja Evitus diagrammide valmistamiseks teen üks fail ja panen tema veebisse, et Teil on võimalus graafikud vaadata.

Ärikirjeldus.


Sissejuhatus
Äppi idee – maksimaalne tõhusalt rendi aega levitamist ettevõtte konverentsi saali vahel.
Äpp annab võimalus koheselt võta infot vaba/hõivatud rendi aega ükskõik millises  ettevõtte saalis.
Äpp välja töötatud ettevõtte ärijuhtidele.
Pärast võib müüja teistele sarnastele ettevõttele. On võimalus moderniseerida tema restorani või restorani sidele lauale broneerimise järgi.
Saali rendija (klient, kasutaja) võib olla nii era- kui ka äriklient.
Ettevõtte konverents saalide omanik.
Ettevõtte ärijuht firma saali omaniku esindaja, levitab tõhusalt rendi aeg klientide vahel. Võib, näiteks pakkuda teine aeg, või saama aeg, aga suurem saal saama rendi maksuga, juhul kui sobivadega suurusega saal on juba hõivatud vajaliku aega.

Põhiprotsess
Saali tellimine (klient)
1.      Klient helistab firma ärijuhile.
2.      Teatab oma soovist korralda üritus, teatud inimeste arvuga, mis toimub teatud kuupäeval ja kestab nii palju.
3.      Saab ärijuhte vastus
4.      Kinnitab ärijuhti pakkumistega
5.      Saab e-mailiga arvet
6.      Maksab arvet

Saali tellimine (klient)
  1. Klient külastab ettevõtte veebilehte
2.      Täitab tellimiste vormi, kus kirjutab oma soovist korralda üritus, teatud inimeste arvuga, mis toimub teatud kuupäeval ja kestab nii palju.
3.      Saadab ärijuhte vastus
4.      Kinnitab ärijuhti pakkumistega
5.      Saab e-mailiga arvet
6.      Maksab arvet

Ettevõtte konverentsi saalide omanik
1.      Hoiab saalid korras

Ärijuht
1.      Uurib kliendilt telefooniga tema soovitust rentida saal teatud inimeste arvuga, mis toimub teatud kuupäeval ja kestab nii palju.
2.      Avab äpp
3.      Kirjutab andmed
4.      Uurib infot rentidele sellel ajal võimalusi/eba võimalusi sobivatud saal
5.      Kui saal on hõivatud, vaatab äppi abil lähim vaba aeg või võimalus teise saali rentimist
6.      Annab infot kliendile
7.      Pärast kliendi kinnitust broneerib aeg äppis ja saadab arvet kliendile e-mailiga

Ärijuht
  1. Uurib e-mailiga saali rentimise taotlusest teatud inimeste arvuga, mis toimub teatud kuupäeval ja kestab nii palju.
2.      Avab äpp
3.      Kirjutab andmed
4.      Uurib infot rentidele sellel ajal võimalusi/eba võimalusi sobivatud saal
5.      Kui saal on hõivatud, vaatab äppi abil lähim vaba aeg või võimalus teise saali rentimist
6.      Annab infot kliendile telefoniga, mis oli kirjutatud e-mailis
7.      Pärast kliendi kinnitust broneerib aeg äppis ja saadab arvet kliendile e-mailiga

Huvipooled.

Firma omanik - soovib, et nende äri sujuks ja et müüginumbrid suureneksid.
Ärijuht - soovib, et tema saalide rendiajad oleksid kõige hõivatuvamad.
Kõik kliendid - soovivad võimalikult soodsamalt saali rentida ja võimalikult täpsega aega.

Ärisõnastik.
Taustainfo
Firma – konferents Saali omanik.
IS – (infosüsteem) – omaniku IT-süsteem (kõik kokku; koosneb Äppist ja Back-Office-ist.
Äpp – Firma IS osa, sedakaudu osutakse põhiteenust;
Back-OfficeFirma IS osa, tuumirakendus (core), seal töödeltakse infot kas Saal on vaba või hõivatud jne.
Kasutustingimused – dokument, mis määratleb teenuste osutamise tingimused, sh maksetingimused.
Isik – füüsiline isik.
Actors
Tellija – Teenust saav Isik.
ÄrijuhtIsik, kes Broneerib saal ja saadab ettemaksu Arvet.
Põhilised ärimõisted
Saalide variandid – nimekiri kus on: Saalide inimese maksimaalne arv, Saalide suurus ja tema pildid.
Saal – neid Tellija Broneerib.
Broneerimine – üks unikaalne tellimisakt, algatud Tellija.
Standardne majandustegevus
Arve – ettemaksu Arve, milline Tellija peab maksma.
Tasumine – kaasneb iga Arvega.

OSAPOOLSÜNDMUS - ASI

Mittefunktsionaalsed nõuded

GEN_NFR_A – Saali rentimise infosüsteem peab tõrgeteta taluma vähemalt 50 äpi samaaegset käigusolemist.
GEN_NFR_B – Saali rentimise äpi turvalisus peab olema võrdväärne või parem OWASP Mobile Security Project nõuetest [https://www.owasp.org/index.php/OWASP_Mobile_Security_Project#tab=Top_10_Mobile_Risks].
GEN_NFR_C - Teostusel tuleb järgida mobiilseadmete UX tavanõudeid [https://medium.com/blueprint-by-intuit/native-mobile-app-design-overall-principles-and-common-patterns-26edee8ced10]
GEN_NFR_D - Mobiiliaplikatsioon on alla laetav järgmistele operatsioonisüsteemidele: Android ja iOS.
GEN_NFR_E - Mobiiliaplikatsioon peab toetama 1 keelt (inglise).
GEN_NFR_F - Infosüsteemi ülalolekuaeg peab olema tagatud 99% aastas (see tähendab maasoleku aega 3.65 päeva/aastas).
GEN_NFR_G - Kogu infosüsteemi funktsionaalsus ja andmebaasistruktuur peavad olema arusaadavalt dokumenteeritud.

 Ärireeglid (ilma graafukuta)

R01 – Saali Ärijuht peab registreerida oma konto Firma Infosüsteemis.
R02 – Iga Tellimuse täidab üks konkreetse broneeringu Saal ja aeg.
R03 – Ärijuht algab broon.
R04 – Ärijuht annab Arve tellijale.
R05 – Arve tingib Maksmine.

Kasutuslood.


Epic A Saali broneerimine
US-01 Äpi alllalaadimine
Ärijuhi roolis tahan ma endale äpi alla laadida ja oma nutiseadmes käima panna, et ma saaksin edaspidi selle kaudu kiiresti teada millal on võimalus saali kliendile rendita ja kiiresti nende broneerida.
US-02 Äpi olemasolu, kus ja millega
Ärijuhi roolis ma tahaksin, et mul oleks saali renti broneerimise äpp, kus ma saan broneerida saal oma kliendile.
US-03 Ärijuhi registreerimine
Ärijuhi roolis mulle tuleb registreerida, et ma oleksin identifitseeritav.
US-04 Valik saali vahel
Ärijuhina tahan ma näha, mis saal on vaba ja millal.
US-05 Checkpoint
Ärijuhina, kui ma missuguse saali broneerisin, soovin oma broneerimine veel üks kord kontrollida, et mina broneerin õige saal ja aeg.
US-06 Checkout
Ärijuhina, kui ma viga broneerimine tegin, soovin eemalda see broneerimine.

 Kasutusmallid

UC01 – Kasutaja registreerimine
UC02 – Saali aja kontroll
UC03 – Saali aja broneering
UC04 – Broneerimine eemaldamine
UC05 – Kasutaja eemldamine


UC Name: UC01 – kasutaja registreerimine
Scope: Saali rent, administratiivne süsteem (arvuti)
Level: user goals, sub-functions
User Goal:
Teha uus kasutaja, et edaspidi tema võib broneerida saalid.
Primary Actor: administraator
Stakeholders and interests:
Äpi omanik on huvitatud, et tema töötajad võivad omada saali rendi aja täpne infot ja sellega huvitatud ka ärijuhtid.
Preconditions:
UC01-PRE01 – Kasutajal on piisavalt uus ja kompatiibel nutitelefon (või tahvel). Kompatiiblite OS versioonide list.
UC01-PRE02 – Uusim versioon Saali rent äpist on saadaval vastava platvormi (Google, Apple) poes (omakorda eeldab tehniliste nõuete täitmist).
Success Guarantee (postcondition):
Äpp on paigaldatud nutiseadmesse ja käivitub.
Main Success Scenario:
1. Administraator on administratiivse äppi osas.
2. Administraator vajutab nuppu “Lisa uus kasutaja”.
3. Administraator kirjutab uue kasutaja andmed (Ees ja perenimi, amet, Kasutaja nimi ja salasõna).
4. Administraator valib õigsede variant (kasutaja).
5. Administraator vajutab nuppu “Lisa”.

UC Name: UC02 – Saali aja kontroll
Scope: Ärijuht, kasutaja alamsüsteem (äpp)
Level: user goals, subfunctions
User Goal:
Kontrollida kas millesed saalid, millesel ajal on vaba või hõivatud.
Primary Actor: ärijuht
Stakeholders and interests:
Äpi omanik on huvitatud, et tema töötajad võivad omada saali rendi aja täpne infot ja sellega huvitatud ka ärijuhtid.
Preconditions:
UC02-PRE01 - Peab olema läbitud UC01 – kasutaja registreerimine, mis ühtlasi sisaldab ka installeerimist nutiseadmesse
Success Guarantee (postcondition):
Äpi loogika on mõeldud 24/7 käitamiseks, ehk siis otsene väljumiskriteerium puudub.
Main Success Scenario:
1. Äpp kontrollib kasutaja registreeritust. Kui kasutaja pole Saali rent registreeritud, siis kõik muud menüüd peale „Authoriseeri” on hallid ja neid ei saa pruukida.
2. Ärijuht valib saal.
3. Ärijuht valib päev.
4. Ärijuht valib aeg.
5. Äpp annab infot: kui saal on vaba, siis aeg on roheline, kui hõivatud – punane ja kirjutab kõige lähem vaba aeg.

UC Name: UC03 – Saali aja broneering
Scope: Ärijuht, kasutaja alamsüsteempp)
Level: user goals, subfunctions
User Goal:
Broneerida saal ajal ja päeval mis on vaja kliendile.
Primary Actor: Ärijuht
Stakeholders and interests:
Äpi omanik on huvitatud, et tema töötajad võivad omada saali rendi aja täpne infot ja sellega huvitatud ka ärijuhtid.
Preconditions:
UC02-PRE01 - Peab olema läbitud UC01 – kasutaja registreerimine, mis ühtlasi sisaldab ka installeerimist nutiseadmesse
UC03-PRE01 -Ärijuht peab juba valida õige saal, päev ja aeg.
Success Guarantee (postcondition):
Äpi loogika on mõeldud 24/7 käitamiseks, ehk siis otsene väljumiskriteerium puudub.

Main Success Scenario:
1. Ärijuht vajutab nuppu “Broneerida”.
2. Saal broneeritud.
Extensions:
2a. Saamal ajal teine ärijuht kooskõlastas teistega klientega saama saal, saamal päeval ja ajal ja vajutasid nuppu “Broneerida” natuke kiiremini kui esimene ärijuht.
2b. Ärijuht valib teine saal/päev/aeg.

UC Name: UC04 – Broneerimine eemaldamine
Scope: Ärijuht, kasutaja alamsüsteem (äpp)
Level: user goals, subfunctions
User Goal:
Eemalda broneerimise aeg.
Primary Actor: Ärijuht
Stakeholders and interests:
Äpi omanik on huvitatud, et tema töötajad võivad omada saali rendi aja täpne infot ja sellega huvitatud ka ärijuhtid.
Preconditions:
UC02-PRE01 - Peab olema läbitud UC01 – kasutaja registreerimine, mis ühtlasi sisaldab ka installeerimist nutiseadmesse.
UC04-PRE01 – Selline broneerimise aeg peab olla broneeritud saama kasutaja.
Success Guarantee (postcondition):
Äpi loogika on mõeldud 24/7 käitamiseks, ehk siis otsene väljumiskriteerium puudub.
Main Success Scenario:
1. Äpp kontrollib kasutaja registreeritust. Kui kasutaja pole Saali rent registreeritud, siis kõik muud menüüd peale „Authoriseeri” on hallid ja neid ei saa pruukida.
2. Ärijuht valib saal.
3. Ärijuht valib päev.
4. Ärijuht valib aeg.
5. Äpp annab infot: saal on hõivatud ja kirjutab kõige lähem vaba aeg.
6. Ärijuht vajutab nuppu “Eemalda”.
7. Paiknemises aknas ärijuht vajutab nuppu “Ok”.
Extensions:
7a. Ärijuht vajutab nuppu “Cancel”.
Alternative flow:
Primary Actor: Administraator
Main Success Scenario:
1. Administraator avab administrative äppi osa.
2. Administraator valib saali kataloog.
3. Administraator valib päev ja aeg järjekorras.
4. Administraator vajutab „Eemalda“ nuppu.
5. Paiknemises aknas administraator vajutab nuppu „Ok“.
Extensions:
5a. Administraator vajutab nuppu “Cancel”.

UC Name: UC05 – Kasutaja eemaldamine
Scope: Saali rent, administratiivne süsteem (arvuti)
Level: user goals, sub-functions
User Goal:
Eemaldada kasutaja, kes pole ei tööta omaniku firmast, et edaspidi temal ei ole võimalus broneerida saalid.
Primary Actor: administraator
Stakeholders and interests:
Äpi omanik on huvitatud, et temale töötajadel keegi ei saa pahandada äppi abil, et nad võivad omada saali rendi aja täpne infot ja sellega huvitatud ka ärijuhtid.
Success Guarantee (postcondition):
Töötaja, kes nüüd firmas ei tööta ei saa kasutada äpp.
Main Success Scenario:
1. Administraator on administratiivse äppi osas.
2. Administraator vajutab “Kasutajad” kataloog.
3. Administraator valib järjekorrast kasutaja.
4. Administraator vajutab nuppu “Eemalda”.
5. Paiknemises aknas administrator vajutab nuppu “Ok”.
Extensions:
5b. Administraator vajutab nuppu “Cancel”.


Halva kasutuslooga meie mõtleme - ei ole vaja kuna see on nii väike app, variantid millal ründaja võib midagi halvasti teha on nii väike kogus (ainult võib, kui tema võtab oma sissepääs süsteemisse, broneerida virtuaalselt saalid, ilma võimalusi kasutada neid reaal elus).

Risk analüüs
ID
Riski kirjeldus
Tõenäosus
Mõju
Riski tase
Tegevusplaan
R00
Metarisk – riskid ei ole ammendavalt kaardistatud
n/a
n/a
Kõrge
Riskida kaardistamisega tuleks jätkuvalt tegelda.
R01
Töötajate lahkumine ettevõttest
Keskmine
Keskmine
keskmine
Pakkuda paremad töö- ja palgatingimusi töötajatele
R02
Firma IT dokumentatsioon ja korraldatus osutuvad intsidenti korral ebapiisavaks
Kõrge
Keskmine
Kõrge
Kvaliteedisüsteemi algatamine sarnaselt põhitegevusele
R03
Huvipoolte konfliktid
Keskmine
Kõrge
Kõrge
Nõuete ümberdisainimine
R04
Ettevõtte varade mittesihtotstarbeline kasutus (mainekahju ja muud ohud)
Keskmine
Madal
Keskmine
Kordade ja regulatsioonide kehtestamine (ennetav)
R05
Turvanõuete eiramine töötaja poolt
Keskmine
Madal
Keskmine
Töötajakoolitused
R06
Halvad juhtimisotsused
Keskmine
Keskmine
Keskmine
Otsutusprotsessis kõige osapoolte ära kuulmine

Projekti plaan.


Projektiplaan
Ülesande kirjeldus Kokku Algatamine Detailimine Konstrueerimine  Siire
Konstrueerimine 1 Konstrueerimine 2
Projekti planeerimine 10 9 1 0 0 0
Meeskonna kokkupanek 1 1 0 0 0 0
Ajakava koostamine 1 1 0 0 0 0
Riskianalüüs 8 7 1
Nõuded 36 18 9 0 0 9
Ärikirjeldus 4 2 1 1
Ärisõnastik 4 2 1 1
Ärireeglid 4 2 1 1
Mittefunktsionaalsed nõuded 4 2 1 1
UC01 - Kasutaja registreerimine 4 2 1 1
UC02 - Saali aja kontroll 4 2 1 1
UC03 - Saali aja broneerimine 4 2 1 1
UC04 - Broneerimine eemaldamine 4 2 1 1
UC05 - Kasutaja eemaldamine 4 2 1 1
Disain 76 25 37 0 0 14
Äriinfo mudel 11 7 3 1
IT andmemudel 15 6 8 1
Dimensioonilised mudelid 9 3 5 1
Üldine protsessi mudel 9 3 5 1
Komponentidiagramm 16 3 8 5
Evitusdiagramm 16 3 8 5
Implementatsioon 309 0 4 120 175 10
Arenduskeskonna ettevalmistamine 20 4 6 10
UC01 - Kasutaja registreerimine 45 40 5
UC02 - Saali aja kontroll 35 30 5
UC03 - Saali aja broneerimine 80 25 55
UC04 - Broneerimine eemaldamine 60 10 50
UC05 - Kasutaja eemaldamine 69 9 60
Testimine 96 0 8 23 33 32
Testkeskonna ettevalmistamine 10 4 6
Testplaani koostamine 8 4 3 1
Turvatest 10 3 6 1
UC01 - Kasutaja registreerimine 10 5 5
UC02 - Saali aja kontroll 10 6 4
UC03 - Saali aja broneerimine 10 4 6
UC04 - Broneerimine eemaldamine 10 6 4
UC05 - Kasutaja eemaldamine 9 5 4
Interatsioonitest 19 12 7
Paigaldus 33 0 0 12 6 15
Paigaldusplaani koostamine 11 6 5
Testkeskkonnas 11 6 5
Live-keskkonnas 11 6 5
Keskkonna ettevalmistus 8 8
Tarkvara paigaldamine 8 8
Koolitus 32 0 0 0 0 32
Kasutusjuhendi koostamine 12 12
Koolitus 20 20
Kokku 600 52 59 155 214 120


Oleku diagramm, Tegevus diagramm, Koostöödiagramm, Jargnevus diagramm, Komponent diagramm, Evitus diagramm - tulevad veebi failiga mina loodan et täna.

Siin asub minu 3 nädala töö ilma koolituseta.

https://drive.google.com/open?id=1k5DTlPmUkRDAWzQ0O2qC3Umuh2a5NEiP


05.08.2019

Esimene sprint põhitema on Back Endi tööks ettevalmistamine. 
Mis mina esimesel sprindil pean tegema:
1)Tööristade valimine
2)Maven seadistamine
3)POM.xml maveni jaoks kirjutamine ja tööristade omavaheline seadistamine
4)Tööristade omavaheline tööde katsetamine 
5)Git ja git tööristade valmistane. Git repo tegemine
6)Nädala lõppus kokkuvõtte ja gitile commitide, pushimine

Sprinti tähtsam töörist on Maven mis kasutame projekti ehitamiseks ja teiseks projekti elutsükli osadeks. Projekti sees on kasutusel erinevad tööristrad back-endis, ja selleks et nad töötaksid omavahel Mavenis peaks olema igale tööristale dependencie olema.
Kõik need omavahelised seadised lähevad failile POM.xml, mis on maven kõige tähtsam fail. 
Tööristad mis kasutame back-enidis:
1)Spring Boot 2
2)MongoDB

Saame maven projekt teha kasutades erinevad protsessid. Üks variant oleks kohe projekt genereerida.
Spring Booti jaoks saame genereerida kood kas Intellij'ist või kasutades link:

Spring Initializr - https://start.spring.io/

Mina valisin genereerimine linkiga start spring portalist.
Maveni jaoks valisin sellised tööristad:
1)Spring Data MongoDB
2)Spring Web Starter
3)Spring Test
4)Lombok

Pärast genereerimist saime selline struktuur:
1).mvn - maveni kaust mis maven iseseisvalt enda töös kasutab
2)src - kus on siis main ja test kaustad. Põhikaust kuhu tulevikus lähev kood
3).gitignore - git file, mis pärast hakkan kasutama
4)mvnw ja mvnw.cmd - maven scriptid
3)pom.xml - põhi maveni file mis hakkan edasi arendama

Kuna mavenis on olemas maven wrapper mina kasutan wrapper. Maven wrapper annab võimalus töötada projektiga kohe isegi kui maven on installimata. Kõige tähtsam vahe minule praegu on selline, et käsutad mavenis ja maven wrapperis on natukene teised. Näiteks mvnw -help


Kuna pom.xml on juba genereeritud kõikidega tööristage mis minule on kohe vajalikud, siis mina ei hakka praegu rohkem lisama. Mulle näidati ka teised projektid kus oli kasutatud mittu-kihiline struktuur. 
Nii siis iga package jaoks oli oma pom.xml ja lisaks sellele oli ka root pom.xml mis panni kõik packagid kokku. Oli näidatud minule ka kuidas on võimalik lisada tööristad mavenile. Üks variantidest kasutada selline portal nagu mvnrepository.com. Seal on vajalik alguses valide mis töörist minule on vajalik pärast seda valida töörista version ja siis valida "maven", pärast seda lihtsalt koperin portalist enda pom.xml failile selle töörista dependency.

Selleks et katsetada et spring-boot töötab peaksin alguses teha projekti root kaustal
"mvnw clean install" ( kasutasin Windows Command Promt ) , ja siis tegin "mvnw spring-boot:run". Pärast seda avasin chrome browser kus sisestades "localhost:8080" sain default tühi leht spring-bootist. See tähendas et spring-boot toimus. Pärast seda tegin git init, commit ja lõppus kui localne git oli ühendatud github reposirotiumiga sain teha git push -u origin master. Nii esimene nädala kokkuvõttes sain 2 commiti: init ja lisandid.


Teine Sprint.


Teeme MVC - Model View Controller FE ja DB vahel struktuur:
1)Kontroller - MainController.java
2)Service layer - ConferenceRepository.java
3)Model ( 3 entity + dbseeder ) - Conference.java, ConferenceRoom.java, Participant.java, DbSeeder.java (fail mis teeb puhas andmed katsetamiseks).

Ühendame spring-boot2 MongoDB.

Mis oli tehtud:

Kasutasin MVC - Model, View, Controller tehnika.

Esimest luuaksin 3 package:
1)Entity - siin asuvad kõik "kõige lihtsamad" ühikud BD - olemused
2)Presistence - keskmine osa View kontrollerite ja Entity (model) vahel

3)web - siin asuvad kõik kontrollerid

Entity folderis mina luuaksin:
1)Conference - entity konferets. Kõik konferentsid ehitatakse sellega "šablooniga"
2)ConferenceRoom - entity toad. Kõik toad ehitatakse sellega "šablooniga"

3)Participant - osaleja. Kõik osaleja ehitatakse sellega "šablooniga".

Lisaks lisasin seal fail DbSeeder tema on vaja andmebaaside täitmiseks. Tema on ajutine, et töö vahel andmebaasis on midagi testiiseks. Pärast kutsutan see fail.

Luuaksin fail Persistence folderis:
Standarnte interfasi kirjutamine. Tema võtab enda Konferentse millega ühendasid Participant, ConferenceRoom.

Luuksin fail web folderis:
Fail Kontroller. Kontrollerite töö ühendatud Http request, responce. REST, url-ga

Meie röögime serveriga. Front-end saadab request (küsimus) serverisse et võta mingit resultaat. Pärast seda server saadab reponse (vastus) tagasi Front-endisse.

Kõige viimane tegemine - fail application.properties - kirjutasin set-ups andmebaasi töötamiks. Port, andmebaaside nimetus mongoDB-sse - ConferenceDb, host jätsin - localhost. 


Kõik minu töö on githubis.

Kolmas Sprint.


Viimane Back-end nädal.

Teenused: debugging ja Back-end teenused. Õpin kasutada Postman (tema abil teen requestid AB ja
pean võta õiged vastused serverist, pärast kontrollin mis toimub mongoDB-s), õpin töötada Chrome
Devtools-ga. Kontrollin kõik kontrollerid, sellega postman-i abil teen kõik REST küsimused
Back-Endisse.

Mis viga oli eelmises kommitis kaks annotatsioons (NoArgsConstructor ja AllArgsConstructor) ei töötanud nagu peavad. Lombook väga õrn instrument. Ta oli tehtud seeleks et, vähendada boiler plate code kasutamist. Ühe sõnadega et ei kirjuta puhas konstruktor ja täis konstruktor mina kasutasin lombok. Osaliselt annotatsioonid mina hoiaksin temaga, näiteks @Data - annab võimalus ei kirjuta geters, seters. Alguses mina tahaksin kasutada swagger nüüd ei taha, kuna mul on vähe kontrollerid ja ei ole vaja kasutada
veel üks instrument mis ei ole vaja. Mina paigaldasin postman. See on instrument mille abil mina saadan
küsimused tomcat serverisse mis on ühendatud spring-bootisse. Ka serveris on MongoDB andmebaas.

Nüüd on vaja REST. Kasutasin kindlad küsimused mis käivad kinldadega kontrolleridesse, mis algavad kindel funktsionaal, mis mõjutab andmebaasile. Testisin nagu nii küik kontrollerid.

Selleks et küik töötab, käivitan spring-boot projekti root-es komandi kasutamiks mvnw spring-boot:run

Saamas terminalis kontrollin kas spring-boot käivitas.

Avan Mongo DB compass  - MongoDB GUI. Et hästi vaadata mis toimub BD-s kasutasin MongoDB GUI
Aga kui on vaja anda mingid korraldused on vaja kasutada MongoDB shell (c:\Program Files\MongoDB\Server\4.0\bin\mongo)
Shell-is kasutasin järgmised korraldused:
show dbs - näitab kõik AB lokaalses Mongo-s
use ConferenceDb - algab kasutada ainult AB nimetusega ConferenceDb
show collections - näitab kollektsioon Mongo-st.
db.Conferences.find().pretty() - annab kõik andmed kollektsioonist.

Postmanis kõiga tähtsamad elementid (MainController.java kasutamiseks) on:
1)GET - valin missugune meetod saada HTTP küsimusega serverisse.
2)URL - kirjutasin kõigile konferentsile localhost:8080/api/conferences
3)Body - nõitasin üks konferents kolmaga kasutajaga (DbSeeder)

See oli kuidas mina kontrollisin getAll kontroller. Kõik tesed mina kontrollisin:
1)getConference: localhost:8080/api/conferences/5d6040cd6a3fa32e54ecee81 - ID andis postman
2)createConference: postmani abil kasutasin järgmised instrumeentid:
-valin meetod POST
-kirjutasin URL - localhost:8080/api/conferences/create
-avan Body
-Seal kirjutasin andmed millesed POST-iga tulevad Back-endisse ja pärast AB-sse
-Valin format raw, JSON(application/json)
-Nägin et postman ise kirjutas URL-sse vajalised parametrid
- SEND.
3)updateConference:
Kasutasin saamad tegevused mis oli eelmises osas aga nüüd:
-meetod POST -> PUT
-url: localhost:8080/api/conferences/5d6040cd6a3fa32e54ecee81

-nagu oli createConference koos küsimusega mina saadan küsimusi-body. Seal kirjutasin andmed mis tulevad AB-sse vana andmese asemel.
-kontrollisin need
-vaatan need MongoDB Shell ja MongoDB compass

4)deleteConference:
Postman-s kasutan meetod DELETE
URL
localhost:8080/api/conferences/5d6040cd6a3fa32e54ecee81
kõik. Serverisse oli saadetud küsimus Back-End otsib andmed AB-s ja kutsutab need.

Neljas Sprint

Kirjutada Back-End README 

Valida Webpack buileri intrumentide valik

Ettevalmistada ja seadmetada üles Webpack builder, saamal ajal ülevaadata is onBabel, Webpack, Yarn, Prettier, ESlint.

Kirjutada ja üles seadmetada kõik config failid, package.json jne.

Peased ristvarad: 1) cmder - mugav terminal inlisega git bash 2) webpack - project builder koodi osa oli kirjutatud temaga 3) yarn - täiendab webpack 4) täiend ristvara: prettierrc, eslint 5) babel - ristvara mis on vaja et genereerida ES6 -> ES5 JavaScript mis töötab kõigis brauseriga. 6) React, Redux, React Router - ristvarad millega kirjutatud Front-Endi kood. Koodi formaat JSX 7) Axios - middleware - risvara mille abis front röögib back-endiga.


Et alustada cmder peaksin väljalülitada üks Windows funktsioon:

Virus and threat protection settings. -> Real time protection.

Peaksin ka instaleerida tudengi versioon Intellij Ultimate TTU Uni-ID kasutamisega. See oli selleks et mul on võimalus töötada seal Front-Endiga IDE Intellij kasutamisega.

Instaleerisin ka npm - node package manager, yarn. Npm on vaja et instaleerida kõik raamatukogud

npm install

Pärast instaleerisin WebPack - saama asi nagu builder aga Front-Endisse.

yarn add webpack
yarn run build
yarn run dev-server

Lisasin sellel nädalal Front-Endi koodi kõige suuremaks osa. Reakt - Front-Endi alus. Pärast kasutasin Redux nagu stor-manager. Store - see on Front-Endi level sellel ajal. Selleks et kasutaja võiks töötaja mitte ainult ühes URL-is brauseris, aga omada erinevad URL-d erinevadele veebilehele kasutasin React Router.

Folderide struktuur:
1) Reakt - components, app.js
2) Redux - actions, reducers, store
3) Axios - axios
4) React Router - routers

Failid:
1) package.json - siin kirjutatakse kõik tööristad Fron-Endisse. Webpack kasutab selline fail nagu tööristade järjekord.
2) .babelrc - instrumentide babel seaded
3) webpack.config.js - siin asuvad kõik WebPack seaded.
4) yarn.lock - fail kus asub sellise prjekti versiooni instrumentide järjekord. See tähendab et, kui yarn.lock ei muuda, siis package.json ei muuda ka.

Ka package.json-s nüüd asub peafunktsioonide järjekods. Siin, näiteks kirjutatud mis tähendab yarn run dev-server

Viies Sprint

Peaplaan - teha et Front-End ja Back-End töötavad õigesti koos.

Debugging
Kirjutada Readme (Front ja Back-End).

Viies ja kuues nädal.

Kahjuks viies sprinti tarneaeg natuke liitub. Aga see oli väga täpne õpetus.

Viie nädala alguses mina kontrollisin kuidas Front-end paikneb veebis ja ilma näidata lehekülje standartne disain tame paistab Error leht.

Minu praktika kuraator kiresti nägib kus oli viga, aga kuna see oli väga oluline fail mis ei olnud tema otsustas, et parem kui mina raiskan aega, aga otsin sellina viga ise.

Mis mina tegin:

1) Kontrollisin kogu fron-endi kood, peaesmärk käivitada kogu äpp;
2) Läbivaatasin kogu projekte struktuur, kõige faili ja kogu instrumentide loogika ka oli kontrollitud;
3) Lõpuks mina otsisin kus viga oli: ei olnud kõige täptsam Front-endi fail: index.html

Selline fail on vaja selleks, et ta peab käivitada bundle.js
Oma järjekorrast bundle.js - kompeleeritud fail Front-endi instrumentidega. Seepärast, fail index.html toob ise kõige baasiline HTML struktuur ja lisas <script src="/bundle.js"></script>

Kõik teised bagid mina ei parandasin, kuna need ei olnud peaesmärk.

Seitsme nädala plaanid.

1) Vaadata reaalelus, kuidas on nähtud Debugging protsess. Sellise protsessi peaesmärk korraldada Front-Endi funktsionaal. See on vaja et kõike Front-Endi funktsionaal annab õigesti kõiged muutusid Back-Endisse.

2) Kui aeg on, siis proovida vaadata CSS ja SCSS. Plus ülevaadata miks kuraator pakkusid kasutada Bootstrap ja ei kasuta React. Ja lõpuks vaadata kuidas default bootstrap võib natuke "parandada" CSS-ga (Cascade Style Sheets - koodi mis vastutab veebi visuaalse osade).

Peaesmärk: maksimaalselt Front-Endi tegema, et on võimalus alustada järgmisele äppi rakendusele osale.

Viimased nädalad (resultaatid).

Mis resultaatis töötab õigesti:
1) Back-End täiesti kontrollitud ja kõige tema funktsionaal töötab õigesti
2) Visuaalne Front-End täiesti kontrollitud, töötab - movk-data laadib kõik tehtud Back-End

Get all, get by id, create jne töötab.

Kui vaatame REST api - on olemas neli tavalised funktsioonid, mis kompileeritatakse esimesekt Back-Endis ja pärast tuuakse Back-Endisse. CRUD - Create, Read, Update, Delete.

Mis kahjuks tegemata. Oli lõpetamata CSS - tänapäeva lõpuks visuaalse kujunduseks kasutatakse Reactstrap, Bootstrap. Need kaks riistad on CSS - Cascade Style Sheets (stiilide taabel) raamatukogud. Selleks nuppud on sinised ja nähtud nagu nii.

Missugused riistad kasutatakse Front-Endi parandamiseks:
1) Chrome Dev tools - suure osas - console:
Shift + Ctrl + i avab chrome dev tools. 
2) Redux dev tools - esimesest mina laadin extension chrome-sse, mis näetakse nagu töörist chrome dev tools-s. 

3) Intellij Ultimate student edition - Debugger 
Avamisega faili package.json näeme äppi alustamisede variaantid:
Valin debug režiim.
Ja nüüd koodi kohtas kus on pantud break point
Näidatakse andmed äppist missugused on olemas äppis sellel ajal.

Näiteks, kõik konferetsid, kasutajad jne, missugused sellel ajal on olemas sellel äppi punktis.

4) Äppi visuaalse osa kontrollimis ja paranduses kasutasin chrome dev-tools ka. Aga kasutasin komponeentide selektor chrome dev tools-st:

Jah!

Väga vabandage! Mina mõtlesin et mina andsin alguses äppi GitHubi aadress.

https://github.com/ikanyuch/conferenceapp.git

Nüüd annan.

Kokkuleppe.


•             Mis üllatas?
Ülatas väga see osa, et Internetis nii palju infot, aga kui ei ole kogemus ja aega tema kasutamist ei ole võimalik. On küik õigesti ja lihtsalt kirjutatud, teen nagu oli kirjutatud, aga ei tööta. Vaatan veel üks kord, teen saama asjad - ei tööta. Lõpuks, kuna soovitaja internetis on juba professionaal, tema ei kirjuta väikesed osad, millised tema mõttes on arusaadav kõigile. Ei arusaadav!!!!
Ülatas veel üks asi - kui kirjutan midagi foorumisse naiste personaažiga - väga kiire saadan lahtine vastus pildiga - ja kõik arusaadav. Kui teha saama meeste personaažiga - maksimum mis saadavad - lingid officiaalsele veeilehele ja plus infot et ma on loll!!

•             Mida teed täna teisiti kui alguses?
Ma tahan hoida minu oskused mis ma võtsin praktikast. Aga tahan tulla tagasi projeteerimise töödesse, kuna seal on suurem palk mulle tänapäevas (on juba tööleping) aga nüüd ma võin kodida Tecla Struktures (saama koodi kui Java). Ma tahan lõpeda ülikool ja pärast proovida tulla hea koodide koolitusele. Pärast saatmist normaalsed oskused proovida ise programeerijana normaalses kuupalkas. Või mina igal nädalal vaatan tööpakkumised ja kui mul tuleb õõnetus - saada projektijuhina.
Alustada minu IT tööelu proggrameerijana-internina ei taha. Mul on väike laps - liiga väike kuupalkad kahjuks. Ja praktika ettevõttes kahjuks ei tule veel suur projektid et neid on võimulus võta mulle projektijuhi tööse (aga kui on võimalus pärast võtavad).

•             Mis olid kõige väärtuslikumad (õpetlikumad) eksimused/probleemid?
Programeerimine, oskus otsida lähendused internetis. Infot vajaliku rakendust ja mis nad teevad.

•             Millised kogenenumate meeskonnaliikmete pädevused/oskused teevad (heas mõttes) kadedaks? Milliseid teadmisi-oskusi soovid ennekõike enda puhul edasi arendada?
See probleem mina nägin millal algasid esimesed rakenduse ained ülikoolis. Mul on väga-väga raske arusaadata koodi loogika. Mul on raske arusaadata kuidas õigesti kompileerida koodi lahendused. Aga palju minu kaasõpilased saadsin aru need asjad nagu nad teevad seda eluala. Ja minu nägin et nad mõtlevad teiseks, räägivad teiseks nende loogika on teine. Mulle meeldivad oma resultaatid aga ma pean vahetada oma pea.
Vot need asjad (heas mõttes) mind kadedaks!

•             Mille poolest selline roll/töölaud/meeskond/organisatsioon Sulle sobivad, mis on pigem väljakutsuvaks osutunud?
Need asjad mina juba vastasin üleval. Mulle on väga raske koodida. Raske oli ilma koosolekuta teisest osast. Ilma süidamit kuhugi. Ainult arvuti ja internet. Kahjuks lõpuks - see veel ei ole mina. Aga proovin muuta ise.

•             Milline meeskonnaliige Sa arvad, et Sa oled? Mis on Sinu tugevused?
Mina on projektijuht. Ma saan aru kuidas asjad võivad töötada. Ma on kommunikatiivne ja tean hästi kuidas teha kokkulepped. Ma saan aru rakendaja keeled (inimesed) ja võin tõlkida mis nemad tahavad õelda klienditele ja tagasi. Ja mulle meeldib rääkida inimestega.

•             Kuhu edasi?
See vastus ka oli!!! Projekteeris. Tekla struture koodimis. Täna päeval ma on objektijuht peaehitamise ettevõttes aga see on ainult nimetus. Real elus mina objekit olen hästi kui 20 minutid nädalas. Joonised, koosolekud, teiste objekti vaatamine ja abi, jne. Ma tahan proovida võta projektijuhi koht. Õhtus, ui on aeg - natuke koodin või lugen. Ootan millal lõppen ülikool, siis on aeg professionaalse koolituse tulla ja seal võta praktikad ja infot kus võta oma tasede ülesanded, suurendada koodeerimise kogemus ja alusta IT töö normaalsest tasest, kui ei võta selles ajas projektijuhi töökoht.

•             Kui kaugel oled lõputööst? Kas praeguse töölauaga saaks seda ühildada ning kas oled selles osas mingeid samme teinud? Tööandjaga/võimaliku juhendajaga rääkinud? 
Ei mõtlesin veel sellest. Õigesti - ei tea. Mul on vaja veel lõpeda Hulgad teoorija aine (väga keeruline mulle), Filosoofia aine (ei teadnud et seal on vaja suurepärane Eesti keele oskus emakeelne tasemel, et võta paalid millised annavad mulle võimalus saada kõige halvasti hindamise - raiskan 300 sõna jaoks minimuum nädal iga õhtuti tõlgemist ja juba kaks korda oli minu teksid kutsatud. Ei tea veel mis teha) ja Inglise keel - temaga ei ole probleemi aga ka võtab aega.

Ma tulen tagasi diploomi tööde küsimust pärast praktika kaitsmist ja need kolm ained lõpetamist.