<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="et">
	<id>http://www.lambda.ee/w/index.php?action=history&amp;feed=atom&amp;title=ITV0110_4._t%C3%B6%C3%B6_2011</id>
	<title>ITV0110 4. töö 2011 - Redigeerimiste ajalugu</title>
	<link rel="self" type="application/atom+xml" href="http://www.lambda.ee/w/index.php?action=history&amp;feed=atom&amp;title=ITV0110_4._t%C3%B6%C3%B6_2011"/>
	<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=ITV0110_4._t%C3%B6%C3%B6_2011&amp;action=history"/>
	<updated>2026-11-11T07:09:39Z</updated>
	<subtitle>Selle lehekülje redigeerimiste ajalugu</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=ITV0110_4._t%C3%B6%C3%B6_2011&amp;diff=9661&amp;oldid=prev</id>
		<title>Tammet: Uus lehekülg: &#039;= &lt;font color=&quot;red&quot;&gt; See on 2011 aasta arhiveeritud ülesanne, 2012 aasta ülesande sisu on veidi teistsugune &lt;/font&gt; =   == &lt;font color=&quot;red&quot;&gt; Andmebaasi kasutajanimi, parool ja...&#039;</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=ITV0110_4._t%C3%B6%C3%B6_2011&amp;diff=9661&amp;oldid=prev"/>
		<updated>2012-11-13T20:37:55Z</updated>

		<summary type="html">&lt;p&gt;Uus lehekülg: &amp;#039;= &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt; See on 2011 aasta arhiveeritud ülesanne, 2012 aasta ülesande sisu on veidi teistsugune &amp;lt;/font&amp;gt; =   == &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt; Andmebaasi kasutajanimi, parool ja...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Uus lehekülg&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt; See on 2011 aasta arhiveeritud ülesanne, 2012 aasta ülesande sisu on veidi teistsugune &amp;lt;/font&amp;gt; = &lt;br /&gt;
