# WEB-OHJELMOINTI -kurssin oppimisblogi // Kimmo Kukkonen ## Viikko 1 ### Luennot luennoilla käytiin läpi kurssin suorittamiseen liittyviä asioita, kuten luentojen sisältöä, kurssin suorittamiseen vaadittavat asiat, kuten tehtävät, oppimisblogi ja portfolion tekeminen. Olen suorittanut aikaisemmin arviolta 70% Full Stack Open kurssia, joten jossain määrin tuttua asiaa varmaan tiedossa. ### Harjoitukset Ensimmäinen harjoitus oli hyvää orientoitumista kurssia varten. ## Viikko 2 ### Luennot Tällä viikolla ei tullut katsottua luentoja. ### Harjoitukset Harjoitusten osalta tehtiin tällä viikolla perusharjoituksia ohjelmointiin liittyen. Huomasin myöhässä että näille menneille viikoille lisättiin harjoituksia, joten palautuksia tuli tehtyä myöhässä. ## Viikko 3 ### Luennot Tällä viikolla ei tullut katsottua luentoja. ### Harjoitukset Tällä viikolla otin kiinni harjoituksissa. Tehtävät oli ihan mielenkiintoisia. Olen jonkin verran opiskellut jo kurssin aihealueita, joten tehtävä oli vielä helpohko. Javascriptin olio -tehtävä oli uutta asiaa. Javascriptin luokat muistuttavat Javan luokkia, millä on tullut tehtyä luokkien toteutuksia aikaisemmin. Javascriptin luokat tiettyjä eroja lukuunottamatta muistutti paljon Javan luokkia. ## Viikko 4 ### Luennot Tällä viikolla ei tullut katsottua luentoja. Lueskelin kuitenkin luentomateriaaleja aika pitkältikin. Niistä oli kyllä hyötyä. Monesti tykkään enemmän tutustua materiaaleihin itsenäisesti. Puhe tuntuu menevän toisesta korvasta sisään ja toisesta ulos, joten keskityn aina kirjallisiin materiaaleihin ja eri teknisten kikkareitten dokumentaatioihin, mitä nyt tulee milloinkin käytettyä. Niin nytkin. ### Harjoitukset #### 4A Tehtävänä oli luoda REST API -sanakirja -tyyppistä toimintoa varten. Olin luonut muutaman yksinkertaisen REST API:n entuudestaan, joten tehtävä ei kuulostanut mahdottomalta. Kävin kertailemassa vanhoja koodejani ja katsoin läpi kurssimateriaalit. Toteutus lähti tästä etenemään ja sain rajapinnan aikaiseksi. Testaamiseen käyttelin postmania, jonka olin asennellut koneelle joskus viime vuonna. "Tietokantana" toimi tällä kertaa tekstitiedosto. Toteutin pari apumetodia, sanakirjan sisällön haun ja tarkistuksen löytyykö sanakirjasta jo haettua sanaa. Koko sisällön haun paketointi tuntui hyödylliseltä, koska sitä tarvitsi useammin kuin kerran koodissa. Lisäsin tarkistuksen sanan entuudestaan löytymisestä, koska tuntui järkevältä, että sanaa ei voi lisätä sanakirjaan useampaan kertaan. #### 4B Tehtävässä piti luoda käyttöliittymä 4A -tehtävässä tehtyyn rajapintaan. Toteutin haku ja lisäys toiminnon sanakirjalle. Aloitin hausta, ja pienten bugien jälkeen homma toimi paremmin. Toteutin haun URL:ssä olevalla parametrilla, joka oli mielestäni paras tällaiseen yksinkertaiseen hakutoimintoon. Sen jälkeen toteutin lisäyksen. Lisättävä sana lähetetään post -pyynnön body:ssä JSON -objektina. Ongelmaksi muodostui JSONin formaatti, josta selvisikin että JSON.stringify -metodi ratkaisi ongelmat. Tämän jälkeen sekä lisäys että haku toimivat hyvin. ## Viikko 5 - 7 ### Luennot katsoin läpi luentomateriaalit ja tutustuin noden mysql -kirjastoon ja kertasin samalla expressiä. Tämän jälkeen pikakertaus SQL:n tekemällä luentokalvojen mukaiset muistinverryttelytehtävät. Proseduret tuli uutena tietona itselle ja vaikuttavat varsin käteviltä. Tehtävissä toteutin kuitenkin CRUDit ihan raakakyselyillä. ### Harjoitus 5 Tässä tehtävässä sain toteutukset tehtyä ihan ok, mutta jäin miettimään milloin tietokantayhteys olisi hyvä sulkea. Ilta oli jo aika myöhä, joten jätin tämän opettelun vielä myöhemmäksi. Aluksi kokeilin avausta ja sulkua jokaisen operaation kohdalla erikseen, mutta en saanut sitä toimivaksi. Päädyin sitten avaamaan yhteyden kerran palvelimen mennessä päälle. Yhteyksien sulku pitää vielä selvitellä. Itse kyselyt piti vähän aikaa harjoitella miten tulisi toteuttaa. Lähinnä missä kohtaa koodia pitää lähettää vastausta pyynnön lähettäjälle. Tämä kuitenkin selvisi ja homma toimi lopulta. Toteutin Gettejä sekä id-haulla ja numerohaulla, sekä getin kaikille numeroille. Muille CRUDeille ihan perusoperaatiot ID:n perusteella. ### Harjoitus 6 Aloitin tekemään fullstack -sovellusta tietokannasta. Tein siitä yksinkertaisen kaksitauluisen tietokannan, josta löytyy urheilija, ja hänen saavutukset toisesta taulusta. Tämä oli nopea operaatio. Backendiä aloitin myös tekemään perus GET -pyynnöillä. jätin kuitenkin backend -puolen vielä vähän kesken, kun aloin suunnittelemaan react -sovellusta frontendiin. Frontendissä otin ehkä liian ison suupalan, kun halusin suunnitella sovelluksen sivupalkkinavigoinnilla. Iso osa ajasta meni sivupalkin opiskeluun eri youtube -kanavilta ja nettioppaista. Routerin opiskelu vei myös paljon aikaa, mutta sain ne lopulta toimimaan. Aika kävi kuitenkin lyhyeksi, ja en ehtinyt toteuttamaan kaikkea mitä halusin sovellukseen. Tällä hetkellä toimii tietojen haku urheilijalle, ja uuden urheilijan lisäys. Lisään vielä ominaisuudet urheilijan poistamiselle, muuttamiselle, ja urheilijan saavutuksille kaikki CRUD -ominaisuudet. Jatkan siis näiden parissa, vaikka palautusaika menee tänään umpeen. ### Harjoitus 7 Portfolion tekoon jäi hävettävän vähän aikaa, ja jälki on sen mukaista. Onneksi sain sentään jotakin palautettua. Jos aikaa jää jouluna, palaan tämän pariin ja laitan sivunavigoinnin kuntoon. Saatan toteuttaa kokonaan Reactilla, koska tuntuu että bootstrap ei nyt oikein avaudu. Portfolion rakennus kurssilla on hyvä idea, mutta en varmaan uskalla näyttää tätä missään työnhakuun liittyvässä tilanteessa. Pitää viilata tämä vielä paremmaksi, jos hakeudun webbikehitysalalle joskus töihin.