Ohjelmoinnin sanakirja OSA 2 - Parsittu JSON ja Open Source -sotku

“ Pelkästään laitetaan tuo grafana julkiseksi nettiin ja vielä reverse proxyn taakse. Siihen eteen tuikataan joku authelia lisäksi“
” .. parsitaan ensin JSONia tunti kaupalla, lopuksi työnnetään koko sotku open sourceksi “

Suuren klikkimäärän kerännyt Ohjelmoinnin sanakirja -blogipostaus saa jatkoa. IT-alan termit hämmentävät yhä, siispä tällä kertaa taklataan viisi (5) erilaista ohjelmointi- ja teknologiamaailmaan liittyvää käsitettä selkeiden esimerkkien kera. Enjoy!


BIG DATA

Big data, eli massadata, eli ‘suuret tietomassat’. Big data -termistä on puhuttu ensimmäisen kerran jo 1990-luvun taitteessa, kun termillä viitattiin jatkuvasti lisääntyvään-, monenlaisessa muodossa olevaan-, sekä nopeaa käsittelyä vaativaan datamäärään, jota järjestelmiin alkoi tulvia nopeasti kehittyvän tietotekniikan ansiosta.

Big data ylitti perinteisten datanhallintajärjestelmien kyvyn käsitellä ja tallentaa tietoa. Loistava esimerkki tämän päivän massadatasta, sekä sen hallitsijasta on kaikkien tuntema suoratoistopalvelu Netflix, joka pitää hallussaan monenlaista dataa, sekä kerää sitä jatkuvasti miljoonilta katselijoilta ympäri maailman. Netflixin keräämää dataa ovat mm. käyttäjädata, maadata, katseludata, mieltymysdata, arvosteludata, sekä myös monia muita.

Big dataksi katsotaan kaikki sellainen tieto, joka täyttää 5V tunnuspiirteet. Esimerkiksi Netflixin osalta tunnusmerkistö täyttyisi seuraavasti:

Volume (Määrä): Datamäärä on valtava, asiakkuuksia löytyy miljoonia, ja käyttäjät striimaavat jopa miljardeja tunteja sisältöä kuukausittain.

Velocity (Nopeus): Dataa tuotetaan sekä prosessoidaan nopeasti (jopa reaaliaikaisesti). Käyttäjän lopettaessa edellisen sarjan katselemisen, Netflix osaa suositella heti uutta katseltavaa joka vastaisi mahdollisimman hyvin käyttäjän mieltymyksiin.

Variety (Monimuotoisuus, vaihtelevuus): Data voi olla kuvaa, videoita, tekstiä, ääntä, tai sensoridataa. Netflixin osalta datan monimuotoisuus tulee esimerkiksi tilastoista käyttäjien katselemista sarjoista, sekä käyttäjien arvioinneista ja kommenteista.

Veracity (Totuudenmukaisuus): Datan laadun tulee olla tarkkaa, sillä epätarkat tiedot ovat harhaanjohtavia kuluttajille. Pelkän arvosteludatan lisäksi Netflix hyödyntää kehittyneempiä algoritmejä parantaakseen datan tarkkuutta.

Value (Arvo, lisäarvo): Käyttäjiltä saatu data auttaa ymmärtämään käyttäjien mieltymyksiä, ja vastaamaan heidän tarpeisiinsa paremmin.


AVOIN LÄHDEKOODI

Avoimella lähdekoodilla (eng. Open Source) tarkoitetaan ohjelmistojen kehittämisen ja jakelun mallia, jossa ohjelmiston lähdekoodi, eli ihmisten luettavissa oleva koodi on julkisesti saatavilla. Tämä mahdollistaa sen, että kuka tahansa voi tarkastella, muokata, ja jakaa ohjelmiston koodia eteenpäin eri tarkoituksiin. Avoimen lähdekoodin ohjelmistoihin liittyy toki usein erityisiä lisenssejä, jotka määrittelevät miten koodia saa käyttää, muokata, ja jakaa. Muutamia avoimen lähdekoodin lisenssejä ovat esimerkiksi MIT-lisenssi sekä GPL (General Public License).

Avoimen lähdekoodin vastakohtana voidaan pitää suljettua lähdekoodia, jolloin koodi ei ole julkisessa jaossa, vaan on usein yrityksen omaisuutta. Suljetun lähdekoodin ohjelmistot ovat tyypillisesti myös maksullisia, eikä lähdekoodia saa muokata tai jakaa eteenpäin.

Miksi avoin lähdekoodi on tärkeää? Ensinäkin, avoin lähdekoodi tuo mukanaan merkittäviä hyötyjä niin kehittäjille, yrityksille kuin yhteiskunnallekin. Kun ohjelmiston lähdekoodi on avoimesti saatavilla, kuka tahansa voi tutkia sitä, sekä ymmärtää miten ohjelma oikeastaan toimii. Käyttäjät voivat myös varmistaa, ettei koodiin ole piilotettu haitallisia toimintoja. Myös mahdollisia tietoturvahaavoittuvuuksia voidaan havaita ja korjata nopeammin, koska suuri kehittäjäyhteisö on tarkastamassa koodia.

Esimerkkejä avoimen lähdekoodin ohjelmistoista on tunnettu Linux-käyttöjärjestelmä. Koodin jakelun ansiosta Linuxista on syntynyt mm. Ubuntu-käyttöjärjestelmä, joka perustuu samaan Linux-ytimen koodiin, mutta tarjoaa hieman erilaisia ominaisuuksia ja käyttökokemuksia. Yhtälailla suosittu WordPress CMS-ohjelma hyödyntää avointa lähdekoodia.

