neljapäev, 25. aprill 2019

Minu JustOn



Tere kõigile!

Minu esimene sissekanna siia blogisse. Ei hakka lubama, et ka viimane.

Kirjutan siin eelkõige oma praktikakogemusest firmas JustOn ning mitte olmest ja vabal ajal läbitud seiklustest. Viimastest on teised juba raporteerinud. Kui mõni lugeja veidral põhjusel veel Kristjani postitust bratwurstimuuseumi kohta pole lugenud, siis tee endale teene ja hakka kohe lugema. Loe mitu korda.

Kuna täna on minu praktikaperioodi eelviimane päev ja kuigi palju sisulist tööd enam ei toimu, siis võin sellise veidi tagasivaatava postituse kirjutada. Mida tegema pidin, mida teha kavatsesin ja mida tegelikult tegin. Ja mida minuga tehti.

Image result for juston

Esiteks põgusalt ettevõttest. JustOn on 2010. aastal alguse saanud SalesForce platvormil töötav pilvepõhine B2B SaaS ettevõte, mis hõlbustab ja automatiseerib arvete koostamist ning haldamist. Nende kliendid on SalesForce'i kasutavad suuremad ja väiksemad erinäolised firmad üle kogu maailma. Neid firmasid ühendab see, et kõik nad soovivad arvetega tegelemisele võimalikult vähe aega kulutada ja selle asemel millegi sisulisemaga tegeleda.

JustOnis töötab kokku ca 20 inimest. Arendajaid nendest oli praktikaperioodi alguses neli, lõpus kolm. Üks otsustas vahepeal, et tahab midagi muud teha. Ehk siis pigem selline väike ettevõte. Selle vastu mul ei ole küll midagi - näeb protsesse ehk pisut lähemalt kui mõnes korporatsioonis oleks näinud. Niipalju kui olen aru saanud, siis enamik IT-ettevõtteid Jenas ongi pigem väiksed või keskmise suurusega. Aga neid on selle-eest palju ja tundub, et selle olukorraga ollakse rahul. Vähemalt JustOnis ei tekkinud tunnet, et tahetakse hullult kiiresti hambad ristis unicorniks saada. Pigem tundus olevat rõhk rahulikul aga stabiilsel kasvul.

Nagu juba mainitud, siis JustOni arendajad ise loovad tarkvara SalesForce platvormile ja see on selline võrdlemisi eraldiseisev süsteem, millel programmeerimiseks kasutatakse APEX keelt. APEX meenutab natuke Javat - strongly typed OOP keel. Mina seda siiski õppima ei asunud. Kuna JustOn põrgatab mõtteid veidi kaugemas tulevikus SalesForce'st sõltumatuks saada, siis kompavad nad selleks tasahilju maad - uurivad, mis on võimalik ja millise ajakuluga.
Mind rakendatigi just sellel eesmärgil. Minu praktikaülesanne oli luua prototüüp eraldiseisvast teenusest, mis looks HTML koodi põhjal PDF faili.

Firmas oli mõnda aega tagasi juba olnud üks teine praktikant, kes oli selle ülesandega tegelenud ja jõudnud järeldusele, et kõige mõistlikum vahend PDF-genereerimiseks on Puppeteer - Node'i teek, mille abil saab progremmaatiliselt kontrollida Google Chrome'i veebilehitsejat. Kõik lugejad on ilmselt Chrome'i kasutanud. Selles on võimalus printida veebilehti või neid ka PDF-na salvestada. Seda võimalust mina ära kasutama pidingi, JavaScripti abil.

Esialgne nõu oli kirjutada Node's selline REST API, millele saab saata HTML koodi ja mis vastab selle HTML'i põhjal koostatud PDF dokumendiga. See tähendas API serveri loomist ja vastava endpointi defineerimist. Kuna Puppeteer jookseb Node'i runtime's, siis tundus igati loogiline ka ülejäänud rakendus selles kirjutada. Kuigi mul Node'ga varasemalt kokkupuudet suures osas ei olnud, siis JavaScript, programmeerimiskeel, mida Node's kasutatakse, oli juba kohati koduseks muutumas. Tänu sellele sain suhteliselt kiiresti ka Node's maast lahti ja tiivad laiali.

Image result for asynchronous meme
Node's on mõnus kirjutatada asünkroonset JavaScripti

