ITV0110 4. töö: Andmebaasiga serverakendus: erinevus redaktsioonide vahel

Allikas: Lambda
Mine navigeerimisribale Mine otsikasti
30. rida: 30. rida:


Reaalses rakenduses hädavajalikud asjad, millega meie praksis aga <b>ei pea</b> tegelema (kuid ei ole ka keelatud):
Reaalses rakenduses hädavajalikud asjad, millega meie praksis aga <b>ei pea</b> tegelema (kuid ei ole ka keelatud):
* Mõistliku, aega arvestava rankingu algoritmi tegemine: vt [http://amix.dk/blog/post/19588 redditi rankingualgoritmi] ja [http://amix.dk/blog/post/19574 hacker newsi rankingualgoritmi].
* Juba sisestatud info muutmine ja kustutamine.
* Juba sisestatud info muutmine ja kustutamine.
* Erinevad turvaküsimused ([http://xkcd.com/327/ sql injection] jne)
* Erinevad turvaküsimused ([http://xkcd.com/327/ sql injection] jne)

Redaktsioon: 8. november 2011, kell 11:28

Mis tuleb teha

Neljanda praktikumi ülesandeks on ehitada mini-reddit, kasutades selleks PHP-d ja MySQL-i (või Postgresqli).

Arusaadavalt on sinu loodav süsteem väga palju lihtsam, kui päris reddit, kuid baasfunktsionaalsus on tal sama.

Kui sa juhtumisi ei ole Redditi kasutaja, siis tee endale konto, upvote/downvote, lisa mõni link ja kommentaar ja tutvu süsteemiga: see ei ole praksi jaoks hädavajalik, kuid tuleb kasuks.

Praktikumi arvestamine ja hindamine

Praktikum annab maksimaalselt 15 punkti.

Edukaks arvestuseks pead realiseerima baasfunktsionaalsuse lihtsamad osad:

  • Lingi lisamine.
  • Lisatud linkide sorteeritud vaatamine: paremad eespool, kuvatakse korraga piiratud arv. "Parem" on lihtsamal juhul selline, millel upvotes-downvotes skoor on suurem.
  • Lingi upvote ja downvote.
  • Lingile kommentaari lisamine (ühel lingil võib neid olla kuipalju tahes), lameda listina ilma vastuste hierarhiata.
  • Lingi kommentaaride vaatamine lisamisaja järgi sorteeritult, jällegi lameda listina ilma vastuste hierarhiata.


Nende osade korralik realiseerimine annab 7 punkti. Praktikumi ei arvestata, kui nendes osades on suuremad puudujäägid.

Järgmiste funktsionaalsuste lisamine annab täiendavalt punkte, kuni maksimaalse 15-ni:

  • Oma accoundi tegemine: kasutajanimi ja parool.
  • Sisselogimine (sisselogitult peab siis olema näha kasutajanimi) ja lingi/kommentaari ning upvote/downvote lubamine ainult sisseloginud kasutajalt.
  • Kommentaari ja lingi juures lisaja kasutajanime ja lisamisaja kuvamine.
  • Lingi sisestamisel tagi lisamine lingile. Tagi võib alati vabalt valida.
  • Tagide järgi linkide otsimine: kuvatakse ainult neid linke, millel on valitud/sisestatud tag.
  • Tagide listi kuvamine.

Reaalses rakenduses hädavajalikud asjad, millega meie praksis aga ei pea tegelema (kuid ei ole ka keelatud):

  • Mõistliku, aega arvestava rankingu algoritmi tegemine: vt redditi rankingualgoritmi ja hacker newsi rankingualgoritmi.
  • Juba sisestatud info muutmine ja kustutamine.
  • Erinevad turvaküsimused (sql injection jne)
  • Pikkade loetelude jagamine lehekülgedeks.
  • Teksti/kasutaja/jne otsingud.
  • Intelligentne uudistenäitaja, mis kuvab näiteks ainult N uuemat uudist.
  • Kasutajakonto tegemise kontrollid emaili ja captcha-ga.

Tehnoloogilised nõuded

  • Kõik serverirakendused tuleb realiseerida PHP-s ja andmeid tuleb hoida kas MySQL-s või Postgresis. Pilte võib hoida failisüsteemis. Kui oled andmebaasinduses algaja, kasuta pigem MySQL-i, kui aga oled juba kogemusi omandanud ja sul on server, kus ise oled adminiõigustega, võiksid proovida Postgresi.
  • Rakendus peab olema võrgus vabalt brauseriga ligipääsetav, mitte lihtsalt töötama näiteks sinu laptopis.
  • Serverarvutina võid - nagu teises praktikumis - kasutada kas dijkstrat või omaenda vabalt valitud lemmikserverit.

Abi ja soovitusi

Esiteks: tutvu PHP ja SQL materjalidega kursuse lehel, mh Vorgurakendused 1 SQL naited loengust.

Teiseks vaata lihtsaid php ja mysql näiteid loengust.

Kolmandaks tasub tutvuda erinevate vormivälja-tüüpidega peale hariliku <input type=text>:

Muud kasulikud näpunäited lisatakse siia jooksvalt hiljem.

Siit leiad eelmise aasta versiooni: ITV0110 4. töö 2010