Harjoitustyö | TTY-Piiri

Harjoitustyö

Harjoitustyö on pakollinen osa Ohjelmallisen sisällönhallinnan suorittamista. Näin siksi, että sisällön käsittelyn automatisoinnin ja verkkopalveluiden toiminnallisuuksien kehittäminen edellyttää välttämättä käytännön harjoittelua.

Harjoitustyön lopputuloksena syntyy koodiportfolio, joka kokoaa yhteen harjoitustyöhön toteutetut toiminnot ja niiden tiiviin dokumentaation (ks. koodiportfolion sivupohja (käytä selaimen Tallenna nimellä -toimintoa, jotta tiedoston merkistökoodaus säilyy ja näet ääkköset oikein)). 

Keväällä 2015 voit käyttää harjoitustyön tekemiseen seuraavia vaihtoehtoisia teknologioita:

Nostamalla vaihtoehtoisia toteutusteknologioita esiin halutaan sekä herättää keskustelua ohjelmallisen sisällönhallinnan toteutusteknologioiden valinnasta että tarjota Ohjelmallista sisällönhallintaa suorittavilla PHP-osaajille uusia haasteita myös harjoitustyön tekemisessä.

Huomaathan, että harjoitustyö on tarkoitus tehdä vapaavalintaisella Web-sovelluskehyksellä tai sisällönhallintajärjestelmällä. Hypermedian ohjelmoinnista poiketen harjoitustyön pohjaksi voi nyt ottaa myös olemassa olevan sisällönhallintajärjestelmän (Content Management System) tai sisällönhallintajärjestelmä(kehyksen) (Content Management Framework).

Tekniseen arkkitehtuurin laadukkaan toteutuksen sijaan Ohjelmallisen sisällönhallinnan harjoitustyössä keskitytään järjestelmien toiminnallisuuksiin ja automatisoinnissa tarvittaviin prosesseihin. Tämä tarkoittaa käytännössä esimerkiksi yhteisöllisten toimintojen kehittämistä, sovelluksen keräämän datan esittämistä visualisoiden tai muuta (palvelun käyttäjän näkökulmasta) "luovaa" toimintaa.

Harjoitustyön minimivaatimuksena on toteuttaa verkkopalvelu, jonka sisältöä on mahdollista lisätä, muokata, poistaa ja listata Web-käyttöliittymän tuella. Jokaisen harjoitustyön on toteutettava vähintään seuraavat ominaisuudet:

  • sisäänkirjautuminen,
  • uloskirjautuminen (”Kiitos ja tervetuloa uudestaan”),
  • listaus sisällöstä,
  • uuden sisältöartikkelin (resurssin) lisääminen ja
  • sisältöartikkelin tietojen muokkaaminen.

Harjoitustyön pohjana saa hyödyntää aikaisemmin esimerkiksi harrastusprojektina toteutettua sovellusta siinä tapauksessa, että sitä ei aikaisemmin ole miltään osin käytetty osana mitään opintosuoritusta. Vanhan työn käyttäminen ei kuitenkin anna erivapauksia pisteiden jakamisen perusteisiin: ominaisuuden on tässäkin tapauksessa vastattava täysin annettua kuvausta.

Huomaathan, että harjoitustyön tuloksena ei välttämättä tarvitse syntyä tuotantokelpoista verkkopalvelua; erilaisten ominaisuuksien kehittelyä ja esittelemistä tukeva prototyyppi riittää oikein hyvin. Tuotantokelpoisen verkkopalvelun toteuttaminen prototyypin pohjalta onnistuu esimerkiksi hypermedian erikoistyön tai projektityön puitteissa.