Selleks, et kiiresti vajaminev server üles seada, kasutasin Node'i veebiraamistikku Express. Et serveripoolse JavaScripti põhitõdedest aru saada kulus küll mõni päev, aga peale seda mõistsin, kui kergeks Express kogu protsessi teeb. Vaesed veebiarendajad, kes pidid kunagi ennemuistsel aal ilma kõigi nende moodsate tööriistadeta serveritarkvara kirjutama. Olen õnnelik, et olen elus aastal 2019. PDF-teenuse prototüübi v0.1 oli selline, mis töötas ainult minu arvutis ja suutis kohaliku HTML faili tagasi kohalikku failisüsteemi PDF'na salvestada. Kusagilt peab ju alustama.

Praktika kolmandal päeval andis mu juhendaja Alex mulle kiire miniloengu teemal HTTP päringud ja vastused. See ei olnud tegelikult kuigi mahukas ja aus olles rääkis ta väga vähe sellist, millest ma üldse kuulnud ei oleks olnud, aga ta suutis kogu vajaliku info väga hästi kokku siduda ja lihtsasti hoomatavaks muuta. Tundsin selgelt, kuidas hea juhendaja suudab õppimisprotsessi oluliselt kiirendada - tänapäeval on kogu mõeldav info ju internetis olemas, aga selleks, et seda infot efektiivselt hallata ja leida, võib üksinda kuluda kasutult palju aega.

API ja HTTP päringute testimiseks õppisin kasutama Postmani, mis ongi just sellisteks toiminguteks mõeldud.
Edasiminek API arenduses: kui saata sellele POST request, mille sisu on HTML kood, tagastab API PDF faili, mille sisu ühtib päringu HTML-ga. Lahe, mõtlesin ma. Olen suure töö ära teinud, mõtlesin ma. Tegelikult aga suur töö alles algas.

Image result for asynchronous meme
Kui saad aru, et stream ja buffer on sõnad, millel on tähendus.

Kuna esialgsed nõuded olid sellega seoses täidetud ja aega ei olnud liiga palju kulunud, siis anti mulle uued vihjed, kuhu suunas võiksin arendusega liikuda.

Esiteks asusin oma koodi testima. JavaScripti testimisteeke on mitmeid. Peale võimaluste uurimist otsustasin kasutada Jesti, sest selle veebileht nägi lahe välja.

Kirjutasin mõned funktsionaalsed ja integratsioonitestid, et veenduda mu koodi töötamises ja eesmärgipärasuses. Lisaks õppisin ka teste kirjutama. Koolis sai küll sedagi tehtud, aga vähe. Ja lisaks, eks need testid olid pigem formaalsused, sest tegu on siiski prototüübiga ja koodi, mis peaks ja saaks testida, seal kuigi palju ei olnud.

Image result for javascript testing meme
Testing is important but working application is importanter

Peale seda esitleti mulle järgmist nõuet. Kui siiani genereeris Puppeteer PDF'i harilikust HTML dokumendist, siis tegelikult võiks see toimuda natuke teisel põhimõttel. Nimelt võiks HTML tekkida mõne template engine'i abil. Ehk siis minu teenus saaks sisendiks mõne malli ja andmed, mida mallile lisada. Nende kahe põhjal koostataks HTML ja sealt edasi siis juba tuntud rada pidi PDF. Mallidega töötamise keeli on palju ja erinevaid, aga kõigil neil on suhteliselt sarnased võimalused ja tööpõhimõtted. Mina pidin nendest ühe, mida oma prototüübi juures kasutama, valima. Testisin põgusalt kahte erinevat templatating engine't: Handlebars ja Liquid. Handlebarsi poole kallutas mind selle populaarsus ja sellest tulenevalt hea dokumentasioon. Liquidit mainis mulle mu juhendaja. See on algselt Shopify platvormi jaoks loodud Rubyl põhinev keel, millega on mugav Shopify keskkonnas poode ja muud haldamist vajavat hallata. Sellest on siiski loodud ka Node'ga ühilduv JavaScripti versioon Liquid.js. Lähemal uurimisel ja nende kahe võrdlemisel selgus, et Liquid toetas teatud vajalikke filtreid kuupäevade kuvamiseks, mille Handlebarsis oleks pidanud ise kirjutama. Ratast pole mõtet leiutada ning seega asusin tööle selle kallal, et Liquid sobivad andmed õiges kohas õigel moel esitaks.