&lt;br /&gt;
== &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt; Andmebaasi kasutajanimi, parool ja näiteid &amp;lt;/font&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Kõik need leiad hiljuti uuendatud näidete seast [[Vorgurakendused 1 SQL naited loengust]]. Samuti on &amp;quot;Abi ja soovitusi&amp;quot; peatüki alguses uusi näpunäiteid ja ideid.&lt;br /&gt;
&lt;br /&gt;
== Mis tuleb teha ==&lt;br /&gt;
&lt;br /&gt;
Neljanda praktikumi ülesandeks on ehitada mini-[http://www.reddit.com reddit], kasutades selleks PHP-d ja MySQL-i (või Postgresqli).&lt;br /&gt;
&lt;br /&gt;
Arusaadavalt on sinu loodav süsteem väga palju lihtsam, kui päris [http://www.reddit.com reddit], kuid baasfunktsionaalsus on tal sama.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Praktikumi arvestamine ja hindamine ==&lt;br /&gt;
&lt;br /&gt;
Praktikum annab maksimaalselt 15 punkti.&lt;br /&gt;
&lt;br /&gt;
Edukaks arvestuseks pead realiseerima baasfunktsionaalsuse lihtsamad osad:&lt;br /&gt;
* Lingi lisamine.&lt;br /&gt;
* Lisatud linkide sorteeritud vaatamine: paremad eespool, kuvatakse korraga piiratud arv. &amp;quot;Parem&amp;quot; on lihtsamal juhul selline, millel upvotes-downvotes skoor on suurem.&lt;br /&gt;
* Lingi upvote ja downvote.&lt;br /&gt;
* Lingile kommentaari lisamine (ühel lingil võib neid olla kuipalju tahes), salvestatakse lameda listina ilma vastuste hierarhiata.&lt;br /&gt;
* Lingi kommentaaride vaatamine lisamisaja järgi sorteeritult, jällegi lameda listina ilma vastuste hierarhiata.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nende osade korralik realiseerimine annab 7 punkti. Praktikumi ei arvestata, kui nendes osades on suuremad puudujäägid. &lt;br /&gt;
&lt;br /&gt;
Järgmiste funktsionaalsuste lisamine annab täiendavalt punkte, kuni maksimaalse 15-ni:&lt;br /&gt;
* Oma accoundi tegemine: kasutajanimi ja parool.&lt;br /&gt;
* Sisselogimine (sisselogitult peab siis olema näha kasutajanimi), väljalogimine ja lingi/kommentaari ning upvote/downvote lubamine ainult sisseloginud kasutajalt.&lt;br /&gt;
* Kommentaari ja lingi juures lisaja kasutajanime ja lisamisaja kuvamine.&lt;br /&gt;
* Lingi sisestamisel tagi lisamine lingile. Tag on umbes seesama, mis subreddit ja tagi võib alati vabalt valida/sisestada.&lt;br /&gt;
* Tagide järgi linkide otsimine: kuvatakse ainult neid linke, millel on valitud/sisestatud tag.&lt;br /&gt;
* Tagide listi kuvamine.&lt;br /&gt;
&lt;br /&gt;
Reaalses rakenduses hädavajalikud asjad, millega meie praksis aga &amp;lt;b&amp;gt;ei pea&amp;lt;/b&amp;gt; tegelema (kuid ei ole ka keelatud):&lt;br /&gt;
&lt;br /&gt;
* 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].&lt;br /&gt;
* Juba sisestatud info muutmine ja kustutamine.&lt;br /&gt;
* Erinevad turvaküsimused ([http://xkcd.com/327/ sql injection] jne).&lt;br /&gt;
* Kasutajakonto tegemise kontrollid emaili ja captcha-ga.&lt;br /&gt;
* Pikkade loetelude jagamine lehekülgedeks.&lt;br /&gt;
* Teksti/kasutaja/jne otsingud.&lt;br /&gt;
* Oma accoundi eelistused ja nende kasutamine kuvamisel.&lt;br /&gt;
* Kommentaaride esitamine hiearhiana.&lt;br /&gt;
&lt;br /&gt;
== Tehnoloogilised nõuded ==&lt;br /&gt;
&lt;br /&gt;
* Kõik serverirakendused tuleb realiseerida [http://www.php.net/ PHP-s] ja andmeid tuleb hoida kas [http://www.mysql.com MySQL-s] või [http://www.postgresql.org/ Postgresis].  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 [http://www.postgresql.org/ Postgresi].&lt;br /&gt;
* Rakendus peab olema võrgus vabalt brauseriga ligipääsetav, mitte lihtsalt töötama näiteks sinu laptopis.&lt;br /&gt;
* Serverarvutina võid - nagu teises praktikumis - kasutada kas dijkstrat või omaenda vabalt valitud lemmikserverit.&lt;br /&gt;
&lt;br /&gt;
== Abi ja soovitusi ==&lt;br /&gt;
&lt;br /&gt;
Esiteks: tutvu PHP ja SQL materjalidega, kas kursuse esilehelt või koopiana siitsamast:&lt;br /&gt;
&lt;br /&gt;
* Vaata [[Vorgurakendused 1 SQL naited loengust]]. Uus 2011 andmebaas on nimega reddit, kasutajanimi on rstudent ja parool on student: see on kõigile ühine. &lt;br /&gt;
* Vaata [[lihtsaid php ja mysql näiteid]] loengust. Siin kasutatakse vana andmebaasi nimega facebook ja andmebaasi kasutajat fstudent, mis sel aastal enam kasutusel pole.&lt;br /&gt;
&lt;br /&gt;
Ideid ja näpunäiteid:&lt;br /&gt;
&lt;br /&gt;
* Kõige lihtsam on teha kogu rakendus üheainsa php failina. Keerulisemate programmide puhul ei ole see hea mõte, meie lihtsal juhul aga on päris mugav. &lt;br /&gt;
* Kui tahad siiski oma php faili struktureerida (näiteks hoida eraldi failis päis ja jalus) siis selleks on php [http://php.net/manual/en/function.include.php include] käsk.&lt;br /&gt;
* Erinevad tegevused (a la lingi lisamine, votemine, sisse logimine) saad realiseerida nii, et php lehel vaadatakse, mis argumendid on antud (näiteks reddit.php?username=xx&amp;amp;password=yy peale tehakse sisse logimine, reddit.php?op=logout peale väljalogimine, reddit.php?link=www.ttu.ee peale tehakse vote jne). Alati on võimalik võtta ka kasutusele eraldi parameeter, ntx op, mille väärtus ütleb siis, et mis tegevus tuleb ette võtta.&lt;br /&gt;
* Debugimise jaoks on lihtsam kasutada vormidel method=&amp;quot;get&amp;quot;, siis näed brauserist, et mis parameetrid saadeti.&lt;br /&gt;
* Samuti on debugimise juures abiks trükkida välja (echo) kokkuklopsitud sql päring tervikuna, et kontrollida, kas sai selline, nagu tahtsid.&lt;br /&gt;
* Sisselogimise jaoks (tee seda alles siis, kui baasfunktsionaalsus olemas!) on mõistlik kasutada php session funktsiooni (lihtsa tutoriali [http://www.tizag.com/phpT/phpsessions.php leiad siit]) ja seada sessioonis sisselogimisel $_SESSION[&amp;#039;username&amp;#039;] ja edaspidi alati kontrollida, kas on isset($_SESSION[&amp;#039;username&amp;#039;]) ja kui jah, siis kasutada seda väärtust, kui ei, siis kuvada sisselogimise vorm. Väljalogimisel piisab siis session_destroy() kasutamisest.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sobivad õpetused lugemiseks, umbes selles järjekorras:&lt;br /&gt;
&lt;br /&gt;
; PHP&lt;br /&gt;
&lt;br /&gt;
* Väikese ajaloolise ülevaate leiad [http://en.wikipedia.org/wiki/PHP wikipeediast]&lt;br /&gt;
* Põhiõpetus on [http://www.php.net/manual/en/ php oma saidil]: loe sealt kõigepealt [http://www.php.net/manual/en/tutorial.php sissejuhatavat tutoriali]&lt;br /&gt;
* [http://w3schools.com/php/default.asp W3school-si php tutorial] on samuti päris OK.&lt;br /&gt;
&lt;br /&gt;
; SQL, loe selles järjekorras:&lt;br /&gt;
&lt;br /&gt;
* [http://web.njit.edu/~song/courses/is698/SQL_tutorials.ppt SQL hea esimene kiirsissejuhatus]&lt;br /&gt;
* [http://www.w3schools.com/sql/default.asp enamateks detailideks loe w3schools&amp;#039;i tutoriali]&lt;br /&gt;
* [http://www.sql-tutorial.net/SQL-tutorial.asp hea pikem tutorial alternatiivina eelmistele] ja [http://www.sql-tutorial.net/SQL-Cheat-Sheet.pdf selle sees alternatiivne cheat-sheet]&lt;br /&gt;
* [http://dev.mysql.com/doc/refman/5.0/en/tutorial.html mysql esmane tutorial] ja [http://dev.mysql.com/doc/refman/5.0/en/index.html vaata veidi mysql manuaali]&lt;br /&gt;
* [http://blogs.techrepublic.com.com/security/?p=2368 SQL injection] vt ka [http://lh6.ggpht.com/_5YF7KQZuZS0/S6dvFXu5OoI/AAAAAAAACWM/qTcVpMxcDnA/licence%20plate%20camera%20sql%20injection_2%5B3%5D.jpg?imgmax=800 seda] ja [http://www.schneier.com/blog/archives/2010/10/pen-and-paper_s.html seda] ja [http://alicebobandmallory.com/articles/2010/09/23/did-little-bobby-tables-migrate-to-sweden seda]&lt;br /&gt;
&lt;br /&gt;
; SQL PHP-s, loe selles järjekorras:&lt;br /&gt;
&lt;br /&gt;
* [http://dmsa.concordia.ca/tutorial_files/shortsql.ppt mysql PHP-s: ppt] &lt;br /&gt;
* [http://www.tizag.com/mysqlTutorial/ mysql PHP-s: veebitutorial]&lt;br /&gt;
* [http://www.w3schools.com/php/default.asp w3schools PHP tutorial all vasakul Mysql blokk]&lt;br /&gt;
&lt;br /&gt;
; Erinevad vormivälja-tüübid peale hariliku &amp;amp;lt;input type=text&amp;amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3schools.com/html/html_forms.asp w3schools vormi-sissejuhatus]&lt;br /&gt;
* väga mahukas ka detailne info: [http://www.w3.org/TR/html401/interact/forms.html vormid html standardis] ja selle [http://www.w3.org/TR/html401/interact/forms.html#h-17.4 eriti oluline osa]&lt;br /&gt;
* [http://www.learnphp-tutorial.com/HtmlForms.cfm suhteliselt ok vorminäide php kontekstis]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Siit leiad eelmise aasta versiooni: [[ITV0110 4. töö 2010]]&lt;/div&gt;</summary>
		<author><name>Tammet</name></author>
	</entry>
</feed>