Harjoitustyön tekeminen alkaa kehitysympäristön perustamisella ja valinnalla. Voit joko asentaa itsellesi LAMP-ympäristön tai perustaa ympäristön valitsemaasi Web-hotelliin. Heroku on erityisen kiinnostava vaihtoehto ja palvelimen tuunaamisesta kiinnostunut voi ottaa käyttöön vaikkapa Amazon AWS:n -- nyt tavoitteena on kuitenkin edetä suoraviivaisesti kehittämään varsinaista sovellusta. Ohjeita kehitysympäristön perustamiseen löytyy esimerkiksi Hypermedian ohjelmointi 2013 -ryhmästä, CodeIgniter-ohjeesta (Vaahtolammi 2014) ja Docker- ja Ruby on Rails -ohjeesta PDF (Hakulinen 2015). 

Esimerkkejä aiheista

Opiskelija saa valita harjoitustyönsä aiheen vapaasti, luonnollisesti hyvän maun puitteissa:

Esimerkkejä aiheista:

Toteuta maailman paras opinto-opas, joka esittää opinto-oppaan tiedot opiskelijalle hyödyllisellä tavalla. Minkälaisia vuorovaikutteisia ominaisuuksia opinto-oppaassa voisi olla? Miten opinto-oppaan tietoja voi visualisoida? Onko opinto-oppaasta mahdollista tehdä yhteisöllinen? 

Koostepalvelu (mashup) Olennaisen osan nykyaikasta Web-palvelutarjontaa muodostavat erilaiset koostepalvelut (mashup), jotka koostavat, yhdistelevät, jalostavat ja rikastavat eri lähteistä kerättyä tietoa. Keskeisessä roolissa koostepalvelujen toteuttamisessa ovat verkkopalvelujen tarjoamat rajapinnat (Web API), joiden tuella tietoja voidaan ohjelmallisesti siirtää verkkopalvelujen välillä. Erilaiset paikkatiedon ja kartan yhdistelmät ovat yleisimmin toteutettuja koostepalveluita, mutta esimerkiksi D3.js-kirjaston ja avoimen datan yhdistelmällä saa aikaan paljon muutakin. 

Uuden ajan reittiopas Esimerkiksi TKL tarjoaa jo käyttäjälle varsin käteviä palveluita bussiaikataulujen selvittämiseen, mutta parannettavaakin on. Palvelut eivät esimerkiksi osaa auttaa käyttäjää lähimmän pysäkin valinnassa: parhaassa tapauksessa käyttäjä voisi etsiä sopivan bussin valitsemalla esim. "Kotiin". Aikaisemmin kuljettujen reittien muistaminen ja niiden ehdottaminen auttaisivat myös käyttäjää minimoimaan palvelun kanssa käytetyn ajan. Mitä muita toimintoja palvelu voisi toteuttaa?

Edellä mainittuja aiheita voi vapaasti muokata siten, että ne sopivat paremmin tekijän omiin tarpeisiin. Erityisen suositeltavaa on keksiä jokin ehdotettuja parempi aihe. Inspiraatiota voit kerätä vaikkapa tutustumalla Demolassa tarjolla oleviin projektiaiheisiinApps4Finland-kilpailutöihin tai programmableweb.com-sivuston koostepalveluesimerkkeihin.

Harjoitustyöpisteet ja arvosana

Harjoitustyöstä voi kerätä pisteitä yhteensä 18 kappaletta.

Neljä vaihetta:

  1. Kehitysympäristön perustaminen: LAMP käyntiin omalle koneelle tai esimerkiksi Herokun käyttöönotto. Katso tarkempi ohje. Palautus perjantaihin 20. maaliskuuta kello 17 mennessä. (3 pistettä)
  2. Esimerkkisovellus valitsemallasi teknologialla: Lisää-näytä-päivitä-poista (CRUD) -toiminnot sekä tuki kirjautumiseen ja rekisteröitymiseen. Palautus perjantaihin 27. maaliskuuta kello 17 mennessä. (3 pistettä)
  3. Datarajapinnan käyttö: sisältöjen listaaminen ja yksittäisen sisällön näyttäminen JSON- tai XML-muodossa. Palautus perjantaihin 17. huhtikuuta kello 17 mennessä. (3 pistettä)
  4. Visualisointi: sovelluksen keräämän tai datarajapinnasta luetun datan ei-triviaali visualisointi (siis jotain muuta kuin perinteistä toimistografiikkaa tai joukko kartalle heitettyjä tietoja). Palautus perjantaihin 8. toukokuuta kello 17 mennessä. (3 pistettä)