Töötamine Liquidi ja mallidega oli üle ootuste lihtne ja sain toimiva lahenduse valmis üsna kiiresti. Kindlasti oli seal palju erijuhte, millega ei arvestanud ja mis päriselt toimiva teenuse puhul võiksid tekitada probleeme ja pudelikaelu. Samas rõhutas minu juhendaja korduvalt, et tegu on prototüübiga ja liigselt detailidele keskenduda pole mõtet. Nõustusin sellega ja lähtusin, nagu ka muidu oma elus, 80/20 reeglist.


Järgmine nõue oli see, et PDF arve peal oleks kuvatud leheküljenumbrid vormis "Lehekülg 1 / 5". Ehk siis igalt lehelt peaks saama lugeda nii seda, mitmes hetkel käesolev leht on ja lisaks seda, mitu lehte on kogu arves kokku. Ja seda kõike erinäoliste stiilidega - erinevad fondid, kirjasuurused, võimalikud asukohad leheküljel jms. See kujunes üheks suurimaks (aga ka põnevamaks väljakutseks) kogu praktika jooksul. Väike ja näiliselt lihtne probleem, kuid, nagu lõpuks selgus, väga raske elegantselt lahendamiseks. Selleks, et hakata aru saama, kust leheküljenumbrid lehtedele saavad, pidin lugema päris suure koguse materjale CSS paged media ja print CSS teemadel. Kui CSS-i kasutatakse tavaliselt veebilehtede kujundamiseks, siis selles on eraldi reeglid juhtudeks, kui mingit dokumenti välja prinditakse. Mina selliste atribuutidega varem kokku ei olnud puutunud ja uut ning huvitavat oli rohkelt. Paraku selgus, et kui varem oli võimalik üsna lihtsasti kuvada CSS abil ka kogu dokumendi lehtede arvu, siis enam see võimalik ei ole. Seega selle probleemi parimaks lahenduseks jäi Puppeteeri sisseehitatud võimalus leheküljed enne PDF-ks teisendamist nummerdada. See aga tähendas seda, et leheküljenumbrid saavad olla ainult dokumendi päises või jaluses, mitte aga sisu keskel, nagu teatud arvete puhul võib soovitud olla. Kõik probleemid ei saagi alati täiuslikku lahendust ja sellises olukorras on tähtis osata minna lasta.

Edasi minnes visati mu rajale järgmine tõke. Pidin uurima, kas HTML-i, millest saab PDF, on võimalik lisada nö manustatud pilte ja fonte. See tähendaks vähem võrgutaotlusi ja seega ehk kiiremat andmetöötlust. Harilikult on piltide ja fontide lähtekood kusagil kaugemas serveris, mida HTML dokument siis vajadusel tülitab ja palub andmed endale saata, et neid lehe kuvamisel kasutada. See kõik võtab aega. Manustatud ressursside korral on andmed teatud alust kasutades HTML-i juba sisse kodeeritud ja neid ei pea kusagilt väljaspoolt otsima või küsima. Peale veidikest katsetamist tundus see lahendus päris hästi toimivat, kuigi HTML-failid/mallid muutusid üsna pikaks ja tegid arvuti üsna kuumaks.

Allolevas videos on näha üks fondifail base-64 kodeeringus osana ühest HTML failist.



Järgmisena integreerisin Puppeteeri ja Liquidi mallid, niimoodi, et kogu arvutamine tehtaks ära nö ühekorraga, ühes jadas. Selle käigus kirjutasin koodi ka natuke ümber, et vigade jälgmist lihtsamaks ja täpsemaks muuta. Alex andis sealjuures häid vihjeid, kuidas seda parimal viisil teha.

Kuna selleks hetkeks olid suuresti kõik funktsionaalsed nõuded täidetud, siis jätkasin koodi paiskamisega (deployment) serverisse, kus seda saaksid ka teised testida ja/või kasutada. Mulle soovitati kasutada selleks Heroku platvormi. Enne veel kui oma koodi "üles sain lükata", pidin selle kapseldama Dockeri konteinerisse. Selline on tänapäevane viis koodi internetis jagada - garanteeritud on sõltumatus keskonnast, kuhu kood on majutatud. Kuna ma ei olnud varem Dockerit kasutanud, siis pidin enne kasutamist üsna suures mahus ennast harima, aga peale ennast põhiideedest läbi närimist läks kõik üsna sujuvalt. Ja enne kui isegi aru sain, elas minu loodud PDF-teenus Heroku pilves, valmis vastu võtma päringuid mallide ja andmetega ja tagasi saatma PDF dokumente.

