Next Previous Contents

8. Øvingsoppgave

Her følger et forslag til øvingsoppgave for å få prøvd ut det vi har gått igjennom så langt.

Oppgaven går i korte trekk ut på å lage et web-basert system i Ruby hvor studenter kan registrere seg på forskjellige kurs og presentasjoner, slik som dette.

8.1 Oppgave 1)

Implementer følgende krav til systemet i Ruby.

  1. Brukere kan logge inn med et brukernavn og passord. (Ikke stud-passordet!)
  2. Brukere som logger inn vises en oversikt over:
    1. Kurs de er påmeldt, som holdes i dag eller i fremtiden.
    2. Kurs som er tilgjengelig for oppmelding og som holdes innen de neste 30 dagene.
    3. Nyheter i kurs de er påmeldt.

Dere kan bruke en eksisterende MySQL-database som er ferdig satt opp, da disse kravene ikke trenger skrivetilgang:

Server:         mysql.pvv.ntnu.no
Database:       kentda_rubynuby_webapp
Brukernavn:     kentda_rubynuby
Passord:        w3bRg0y1

Ta en titt på ER-diagrammet for en oversikt.

8.2 Oppgave 2)

Utvid systemet med følgende krav. Vel innlogget skal brukere kunne:

  1. Registrere seg på kurs som vises i oversikten.
  2. Avregistrere seg på kurs de er påmeldt på.
  3. Logge ut.

Da disse og senere krav krever skrivetilgang, må dere ha en egen MySQL-database. Dere kan enten sette opp selv, eller få hjelp til dette. Dersom dere setter opp selv, kan dere gjerne endre databaseskjemaet hvis dere syntes designet er uhensiktsmessig, men det kan da bli litt vanskeligere å få hjelp.

Informasjon om hvordan sette opp MySQL-databaser på stud, som også stemmer for PVV.

8.3 Oppgave 3)

Utvid systemet med følgende krav:

  1. Nye brukere kan opprettes forutsatt at brukernavnet ikke allerede er tatt.
  2. Ved opprettelse av ny bruker genereres et tilfeldig passord som sendes på e-post til den nye brukeren for å bekrefte identiteten.

Dette krever mulighet for å sende e-post. Titt på dokumentasjonen til Net::SMTP og benytt enten smtp.stud.ntnu.no eller smtp.pvv.ntnu.no som utgående mailserver. (Bruk deres egne e-post adresser til testing.)

8.4 Oppgave 4)

Enda mer featuritis. Administratorer skal kunne:

  1. Endre passord på andre brukere.
  2. Legge til kurs
Administratorer og kursholdere skal kunne:
  1. Legge inn nyheter på kurs.
  2. Angi en viktighetsgrad på nyheten. (Høy/Lav)
  3. Dersom viktighetsgraden er høy, skal systemet sende nyheten på e-post til alle som er påmeldt. (Pass på å bare sende til dere selv når dere tester! Ingen spamming takk!)

Siden det kan være mange som skal ha nyheten på e-post, ønsker ikke administratoren/kursholderen å vente til alle e-poster er sendt før han kan trykke videre i systemet.

8.5 Oppgave 5)

Tenkt scenario: Programvareverkstedet ønsker å ta i bruk det fine systemet ditt, men er ikke like begeistret for databaseavhengigheten. PVV bruker allerede ADiCT og ønsker å integrere systemet ditt opp mot ADiCT gradvis.

Første oppgave kan da deles opp slik:

  1. Separer databaselogikken fra koden som lager HTML-sidene.
  2. Lag et overordnet objekt som gir tilgang til, og innkapsler, databaselogikken.
  3. Flytt databaselogikken over i en egen prosess og kommuniser mellom mod_ruby/CGI-skript-prosessene og denne ene prosessen via druby.


Next Previous Contents