Voit tuplata edelliset pisteet valmistelemalla Koodiklinikalle demon toteutuksestasi. Ota yhteyttä Jukkaan jos olet kiinnostunut mahdollisuudesta.

Lisäksi pisteitä voi kerätä seuraavista toteutuksista - palautus perjantaihin 8. toukokuuta kello 17 mennessä:

Folksonomioihin perustuva taggaaminen (3 pistettä): Nimihirviö viittaa tyypilliseen Web 2.0 -palvelujen piirteeseen, joka mahdollistaa käyttäjien vapaasti määrittelemien avainsanojen liittämisen palvelun tietosisältöön. Merkinnät näkyvät kaikille palvelun käyttäjille ja niitä käytetään esimerkiksi tietosisällön listaamiseen. Esimerkiksi Last.fm ja delicious.com soveltavat tageja monipuolisesti. Pisteiden kerääminen edellyttää myös suosittujen avainsanojen suosittelumekanismin toteuttamista (”Popular tags for this artist”, “recommended tags”).

Saavutettava AJAX-käyttöliittymä (3 pistettä): AJAX-teknologian soveltaminen verkkopalvelun käyttöliittymän toteutuksessa (sekä asynkroninen tiedonsiirto että käyttöliittymän dynaaminen mukauttaminen). AJAX-toteutus voi liittyä esimerkiksi käyttöliittymän dynaamiseen päivittämiseen tai käyttäjän syötteen välittämiseen palvelimelle tarkastettavaksi ja virheellisestä syötteestä ilmoittamiseen. Myös tagien lisäysmekanismit (ks. tageja käsittelevä artikkeli Wikipediassa) ovat pääsääntöisesti AJAX-perustaisia. Pisteiden kerääminen edellyttää vaihtoehtoisen toiminnallisuuden toteuttamista Javascript-tuettomiin käyttötilanteisiin, vrt. Understanding Progressive Enhancement.

HTML5-pohjainen käyttöliittymä (3 pistettä): Ota verkkopalvelussasi käyttöön vähintään kaksi seuraavista HTML5-kielen esittelemistä tai siihen keskeisesti liittyvistä uusista ominaisuuksista: CanvasWeb Storage,Web WorkersWeb Socket ja uudet lomakeominaisuudet. Ideoita ominaisuuksista voit poimia esimerkiksiHTML5-esittelykalvoista

Kertakirjautuminen (3 pistettä): OpenID-teknologia antaa käyttäjille mahdollisuuden uudelleenkäyttää käyttäjätunnuksiaan palvelusta toiseen. OpenID Attribute Exchange ja teknologian muut laajennukset mahdollistavat myös profiilitietojen välittämisen palvelujen välillä. Myös yksittäiset palveluntarjoajat tarjoavat usein OAuth-protokollaan perustuvia keinoja kertakirjautumisen toteuttamiseen, ks. esimerkiksi Facebook for Websites: AuthenticationAuthentication and Authorization for Google APIs ja Twitter: Authentication & Authorization. Kerää pisteet toteuttamalla tuki vähintään yhdelle mainituista kirjautumismenetelmistä.

Sovelluskehittäjän rajapinta (3 pistettä): Mahdollista sovelluksesi keräämän tietosisällön hyödyntäminen ja/tai muokkaaminen muille kehittäjille toteuttamalla sovellukseesi Web API eli sovelluskehittäjärajapinta.

Älypuhelinnäkymä sovellukseen (3 pistettä): Toteuta yksinkertainen älypuhelinsovellus sovelluksesi keräämien tietojen näyttämiseen/käyttämiseen tai muokkaamiseen.