Image result for docker meme
Sellised olukorrad peaks Docker välistama

Kuna mul oli veel pisut aega üle, siis palus Alex mul uurida võimalust genereeritavatele arvetele vajadusel QR kood lisada. See muutub Šveitsis järgmisest aastast kohustuslikuks, seega on mõistlik sellega arvestada. Arvel olev QR-kood peab endas sisaldama infot vajaliku makse kohta: saaja, kontonumber, kuupäev, metadata jms. Otsisin Node'i mooduleid, mis võimaldaksid QR-koodi loomist ja leidsin meeltpainutavalt loova nimega mooduli qrcode. Kui qrcode'i abil QR-kood loodud, tuli see lihtsalt mallis sobivasse kohta paigutada, kasutades jällegi manustatud pildiandmeid. Lihtne.



Sellega seoses jõuamegi nüüd käesolevasse hetke, mil kirjutan blogipostitust tehtust. Oli meeldiv. Nukid sellele, kes kogu ülalseisva tekstiseina läbi jõudis lugeda, kahekordsed nukid sellele, kes seda ühe jutiga tegi. Vabandust, kui kõik või osa tekstist segaseks jäi. Küsimuste ja kommentaaride jaoks on siin Bloggeris ka vist mingi koht, seda julgustan kasutama.

Kokkuvõtteks praktika kohta. Loomulikult õppisin palju tehnilisi oskusi ja uusi teadmisi, aga neid on võimalik ka omal käel omandada, lihtsalt aega kulub ilmselt rohkem, kui pole kelleltki targemalt küsida. Minu arvates hoopis tähtsam kogu protsessi juures oli võimalus näha ja teatud määral osaleda tarkvarafirma igapäevatöös, suhelda tarkade inimestega, küsida (tihti veidi sinisilmseid) küsimusi (tihti ebaoluliste) asjade kohta. Igal hommikul kell 9:30 kohtus kogu meeskond püstijalakoosolekul, kus kõik jagasid, mida nad eile saavutasid ja mida täna kavatsevad korda saata. Tänu sellele tekkis mul mingi hägune ettekujutus, kuidas ja mis põhjustel JustOni erinevad osakonnad omavahel infot vahetavad ja koos töötavad. Firma arendusmeeskond oli äärmiselt ühtehoidev ja kõik arendajad olid nutikad ning sõbralikud inimesed, kellelt oli palju õppida. Keerulisemaid probleeme lahendati alati koos ja üksteise tegemiste vastu tunti huvi. Usun, et see on ainus mõeldav viis head tööd teha ja tarkvara luua. Olen väga tänulik, et sattusin niivõrd lahedasse firmasse praktikale.

Aitäh veelkord ja hüvasti
Gabriel

teisipäev, 23. aprill 2019

blogipostitus


Esmalt sooviksin alustada sellest, et kui tahate lugeda millestki erakordsest, siis tasub üles leida mu eelmine postitus, kus tehakse juttu Bratwurstist ning käesolev jätta kus see ja teine. Vastasel juhul aga head lugemist.
Lisamärkusena tuleb ära mainida, et kuigi graafik on ütlemata tihe, siis see postitus sündis tänu sellele, et alati särav Katja võimaldas meile uued töölauad. Sellised uhked, mis nupuvajutusest oma kõrgust muudavad, mitte mingid tavalised neli-jalga-ja-plaat-liikumatud lauad. Igatahes nende paigaldamise ajaks tuli parasjagu käesolev töö ootele panna ja asendustegevus leida.

