Final Documentation - LauriKorte/FMB GitHub Wiki

Tämä on loppuraportti liittyen Palvelinohjelmointi IIM50300-kurssin harjoitustyöhön.


ZIP-paketti löytyy täältä


1. Tietoa harjoitustyöstä

  • Harjoitustyön nimi
    • Food Manufacturing Book (FMB), alanimi OGRecipes
  • Tekijät
    • Lauri Korte
    • Antti Mäkelä
    • Miro Nousiainen
  • Työn luovutus
    • perjantaina 22.4.2016 Jyväskylässä

Harjoitustyö on toteutettu Palvelinohjelmoinnin kurssille keväällä 2016.

2. Tehtävän kuvaus

Kurssilla oli tarkoituksena tehdä harjoitustyö PHP-ohjelmointiin liittyen. Päädyimme tekemään reseptikirjan, jonne käyttäjä voi tallentaa omia reseptejä, sekä muokata, poistaa ja arvioida niitä haluamallaan tavalla. Kirjautumaton käyttäjä voi ainoastaan selata reseptejä; kirjauduttuaan käyttäjä voi tehdä mm. edellä mainittuja asioita.

Katso myös Projektin suunnitelma

3. Käytännön toteutus

Sivusto toimii suorittamalla joukon sisäisiä sisällön pyyntökutsuja. Näitä pyyntökutsuja käytetään myös sisällön tarjoamiseen käyttäjälle. Nämä toteutetaan SiteMaster luokan get() metodilla. Pyyntökutsun vastaus määritellään addGetMatch() functiolla, mikä ottaa sisään pyyntökutsua vastaavan regexin ja pyyntökutsun hoitavan delegaattifunktion. Tämä regex voi sisältää capture grouppeja parametrien määrittämiseksi esim. regex %^/getreviewlist/([0-9]+):([0-9]+)$% vastaa pyyntöä /getreviewlist/12:14.

Tätä järjestelmää käytetään URL osoitteen korvaamisessa ja uudelleen ohjauksessa. .htaccess tiedostossa on määritetty mod_rewrite lisäosan käyttö niin, että saadaan käyttäjän pyytämä osoite aina ohjattua index.php:lle. Tämä pyydetty URL syötetään SiteMaster luokan get() metodille, joka palauttaa pyydetyn sisällön.

Suurin osa sisällöstä mikä sivulla on toimitetaan Content ja Style luokilla. Content luokka on tarkoitettu lähinnä muun Content luokkien kanssa kanssakäymiseen. Style luokat sisältävät tulostettavan HTML:n minkä Content näyttää. Näistä on erikoistuneet luokat Site ja SiteStyle, jotka tulostavat HTML sivun tyylimääritykset, otsikot sun muut.

DBMaster luokkaa käytetään kaikkeen operaatioihin, mitkä tarvitsevat tietokantayhteyden. Esimerkiksi kaikkien reseptien haku, yksittäisen reseptin täydellinen haku. Myös päivitykset ja poistot hoidetaan sen kautta.

Authentication luokka hoitaa kirjautumisen. Kyseiseltä luokalta voidaan kysyä, onko käyttäjä kirjautunut sisään.

Ohjelma on ajettu HTML-validaattorin läpi ja se täyttää HTML5:n vaatimukset.

4. Ajan käyttö

Aikaa harjoitustyön tekoon käytettiin seuraavanlaisesti:

  • Antti : ~35h
  • Lauri : ~32h
  • Miro : ~27h

Työtä tehtiin www-palvelinohjelmoinnin, ohjelmistosuunnittelun, tietokantojen tunneilla sekä omalla ajalla.

4.1 Itsearvio

Työn teko onnistui ryhmässä hyvin. Alkuun pääseminen tuotti aluksi ongelmia; emme pitkään tienneet edes harjoitustyön aihetta. Lopulta päätimme tehdä jotain ohjelmaa tekemäämme tietokantaan. Näin syntyi reseptikirja.

Reseptikirja onnistui hyvin ajan puitteissa, vaikka se vielä esitysvaiheessa oli hieman kesken. Ohjelma saatiin kuitenkin nopeasti 'valmiiksi'. Joitain lisäominaisuuksia voidaan tulla vielä lisäämään, mutta ohjelma toimii moitteettomasti.

Työ kokonaisuutena 5/5, mutta yksilölliset arviot seuraavat:

  • Antti : 2
  • Lauri : 2
  • Miro : 2

5. Lähdekoodit

Lähdekoodit ovat tarkasteltavissa Githubin code osuudessa kokonaisuudessaan.