Kiinnostaako työ ohjelmoinnin parissa? Osallistu avoimen lähdekoodin ohjelmien kehittämiseen esimerkiksi Githubissa. Innostavinta on aloittaa niiden ohjelmien parissa, joita mahdollisesti käytät, tai joiden toimintaan haluaisit tehdä parannuksia. Tekemäsi koodi näkyy omalla Github-tililläsi potentiaalisille työnantajille!


AUTORISAATIO ja AUTENTIKAATIO

Hyvin samankuuloiset termit kuten autentikaatio (eng. authentication) sekä autorisaatio (eng. authorisation) sekoitetaan toisinaan keskenään, vaikka ne ovat täysin erilliset vaiheet käyttäjän tunnistamiseen ja pääsynhallintaan liittyvissä järjestelmissä.


Termillä autentikaatio tarkoitetaan käyttäjän tunnistamista, ja sillä varmistetaan käyttäjän olevan oikeasti se, joka hän väittää olevansa. Käyttäjä voidaan tunnistaa esimerkiksi käyttäjätunnuksen ja salasanan, kaksivaiheisen tunnistautumisen, tai kolmansien osapuolien kirjautumispalveluiden (esim. Google-tilin) avulla.


Autorisaatiolla puolestaan tarkoitetaan käyttöoikeuksien antamista. Autorisaatio määrittää, mihin resursseihin ja toimintoihin käyttäjällä on pääsy heti onnistuneen kirjautumisen jälkeen. Käyttäjän rooli palvelussa voi olla esim. ylläpitäjä tai vieras, ja tietyillä käyttäjillä on pääsyoikeus tietyille vain tiedostoille sekä resursseille.


PARSINTA, PARSE

Parse-termillä saadaan käyttäjäkunnalta erilaisia vastauksia riippuen siitä, mitä ylipäätään ollaan parsimassa. Koodareilta saat hyvin todennäköisesti varsin jargonimaisen vastauksen, ja loppujen lopuksi olet vielä enemmän hämmentynyt siitä, mitä parsiminen oikeastaan edes on.

Paras tapa ymmärtää parse-termiä on aloittaa jostain hyvin yksinkertaisesta esimerkistä:

Kirjoitetun kielen parsiminen voisi alkaa siitä, mitä osia siinä esiintyy. Mitä sanoja sekä lauseita tekstissä on, mitä vuorostaan verbit, substantiivit sekä adjektiivit ovat, ja mikä sanojen suhde toisiinsa on?

Puhutun kielen parsinnassa voisimme keskittyä äänensävyyn, volyymiin, millä tunnetilalla puhutaan, ja missä kontekstissa puhutaan.


Ohjelmointimaailmassa parsimisessa siis analysoidaan, lajitellaan ja muunnetaan tietoa rakenteellisempaan ja ymmärrettävämpään muotoon. Tietokoneelle voidaan esimerkiksi antaa lista sanoja, jotta se voi parsia ne erottaakseen jokaisen sanan erilleen toisistaan. Jotta voisimme hyödyntää listan sisältämää tietoa ohjelmallisesti, parsimisella merkkijono muunnetaan sellaiseen muotoon, jossa voimme helposti käsitellä ja käyttää merkkijonon eri osia.

Esimerkiksi seuraava merkkijono tulee parsia, jotta tieto saadaan eroteltua käytettävämpään muotoon:

“Krista, 55, Helsinki, Nainen, Suomi”

Määritetään muuttuja data, johon tallennetaan ylläoleva merkkijono

data = "Krista,55,Helsinki,Nainen,Suomi"


Parsitaan merkkijono pilkulla erotettuna

name, age, city, gender, country = data.split(", ")

Tulostetaan lopuksi parsitut tiedot

print("Nimi:", name) print("Ikä:", age) print("Kaupunki:", city) print("Sukupuoli:", gender) print("Maa:", country)


Miltä tieto nyt näyttää

Nimi: Krista
Ikä: 55
Kaupunki: Helsinki
Sukupuoli: Nainen
Maa: Suomi


Parsimista tarvitaan myös silloin, kun käyttäjän antama tekstimuotoinen syöte tulee muuttaa vaikkapa kokonaisluvuksi, jotta sen käyttäminen ohjelmassa olisi mahdollista. Toinen esimerkki on yleisenä tiedonsiirtoformaattina käytetty JSON (Javascript Object Notation), joka on aina rakenteeltaan tekstimuotoista dataa. Parsimalla se voidaan muuttaa ohjelmassa käytettävään tietorakennemuotoon, kuten esimerkiksi taulukoksi (array), olioksi (object), tai sanakirjaksi (dictionary) aina ohjelmointikielestä riippuen.


Olivatko kaikki yllämainitut termit sinulle jo aiemmin tuttuja, vai oliko joku termeistä kenties kokonaan uusi? Kerro kommenteissa, mistä muista ohjelmointimaailman termeistä haluaisit kuulla lisää tulevaisuudessa!

Edellinen
Edellinen

Teknologian trendit: Mitä on odotettavissa vuonna 2025?

Seuraava
Seuraava

Näin ohjaat Gmail-sähköpostit toiseen osoitteeseen