Järjekorralt neljas töönädal möödus juba saabuvate munapühade tähe all. Üksteise järgi läksid puhkusele Thomas, Daniel, Andreas ja ilmselt veel paljud teisedki. Varsti tekkis tunne, et oleme ainukesed rumalad, kes veel kontoris passivad.
ehe tõestus sellest, et munadepühad on Saksamaal väga oluline püha
Kätte jõudsid pikad pühad - neli päeva jutti nagu kohalikud meile rääkisid. Reedel otsustasime vahmiiliga Jena kõrval olevaid mägesid avastama minna. Eesmärgiks oli näha kogu Jenat ja loomulikult ka it-paradiisi kõrgelt ülevalt pilvepiirilt. Nagu selgus, siis on tegu väga salakavalate mägedega ning selleks, et avaneks vaade Jena paradiisile, tuli üksjagu vaeva näha. Kokku sai taldu kulutatud vast ehk mitmekümne versta jagu.
kiire paus teel tippu
vaade Jenale kaljunukilt
kes tähelepanelikult vaatab, leiab pildilt Diva-e



Mägedega on juba kord nii, et tuleb tagasi alla ka ronida
Järgmisel päeval läksime kaasa elama kohalikule tippklubile, staaridest kubisevale FC Carl Zeiss Jena esindusmeeskonnale. Ja nagu eeldada võis, ei jätnud vutimehed kaugeid külalisi Eestist ning ka ülejäänuid 5573 kaasaelajat külmaks, vaid pakkusid erilise spektaakli, mille käigus taoti külla sõitnud vastasmeeskonna värav ilma naljata otsast otsani palle täis.
kodumeeskond kolla-sinises mänguvormis



Õhtul otsustasime näha, milline näeb Jena linn välja olukorras, kui päike on juba loojunud. Nagu ikka, siis Stadtrodast Jenasse jõudmine on omaette üritus, mis on nende nädalatega juba üsnagi tavapäraseks kujunenud. Õhtu ise möödus peamiselt ühes keldris.
ajaviiteks kohalike kickeri ässade selgasid prügiseks tegemas
Pühapäev läks rahulikult, administreerivate tegevuste saatel, mida autor ei pea piisavalt olulisteks, et siinkohal lahti kirjutama hakata. 
Ja kätte jõudsigi esmaspäev. "Jälle tööle?!" mõtlevad kindlasti meie sajad ja tuhanded eestikeelsed lugejad. Aga ei! Munapühade esmaspäev on siin riigis samuti puhkepäev. Miks? Vot ei oskagi täpselt öelda, aga kui nii juba on, siis tuleb kohalikke kombeid kindlasti austada. Taaskord võtsime jalad selga ning suunaks Hermsdorfi ja andsime päkkadele valu. Teel käisime läbi mitmeid vanu veskihooneid ning niisama looduskauneid kohti.
Vanas veskis tegutseva Holzländeri õlletehase töötav vesiratas
Et see postitus liiga lahja ei saaks, siis lisaksin siia lõppu ühe ärarääkimata meeldiva pildi Bratwurstidest.
kümme ahjukuuma Bratwursti oma täies hiilguses


Carl ja Kristjan - neljas nädal Diva-e's

Kätte jõudnud järjekordne esmaspäev ning meie tiimiga liitus Daniel, kes oli samuti front-end arendaja. Daniel hakkas meie tööd üle vaatama ja andis tagasisidet. Meie töö oli korralik ja hea, kuid ta pidi struktuuris natuke muudatusi tegema, selleks kulus tal terve esmaspäev. Sel ajal meie proovisime jwt pluginat tööle saada ilma erroriteta. Õpetusi selle kohta polnud, mis tegi olukorra eriti raskeks. Arustasime ja proovisime erinevaid variante, kuid kahjuks üksi neist ei töödanud. Teisipäeval toimus koos meie juhendaja ja kahe teise arendajaga põhjalik koosolek, kus rääkisime projekti struktuurist ning vaatasime üle senised tulemused. Juhendaja näitas back-end poolt, mida ta oli arendanud ning seletas, kuidas miski toimib, tema lahendus oli tehtud angulariga, sest tema ei olnud Vue'd õppinud. Kuid see ei ole suur probleem, sest angular ja vue on väga sarnased.
Projekti koosolek

Kolmapäeval asusime uuesti jwt'ga tegelema, otsisime, kas kasutaja andmeid saab kuvada ka keycloaki sisseehitatud võimalustega. Keycloaki ametlikus dokumentatsioonis seda kirjas ei olnud, kuid leitsime vastuse Stack Overflow'ist, kus oli väga hästi see teema ära seletatud. Proovisime seda ka oma projektiga ning saime asja tööle. Kui kasutaja oli sisse loginud, kuvati tema nimi ja email. Testisime seda ka uue registreeritud kasutaja peal ja see tõepoolest toimis. Neljapäeval lisasime kõik viimased muudatused gitlabi ning ühendasime kaks branchi. Danieli vue projekt oli SPA (single page application), kuid meie oma MPA (multi page application) seega seal tekkisid väikesed erinevused ning kõik ei töötanud nii nagu peab. Hakkasime otsima lahendust, kuidas asi tööle saada SPA konfiguratsioonis, kuid siis oligi järksu neljapäev läbi ja algasid pühad. See, mis toimus pühadel, saab lugeda Kristjani järgmisest postitusest.