Koodit ja dokumentaatio GitHubiin (2 pistettä): Käytä GitHub-palvelua koodin versionhallintaan. Lisäpiste: jaa koodi avoimella lisenssillä. Toinen lisäpiste: kontribuoi olemassa olevaan projektiin. 

Käytön analytiikka (3 pistettä): Ota käyttöön analytiikkaratkaisu, joka mahdollistaa käyttäjien toiminnan seuraamisen suppiloanalyysiperiaatteen mukaisesti, vrt. Funnel Analysis.  

Erityisen hyödyllisiksi osoittautuvat opiskelijoiden toteuttamat ohjeet palkitaan porkkanapistein. Tarjolla on yhteensä 6 pistettä, jotka lisätään kaikkien muiden kerättyjen pisteiden päälle.

Harjoitustyön raportointi

Harjoitustyöpisteet kerätään julkaisemalla TTY-Piiriissä tiivis kuvaus toteuttamastasi toiminnosta. 

Yksittäiseen ominaisuuteen liittyvän viestin tulee sisältää seuraavat pääkohdat:

  1. tiivis kuvaus toteutuksesta,
  2. muutamia otteita toteutuksesta (ohjelmakoodista, asetustiedostoista, …),
  3. listaus (siis lista linkkejä) ohjeista tai esimerkiksi verkkolähteistä jotka olivat erityisesti hyödyksi tehtävää tehdessä ja
  4. listaus vähintään kolmesta asiasta, jotka olivat valitulla teknologialla joko erityisen helppoja tai vastaavasti hankaloittivat työtäsi merkittävästi.

Kun viesti on valmis, julkaise se TTY-Piirin Juttuna. Huomioi Piiriin kirjoitettujen viestien näkyvyys.

Kuvauksen mukainen viesti on toimitettava Piiriin viimeistään perjantaina kello 17 mennessä sillä viikolla, joilloin kyseisestä ominaisuudesta jaetaan pisteet: kirjoita viesti, laita siihen tagi codeigniter2015, lavarel2015, django2015, pylons2015, turbogears2015, bfg2015, rubyonrails2015, googleappengine2015, nodejs2015 tai dotnet2015 ja osoita viesti Ohjelmallinen sisällönhallinta -ryhmälle (Valitse Ryhmät > Näkyvyys > Ohjelmallinen sisällönhallinta 2015). 

Loppuraportti

Harjoitustyön palautus tapahtuu lähettämällä oheisen mallin mukainen tiedote osoitteeseen jukka.huhtamaki@tut.fi. Lähetä viesti otsikolla #OHSIHA: työ valmis perjantaihin 15. toukokuuta kello 17 mennessä.

Nimi: James Station
Opiskelijanumero: 123456
Sähköposti: jstat@trolleywatch.org

Harjoitustyöni aihe: Verkkopalvelu raitiovaunubongareille

Harjoitustyö löytyy kokonaisuudessaan oheisesta zip-paketista (ohsiha2015-234567.zip).

Linkki profiiliini TTY-Piirissä: http://hlab.ee.tut.fi/piiri/user/james-station

Palautettavan zip-paketin (ohsiha-opiskelijanumero.zip) tulee sisältää hakemisto nimeltä ohsiha2015-234567 (korvaa lukusarja 234567 omalla opiskelijanumerollasi), jonka sisältä löytyy koodiportfolio (portfolio.html) ja siihen linkitetyt keskeiset koodi- ja asetustiedostot (ks. koodiportfolion sivupohja). Huomaa, että sovelluksen ei tarvitse toimia sellaisenaan. Riittää, että paketin sisältöön voi perehtyä suoraviivaisesti purkamalla paketin ja avaamalla portfolio.html-tiedoston.

Merkitse lisäksi harjoitustyön eri ominaisuuksien raportoiduista toteutuksista  ja vierailuluennoille osallistumisesta keräämäsi pisteet Google-laskentataulukkoon (ei edellytä sisäänkirjautumista). Merkitse pisteet ainoastaan siinä tapauksessa, että olet julkaissut kuvauksen määräaikaan mennessä.