esmaspäev, 22. aprill 2019

Merliti- Ülesanne on valmis


Pärast kahte nädalat VueJS õppimist olen jõudnud soovitud tulemuseni.

Vue JS õppimisel pidin endale selgeks tegema ka kuidas kasutada NPM (Node Package Manager) ja CLI (Command Line Client e. käsurea liidest).

Nagu eelmises postituses mainitud siis Vue on JavaScripti raamistik
Vue.js (ka Vue) on arvutiteaduses vaba JavaScripti raamistik, millega luuakse kasutajaliideseid.[1] Integreerimine projektidesse, mis kasutavad teisi JavaScripti teeke, on lihtsustatud Vuega, sest see on disainitud olema järk-järgult kasutuselevõetav. Vue toimib ka veebirakenduse raamistikuna, võimaldades luua arenenud üheleheküljelisi rakendusi.“(Vikipeedia)


Kõige keerulisem oli selgeks saada kuidas Vue-d lihtsalt ja loogiliselt oma olemas oleva projektiga siduda, nii et kõik komponendid töötaksid. Teoorias peaks see lihtne olema, aga kuna enamus õpetusi olid pigem uue Vue projekti loomisest ja selle kaudu veebirakenduse või lehe arendamisest, siis oli see minule suur katsumus ja hea õppekoht.

Kuna Vue kasutab komponentide süsteemi ja iga komponent on omaette fail, siis pidin tõsiselt mõtlema, kuidas oma kausta struktuur luua ja kuidas mingid komponendid omavahel suhtlevad ja mis failid omavahel ühenduvad.
Minu ülesanne oli kuvada andmebaasis olev info (mis paikneb serveris) veebilehele, siis nende omavaheline sidumine oli kõige keerulisem ja aeganõudvam protsess, et sobiv lahendus leida.
Kui aga back-end ja front-end omavahel ühendatud, ja  PHP sai aru, mis infot ma talle üritan saata, tuli ainult vastavad MySQL käsud mõelda.
Adminipaneeli idee seisnes selles, et lehe administraator saaks minu eelnevalt loodud tracking-tooli’ga andmebaasi salvestatud andmeid kuvada tabelikujul ja vajadusel ka sorteerida.
Näiteks, kui administraator tahab vaadata, kus lehel on kõige kauem üks kasutaja olnud või soovib ta, et andmed oleks järjestatud kõige varajasema sissekande järgi.
Selleks tuli veebilehele luua iga käsukohta nupp, mis saadaks info serverile (JavaScript), ning server teaks milline MySQL-i päring (PHP) veebilehele tagasi saata.


 (Piltidel olev andmebaas ja funktsionaalsus on eelkõige loodud testimiseks)
Kõige pealt peab adminipaneeli sisse logima, et kuvatav info oleks kätte saadav ainult lehe administraatorile.
Kuvatakse andmebaas kogu kogutud infoga
Vajutades nupule "Show earliest" kuvatakse kõige varasemad sissekanded esimesena.

Kuvatakse kõik sissekanded, mis näitavad kuhu on inimesed läinud kontakt lehel olles. 



esmaspäev, 15. aprill 2019

Carl ja Kristjan - kolmas nädal Diva-e's

Eelmine nädal jäi pooleli väga põneva koha pealt - keycloak ei töödanud. Olime otsustanud tegeleda keycloaki login, registreerimise ja kasutajavaate disainimisega. Proovisime teha need võimalikult samasugused nagu diesel medaille koduleht. Alguses ei saanud kuidagi vedama aga hiljem hakkas asi edenema ja saime disainid valmis. Salvestasime need eraldi kausta ja panime gitlabi ülesse. Tol hetkel me seda veel katsetada ei saanud, kuna keycloak ja vue ei töödanud veel koos. Kätte jõudnud teisipäev ning hakkasime keycloakiga jälle pusima, mitu tundi hiljem proovisime Vue CLI'd seadistada manuaalseslt ning see tuli meile kasuks, sest erroreid oli kõvasti vähem. Seejärel oli koosolek Andreasega ning see võttis nii kaua aega, et tööpäev saigi läbi. Kolmapäeva hommikul me alustasime kohe keycloakiga ning suutsime saavutada staatuse, kus meid eemaldas keycloaki tööleminekust üks error. Googeldasime ja otsisime sellel lahendust, kuid asjatult. Siis tuli mõte proovida Vue CLI installida nii, et me routes ei kaasa sellesse. Ja asi toimis- me saime lõpuks keycloaki ja vue omavahel tööle. Peale lõunat tegime natuke disaini bootstrapiga ja ühendasime ennist tehtud keycloaki login, logout disaini vuega. Tunne hea, sai tööpäev läbi.
Vue.js esileht

Kätte oli jõudnud neljapäev, hommikul testisime, kas kõik asjad ikka töötavad - jah, kõik asjad töötasid siiani. Peale lõunat läksime Carl Zeissi tehasesse, millele kulus pea kolm tundi. Peale seda hakkasime uurima jwt (jason web token) kohta ning kuidas sealt kasutajanime ja muid andmeid kätte saada. Jõudsime natuke lugeda ja videoid selle kohta vaadata, kui tööpäev läbi sai.
Meie tehtud keycloaki kujundus

 Reedel jätkasime jwt õppimist ning leidsime vue plugina selle jaoks. Lisasime plugina oma vue projekti ning tuli välja, et seda kasutada on vaja ka jqueryt, kuid siis hakkas pihta grill-party. Diva-e korraldab selliseid asju paar korda aastas ja just siis see juhtus. Grilliti liha ja bratwursti. Grillpidu läbi, naasesime töölaudade taha ning hakkasime jqueryt lisama. Enamus õpetusi olid arusaamatud ja ei töödanud, kuid leidsime ühe väga hea video, mille järgi tehes, saime jquery lisatud. Testisime, kas ka see töötab ning tõepoolest, see tomis ning kõik eeldused olid täidetud jwt vue plugina kasutamiseks. Sellega saigi reede ja ka töönädal läbi.

Carl ja Kristjan - teine nädal Diva-e's

Teine nädal algas rahulikult, läksime kooli, kus tutvustati sealset õppekäiku/meetoteid, mis erinesid Eesti omast päris palju. Peale seda tegime ringkäigu koolis ja saime proovida ka koolilõunat. Kool nähtud, läksime edasi grillpeole, mis algas ringmängudega, millest me Kristjaniga väga kaua osa võtta kahjuks ei saanud, kuna läksime ratast vaatama. (PS! Saime ratta). Kätte jõudis tesipäev, saime HTML komponendid valmis ja hakkasime keycloaki lisamam. Nagu arvata võis, see ei töödanud, kuid me ei andnud alla ja pusisime terve pika päeva sellega. Peale mitut rasket tundi intensiivset mõtlemist ja proovimist saime keycloaki tööle.

Keycloaki esialgne login


Sai sisse logida, välja logida ja ka registreerida. Olime väga uhked oma saavutuste üle ja sellega ka tööpäev sai läbi. Kolmapäeval hakkasime uurima, kuidas keycloaki globaalselt tööle saada, kuid siis tuli Andreas (meie juhendaja) ja andis meile teada, et selle pärast meie muretsema ei pea. Samuti tegi ta meile kasutajad gitlabi (mis on tasuline) ja liitis meid projektiga. Kuna me olime varem githubi kasutanud, ei olnud gitlab meile võõras ja suutsime kiiresti selle selgeks saada. Peale pärastlõunat lisas Andreas gitlabi mõned ülesanded ja ka kirjeldused, mida peaks järgmisena tegema, sellega sai ka kolmapäev läbi. Neljapäeval alustasime Vue CLI kasutamist, proovisime, kuidas see töötab ning mis võimalusi see pakub. Me valisime tavalise konfiguratsiooni, mis tundus mõistlik, peale seda hakkasime keycloaki lisama. See erines väga palju sellest, mida me olime ennist HTML failiga teinud. Keycloak viskas pidevalt erroreid, nii kui mõne olid korda saanud, ilmus uus. Selline nägi välja meie neljapäev - erroreid eemaldades. Kätte oli jõudnud reede, tunne oli väga hea, keycloak ei töödanud. Me ei andnud alla ja proovisime aina edasi, tegime uusi CLI projekte, kuid asjatult, reede lõpuks ei saanud me keycloaki vuega tööle ning otsustasime esmaspäeval värske peaga kõik läbi mõelda ja asi tööle saada. Mis juhtus esmaspäeval ja kas me saime keycloaki tööle, seda saate lugeda juba järgmisest postitusest.

Mahlzeit

Korraks tekkis nende kolme nädala jooksul esimene väike hingetõmbepaus, et anda põgus ülevaade senistest tegemistest.
Maandusime märtsi lõpus Berliinis ning selle asemel, et käed rüpes passima jääda, otsustasime koheselt osaleda velskrite meeleavaldusel apteegireformi vastu.
drogistide meeleavaldus Brandenburgi värava taga


Edasi viis meid tee läbi Jena Stadtrodasse, meie uude koju. Õigemini küll Stadtroda raudteejaama, koduni jäi sel hetkel veel mitu head versta mägironimist.
Stadtroda Hauptbahnhof


Järgmisel päeval jõudsime IT-paradiisi, kus asuvad praktikaettevõtted ning meid jagati "täiesti juhuslikult" erinevatesse ettevõtetesse.
Felsenkelleri trammipeatuse ootepaviljoni Diva-e reklaam


Kohtusime Andreasega Diva-e'st, kes tutvustas meile ettevõtet ning meid ettevõttele, lisaks näitas meile ka järgneva kuu aja ülesandeid, mis hõlmavad endas olulist kliendiprojekti, mille detailide avalikustamise võimalikkuse kohta puudub antud hetkel kindel teadmine.

Vahepeal külastasime kollektiivselt ka oma ala tunnustamata ekspertide poolt kõrgelt hinnatud kaupluskeskuse Kaufland Jena filiaali.
sõnad on üleliigsed


Nädalavahetusel rentisime auto ja võtsime ette tee Leipzigisse ning samuti osalesime ka Jena linnatuuril, mis tipnes botaanikaaia külastusega. Alljärgnevatel piltidel on muuhulgas näha nii eelmainitud auto kui ka erinevad vaated Leipzigi ja Jena linnadest.




Jena botaanikaaia ilmselt palmipuu

üksik valge sammas suure kiriku kõrval Leipzigis


Uus nädal algas vastuvõtuga kohalikus kutsekoolis, kus kohtasime ka rootslasi, kellest nähtavasti vähemalt osad olid siia tulnud sooritama praktikat parkuuris. Kohtumise keskmeks tõusis aga Miša, kelle tegelik identiteet on teatud põhjustel endiselt küsimärgi all.

Ülejäänud nädal möödus töiselt, Vue ja Keycloaki saatel.

Nädalavahetusel otsustasime uurida Stadtroda ümbrust ning just seda me ka oma uutel jalgratastel tegime.
vaade meie Stadtroda kodukandile Tissa poolt


Lisaks käisime vaatamas ka kuulsat Saalfelder Feengrottenit ning mekkisime väidetavalt väga kasulikku roostevett.
stalaktiidid
koopalaest langev tammejuur koos veenirega




Töönädal algas sealt, kus eelmine pooleli jäi, ainult selle erinevusega, et vahepeal tuli meil üle vaadata Jena kõige olulisem ettevõte Carl Zeiss.
tsirkuleeriva rakuvaba DNA ekstraheerimine Carl Zeissi mikroskoopide abil


Äsja lõppenud nädalavahetusel õnnestus meil külastada mitmeid olulisi Saksamaa linnu, sealhulgas ka Erfurti, kus püüdsime tabada doktor Schmidti, kuid edutult.
Ringreis kulmineerus tõelise pärli - Esimese Bratwursti Muuseumiga!
Bratwursti otseliin

Bratwurstimaailmavärav

Bratwurstikahur platvormil

plekkmees võidukalt Bratwurstil ratsutamas

Bratwursti monument austamaks Bratwursti

läbikäik keelatud

originaalne Tüüringi Bratwurst, kõikse parem


Kuigi viimasena kirjeldatut on selle praktika jooksul ilmselt võimatu ületada, jääme siiski kuulmiseni.