<?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_3._t%C3%B6%C3%B6_2019%3A_python_ja_cgi</id>
	<title>ITV0110 3. töö 2019: python ja cgi - 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_3._t%C3%B6%C3%B6_2019%3A_python_ja_cgi"/>
	<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=ITV0110_3._t%C3%B6%C3%B6_2019:_python_ja_cgi&amp;action=history"/>
	<updated>2026-10-28T10:39:26Z</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_3._t%C3%B6%C3%B6_2019:_python_ja_cgi&amp;diff=16247&amp;oldid=prev</id>
		<title>Martinv: /* Varasemate mängutulemuste kuva */</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=ITV0110_3._t%C3%B6%C3%B6_2019:_python_ja_cgi&amp;diff=16247&amp;oldid=prev"/>
		<updated>2019-10-30T22:21:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Varasemate mängutulemuste kuva&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;et&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Vanem redaktsioon&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Redaktsioon: 31. oktoober 2019, kell 00:21&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l18&quot;&gt;18. rida:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;18. rida:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Kõigi mängude korral on vaja faili salvestada ka inimese nimi, kes mängis, samuti - kui on vastane - siis vastase nimi. Seega on mängu alustades vaja vormilt sisestada oma nimi, mis siis serveris mängufaili kirjutatakse ja mis mängu ajal ära ei muutu. Nime võib kasutaja valida vabalt, paroole, autentimist jne jne ei ole vaja teha (kuid ei ole ka otse keelatud, peaasi, et sa ei ehitaks seda enne, kui kõik muu valmis).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Kõigi mängude korral on vaja faili salvestada ka inimese nimi, kes mängis, samuti - kui on vastane - siis vastase nimi. Seega on mängu alustades vaja vormilt sisestada oma nimi, mis siis serveris mängufaili kirjutatakse ja mis mängu ajal ära ei muutu. Nime võib kasutaja valida vabalt, paroole, autentimist jne jne ei ole vaja teha (kuid ei ole ka otse keelatud, peaasi, et sa ei ehitaks seda enne, kui kõik muu valmis).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Varasemate mängutulemuste kuva &lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Mängutulemuse salvestamine &lt;/ins&gt;===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Mängimist &lt;/del&gt;alustades &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pead vormi väljalt sisestama &lt;/del&gt;oma &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nime: edaspidi jäägu &lt;/del&gt;nimi &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;javascripti mällu meelde (või pane ta kaasa serverist tulevas vastuses)&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;et &lt;/del&gt;ei &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;peaks uuesti sisetama&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kuni leht pole uuesti laetud või kui &lt;/del&gt;ei &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vajutata &quot;reset&quot; nuppu vms&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Kõigi mängude korral on vaja faili salvestada ka inimese nimi, kes mängis, samuti - kui on vastane - siis vastase nimi. Seega on mängu &lt;/ins&gt;alustades &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vaja vormilt sisestada &lt;/ins&gt;oma nimi, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mis siis serveris mängufaili kirjutatakse ja mis mängu ajal ära &lt;/ins&gt;ei &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;muutu. Nime võib kasutaja valida vabalt&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;paroole, autentimist jne jne &lt;/ins&gt;ei &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ole vaja teha&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Mängu lõppedes pead tegema ajaxi-päringu serveris olevale pythonis cgi-rakendusele, kes siis tulemuse faili lisab. Kasutajale ei ole vaja salvestamise kohta midagi näidata.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Mängu lõppedes pead tegema ajaxi-päringu serveris olevale pythonis cgi-rakendusele, kes siis tulemuse faili lisab. Kasutajale ei ole vaja salvestamise kohta midagi näidata.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Pead tegema pythonis eraldi serverirakenduse, mis kuvab kena veebilehena välja tulemuste tabeli esimesed 10 rida. Samuti peab sellel veebilehel olema otsivorm, kuhu saad sisestada mängija nime: siis kuvatakse ainult selle nimega mängija tulemused. Las see pythoni rakendus lihtsalt loeb andmed failist ja trükib välja sobiva html-i.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Pead tegema pythonis eraldi serverirakenduse, mis kuvab kena veebilehena välja tulemuste tabeli esimesed 10 rida. Samuti peab sellel veebilehel olema otsivorm, kuhu saad sisestada mängija nime: siis kuvatakse ainult selle nimega mängija tulemused. Las see pythoni rakendus lihtsalt loeb andmed failist ja trükib välja sobiva html-i.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Mängu põhilehele tee nupp, millele vajutades avatakse eelpoolkirjeldatud tulemuste leht.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Mängu põhilehele tee nupp, millele vajutades avatakse eelpoolkirjeldatud tulemuste leht.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== Mängutulemuste näitamine ===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Mängude kuvamiseks peab sinu pommitamise põhilehel olema link &quot;kõik mängud&quot;, kuhu vajutades lähed mängude vaatamise lehele.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Mängude kuvamine on vaja teha nii, et saad sisestada (või boksist valida), kelle mänge ja mis vastasega tahad vaadata (üksi või konkreetse inimese vastu), ja siis kuvatakse ainult need. Ei ole keelatud lisaks ka kõigi mängude kuvamine ja muud täiendused.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Mängude kuvamisel võiksid olla sellised tulbad:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* mängu alustamise kuupäev/aeg &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* mängija 1 nimi&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* mängija 1 punktid&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* mängija 2 nimi, arvutiga mängides jäta see ära&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* mängija 2 punktid&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* mänguaeg sekundites&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Mängude sorteerimine on vaja teha nii, et saad tulba pealkirjale vajutada, ning server sorteerib tulemused selle tulba järgi.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Kogu filtreerimine ja sorteerimine tuleb teha serveris, mitte brauseris.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Selles osas on soovitav kasutada harilikku cgi protokolli, mitte ajaxit: samas ei ole ajax siin ka otseselt keelatud.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Laua genereerimise võid teha brauseris, nagu teises praktikumis, aga võid teha ka serveris.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Teise mängija vastu mängimine ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Teise mängija vastu mängimine ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key lambdadb:diff:1.41:old-16246:rev-16247:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Martinv</name></author>
	</entry>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=ITV0110_3._t%C3%B6%C3%B6_2019:_python_ja_cgi&amp;diff=16246&amp;oldid=prev</id>
		<title>Martinv – 30. oktoober 2019, kell 22:13</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=ITV0110_3._t%C3%B6%C3%B6_2019:_python_ja_cgi&amp;diff=16246&amp;oldid=prev"/>
		<updated>2019-10-30T22:13:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;et&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Vanem redaktsioon&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Redaktsioon: 31. oktoober 2019, kell 00:13&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l25&quot;&gt;25. rida:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;25. rida:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Mängu põhilehele tee nupp, millele vajutades avatakse eelpoolkirjeldatud tulemuste leht.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Mängu põhilehele tee nupp, millele vajutades avatakse eelpoolkirjeldatud tulemuste leht.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== Teise mängija vastu mängimine ===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== Teise mängija vastu mängimine ===&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;strong&amp;gt;Ära hakka seda osa tegema, kuni esimesed pole täiesti valmis. See osa on mõeldud juhuks, kui tahad teha midagi keerulisemat.&amp;lt;/strong&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Teise mängija vastu mängimine käib nagu malemäng, vaheldumisi täpselt samal &amp;quot;laual&amp;quot;: mõlemil on samas järjekorras kaardid ja nad näevad täpselt ühesugust pilti, st kui mõned paarid on leitud, siis pole neid kummalgi näha, kui üks kaart on avatud, on ta seda ka teisel. Esimene mängija avab kaks kaarti, kui nad moodustavad paari, jätkab ta käimist (iga käik avab kaks kaarti), kuni mõni käik ei ole enam paar. Siis läheb käik järgmisele, kes pöörab samuti ümber kaks kaarti, kui sai paari, siis ta jätkab, kui ei, siis jälle käik esimesele jne. Ehk sama asi wikipedia artiklis kirjas niimoodi: In turn each player chooses two cards and turns them face up. If they are of the same rank and color (e.g. 6 of hearts and 6 of diamonds, queen of clubs and queen of spades, or both jokers, if used) then that player wins the pair and plays again. If they are not of the same rank and color, they are turned face down again and play passes to the player on the left. The game ends when the last pair has been picked up. The winner is the person with the most pairs, and there may be a tie for first place.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Teise mängija vastu mängimine käib nagu malemäng, vaheldumisi täpselt samal &amp;quot;laual&amp;quot;: mõlemil on samas järjekorras kaardid ja nad näevad täpselt ühesugust pilti, st kui mõned paarid on leitud, siis pole neid kummalgi näha, kui üks kaart on avatud, on ta seda ka teisel. Esimene mängija avab kaks kaarti, kui nad moodustavad paari, jätkab ta käimist (iga käik avab kaks kaarti), kuni mõni käik ei ole enam paar. Siis läheb käik järgmisele, kes pöörab samuti ümber kaks kaarti, kui sai paari, siis ta jätkab, kui ei, siis jälle käik esimesele jne. Ehk sama asi wikipedia artiklis kirjas niimoodi: In turn each player chooses two cards and turns them face up. If they are of the same rank and color (e.g. 6 of hearts and 6 of diamonds, queen of clubs and queen of spades, or both jokers, if used) then that player wins the pair and plays again. If they are not of the same rank and color, they are turned face down again and play passes to the player on the left. The game ends when the last pair has been picked up. The winner is the person with the most pairs, and there may be a tie for first place.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key lambdadb:diff:1.41:old-16245:rev-16246:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Martinv</name></author>
	</entry>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=ITV0110_3._t%C3%B6%C3%B6_2019:_python_ja_cgi&amp;diff=16245&amp;oldid=prev</id>
		<title>Martinv – 30. oktoober 2019, kell 22:12</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=ITV0110_3._t%C3%B6%C3%B6_2019:_python_ja_cgi&amp;diff=16245&amp;oldid=prev"/>
		<updated>2019-10-30T22:12:53Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;et&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Vanem redaktsioon&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Redaktsioon: 31. oktoober 2019, kell 00:12&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l18&quot;&gt;18. rida:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;18. rida:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Kõigi mängude korral on vaja faili salvestada ka inimese nimi, kes mängis, samuti - kui on vastane - siis vastase nimi. Seega on mängu alustades vaja vormilt sisestada oma nimi, mis siis serveris mängufaili kirjutatakse ja mis mängu ajal ära ei muutu. Nime võib kasutaja valida vabalt, paroole, autentimist jne jne ei ole vaja teha (kuid ei ole ka otse keelatud, peaasi, et sa ei ehitaks seda enne, kui kõik muu valmis).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Kõigi mängude korral on vaja faili salvestada ka inimese nimi, kes mängis, samuti - kui on vastane - siis vastase nimi. Seega on mängu alustades vaja vormilt sisestada oma nimi, mis siis serveris mängufaili kirjutatakse ja mis mängu ajal ära ei muutu. Nime võib kasutaja valida vabalt, paroole, autentimist jne jne ei ole vaja teha (kuid ei ole ka otse keelatud, peaasi, et sa ei ehitaks seda enne, kui kõik muu valmis).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Mängude kuvamine on vaja teha nii&lt;/del&gt;, et &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;saad sisestada (&lt;/del&gt;või &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;boksist valida)&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kelle mänge tahad vaadata&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ja &lt;/del&gt;siis kuvatakse ainult &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;need&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Ei ole keelatud lisaks ka kõigi&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== Varasemate mängutulemuste kuva ===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;teiste inimeste mängude kuvamine&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Mängimist alustades pead vormi väljalt sisestama oma nime: edaspidi jäägu nimi javascripti mällu meelde (või pane ta kaasa serverist tulevas vastuses)&lt;/ins&gt;, et &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ei peaks uuesti sisetama, kuni leht pole uuesti laetud &lt;/ins&gt;või &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kui ei vajutata &quot;reset&quot; nuppu vms.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Mängu lõppedes pead tegema ajaxi-päringu serveris olevale pythonis cgi-rakendusele, kes siis tulemuse faili lisab. Kasutajale ei ole vaja salvestamise kohta midagi näidata.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Pead tegema pythonis eraldi serverirakenduse&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mis kuvab kena veebilehena välja tulemuste tabeli esimesed 10 rida. Samuti peab sellel veebilehel olema otsivorm&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kuhu saad sisestada mängija nime: &lt;/ins&gt;siis kuvatakse ainult &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;selle nimega mängija tulemused. Las see pythoni rakendus lihtsalt loeb andmed failist ja trükib välja sobiva html-i&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Mängu põhilehele tee nupp, millele vajutades avatakse eelpoolkirjeldatud tulemuste leht&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Teise mängija vastu mängimine ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Teise mängija vastu mängimine ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key lambdadb:diff:1.41:old-16182:rev-16245:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Martinv</name></author>
	</entry>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=ITV0110_3._t%C3%B6%C3%B6_2019:_python_ja_cgi&amp;diff=16182&amp;oldid=prev</id>
		<title>Martinv: /* Eelmise aasta versioon */</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=ITV0110_3._t%C3%B6%C3%B6_2019:_python_ja_cgi&amp;diff=16182&amp;oldid=prev"/>
		<updated>2019-10-16T17:19:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Eelmise aasta versioon&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;et&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Vanem redaktsioon&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Redaktsioon: 16. oktoober 2019, kell 19:19&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l273&quot;&gt;273. rida:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;273. rida:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Eelmise aasta versioon ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Eelmise aasta versioon ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Eelmise aasta versiooni, mis on mitmes osas sarnane, kuid mitmes osas erinev, [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ITV0110 3&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;töö&lt;/del&gt;: &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Lihtne serverirakendus: vormid ja cgi&lt;/del&gt;|leiad siit]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Eelmise aasta versiooni, mis on mitmes osas sarnane, kuid mitmes osas erinev, [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ITV0110_3&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;_töö_2018&lt;/ins&gt;:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;_python_ja_cgi&lt;/ins&gt;|leiad siit]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key lambdadb:diff:1.41:old-16181:rev-16182:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Martinv</name></author>
	</entry>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=ITV0110_3._t%C3%B6%C3%B6_2019:_python_ja_cgi&amp;diff=16181&amp;oldid=prev</id>
		<title>Martinv: /* Praktikumi arvestamine ja hindamine */</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=ITV0110_3._t%C3%B6%C3%B6_2019:_python_ja_cgi&amp;diff=16181&amp;oldid=prev"/>
		<updated>2019-10-16T17:16:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Praktikumi arvestamine ja hindamine&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;et&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Vanem redaktsioon&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Redaktsioon: 16. oktoober 2019, kell 19:16&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l44&quot;&gt;44. rida:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;44. rida:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Praktikum annab maksimaalselt 12 punkti.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Praktikum annab maksimaalselt 12 punkti.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Esimesed kaks &lt;/del&gt;osa (üksi mängides &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mängude &lt;/del&gt;salvestamine serverisse ja seni mängitud mängude tulemuste kuvamine)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Esimene &lt;/ins&gt;osa (üksi mängides &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tulemuste &lt;/ins&gt;salvestamine serverisse ja seni mängitud mängude tulemuste kuvamine) on kohustuslik osa praktikumist ja nende korralik realiseerimine annab &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;6 &lt;/ins&gt;punkti. Praktikumi ei arvestata, kui &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;selles osas &lt;/ins&gt;on suuremad puudujäägid.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;on kohustuslik osa praktikumist ja nende korralik realiseerimine annab &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7 &lt;/del&gt;punkti. Praktikumi&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;ei arvestata, kui &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nendes osades &lt;/del&gt;on suuremad puudujäägid.  &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Omavahelise mängu realiseerimine (&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kolmas alamsüsteem&lt;/del&gt;) annab lisaks &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;8 &lt;/del&gt;punkti&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Omavahelise mängu realiseerimine (&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;teine osa praksist&lt;/ins&gt;) annab lisaks &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kuni 6 &lt;/ins&gt;punkti &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ja ei ole kohustuslik&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Suuremate puudujääkide korral selles osas on praktikum siiski arvestatud&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Pane tähele, et selles praktikumis on kõigi ülesannete realiseerimiseks vajalik koodihulk &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;väga &lt;/del&gt;väike, samas nõuab tõsist pingutust välja mõelda, kuidas kõiki asju täpselt teha ja esitada ja kuidas nad omavahel kokku käivad&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Samuti võtab päris päris palju aega katsetamine ja esmatutvus võõra progekeelega&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Pane tähele, et selles praktikumis on kõigi ülesannete realiseerimiseks vajalik koodihulk väike, samas nõuab tõsist pingutust välja mõelda, kuidas kõiki asju täpselt teha ja esitada ja kuidas nad omavahel kokku käivad.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Tehnoloogilised nõuded ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Tehnoloogilised nõuded ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key lambdadb:diff:1.41:old-16180:rev-16181:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Martinv</name></author>
	</entry>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=ITV0110_3._t%C3%B6%C3%B6_2019:_python_ja_cgi&amp;diff=16180&amp;oldid=prev</id>
		<title>Martinv: /* Praktikumi arvestamine ja hindamine */</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=ITV0110_3._t%C3%B6%C3%B6_2019:_python_ja_cgi&amp;diff=16180&amp;oldid=prev"/>
		<updated>2019-10-16T17:14:35Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Praktikumi arvestamine ja hindamine&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;et&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Vanem redaktsioon&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Redaktsioon: 16. oktoober 2019, kell 19:14&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l42&quot;&gt;42. rida:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;42. rida:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Praktikumi arvestamine ja hindamine ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Praktikumi arvestamine ja hindamine ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Praktikum annab maksimaalselt &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;15 &lt;/del&gt;punkti.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Praktikum annab maksimaalselt &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;12 &lt;/ins&gt;punkti.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Esimesed kaks osa (üksi mängides mängude salvestamine serverisse ja seni mängitud mängude tulemuste kuvamine)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Esimesed kaks osa (üksi mängides mängude salvestamine serverisse ja seni mängitud mängude tulemuste kuvamine)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key lambdadb:diff:1.41:old-16179:rev-16180:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Martinv</name></author>
	</entry>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=ITV0110_3._t%C3%B6%C3%B6_2019:_python_ja_cgi&amp;diff=16179&amp;oldid=prev</id>
		<title>Martinv: Uus lehekülg: &#039;Python  == Mida tuleb teha ==  Sinu ülesandeks on ehitada veebisüsteem, mille kaudu saab teises praktikumis realiseeritud &lt;b&gt;memory mängu üle v...&#039;</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=ITV0110_3._t%C3%B6%C3%B6_2019:_python_ja_cgi&amp;diff=16179&amp;oldid=prev"/>
		<updated>2019-10-16T17:14:25Z</updated>

		<summary type="html">&lt;p&gt;Uus lehekülg: &amp;#039;&lt;a href=&quot;/wiki/Fail:Python_logo.jpg&quot; title=&quot;Fail:Python logo.jpg&quot;&gt;left|Python&lt;/a&gt;  == Mida tuleb teha ==  Sinu ülesandeks on ehitada veebisüsteem, mille kaudu saab teises praktikumis realiseeritud &amp;lt;b&amp;gt;memory mängu üle v...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Uus lehekülg&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Pilt:Python_logo.jpg|left|Python]]&lt;br /&gt;
&lt;br /&gt;
== Mida tuleb teha ==&lt;br /&gt;
&lt;br /&gt;
Sinu ülesandeks on ehitada veebisüsteem, mille kaudu saab teises praktikumis realiseeritud &amp;lt;b&amp;gt;memory mängu üle võrgu mängida&amp;lt;/b&amp;gt;, ehk siis teise praktikumi edasiarendus veebirakendusena.&lt;br /&gt;
&lt;br /&gt;
Mängida peab saama kahel viisil:&lt;br /&gt;
* Üksi, kuid sedakorda peaks mängu tulemuse iga kord salvestama serverisse.&lt;br /&gt;
* Teise inimese vastu, kus samuti tuleks iga mängu tulemused serverisse salvestada. &lt;br /&gt;
&lt;br /&gt;
Lisaks peab olema võimalik serverist vaadata seniste mängude tulemuste tabelit: kes kelle vastu mängis (või üksi), mis varianti mängiti, mis skoor oli.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttes jaguneb töö kolmeks osaks:&lt;br /&gt;
* Üksi mängides mängu tulemuse salvestamine (sinu nimi, mis mänguvariant, mis skoor ja kulunud aeg).&lt;br /&gt;
* Mängitud mängude kuvamine tabelina.&lt;br /&gt;
* Teise mängija vastu üle võrgu mängimine (ja samamoodi mängude tulemuste kuvamine).&lt;br /&gt;
&lt;br /&gt;
Kõigi mängude korral on vaja faili salvestada ka inimese nimi, kes mängis, samuti - kui on vastane - siis vastase nimi. Seega on mängu alustades vaja vormilt sisestada oma nimi, mis siis serveris mängufaili kirjutatakse ja mis mängu ajal ära ei muutu. Nime võib kasutaja valida vabalt, paroole, autentimist jne jne ei ole vaja teha (kuid ei ole ka otse keelatud, peaasi, et sa ei ehitaks seda enne, kui kõik muu valmis).&lt;br /&gt;
&lt;br /&gt;
Mängude kuvamine on vaja teha nii, et saad sisestada (või boksist valida), kelle mänge tahad vaadata, ja siis kuvatakse ainult need. Ei ole keelatud lisaks ka kõigi&lt;br /&gt;
teiste inimeste mängude kuvamine.&lt;br /&gt;
&lt;br /&gt;
=== Teise mängija vastu mängimine ===&lt;br /&gt;
&lt;br /&gt;
Teise mängija vastu mängimine käib nagu malemäng, vaheldumisi täpselt samal &amp;quot;laual&amp;quot;: mõlemil on samas järjekorras kaardid ja nad näevad täpselt ühesugust pilti, st kui mõned paarid on leitud, siis pole neid kummalgi näha, kui üks kaart on avatud, on ta seda ka teisel. Esimene mängija avab kaks kaarti, kui nad moodustavad paari, jätkab ta käimist (iga käik avab kaks kaarti), kuni mõni käik ei ole enam paar. Siis läheb käik järgmisele, kes pöörab samuti ümber kaks kaarti, kui sai paari, siis ta jätkab, kui ei, siis jälle käik esimesele jne. Ehk sama asi wikipedia artiklis kirjas niimoodi: In turn each player chooses two cards and turns them face up. If they are of the same rank and color (e.g. 6 of hearts and 6 of diamonds, queen of clubs and queen of spades, or both jokers, if used) then that player wins the pair and plays again. If they are not of the same rank and color, they are turned face down again and play passes to the player on the left. The game ends when the last pair has been picked up. The winner is the person with the most pairs, and there may be a tie for first place.&lt;br /&gt;
&lt;br /&gt;
Pane tähele, et kui üks mängija pöörab kaks kaarti ümber ja nad ei ole paar, siis pööratakse nad tagurpidi, AGA teine mängija peaks nägema, et mis need kaks kaarti siis olid. Ehk teisisõnu, ühe mängija brauser peab läbi serveri teatama teise mängija brauserile, et mis need kaks olid ning teise mängija brauser peab neid siis veidi ajaks kuvama, et ta saaks näha, millised kaardid esimene mängija avas. Põhimõtteliselt saab seda teha ka üksikute kaartide kaupa, st teatada iga üksik ümberpööramine teise mängija brauserile.&lt;br /&gt;
&lt;br /&gt;
Teise mängija vastu mängimiseks on vaja teha järgmisi asju:&lt;br /&gt;
* Pead saama kuulutada välja, et soovid mängida (ehk, serveris kuulutuste faili tegema ja sinna inforea lisama). Kuulutuses tuleks öelda, mis varianti mängust.&lt;br /&gt;
* Pead saama vaadata, kes soovivad mängida ja valida neid mängu.&lt;br /&gt;
* Kui käid, siis sinu käik tuleb serverisse saata, kus see mängufaili talletatakse. Vastane seni käia ei saa.&lt;br /&gt;
* Vastase brauser käib siis kogu aeg serverist ise uurimas, et kas on juba uus käik ilmunud.&lt;br /&gt;
* Kui jah, siis muudetakse temal brauseris olevat seisu, tema saab käia ja tsükkel kordub taas.&lt;br /&gt;
* Kui mäng läbi, salvestatakse info tulemusega serverisse, nagu ka ühe mängijaga mängu korral.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Teise mängija vastu mängimise tehnoloogia peab baseeruma ajaxil ehk serveriga andmevahetusel otse javascriptist (vt selle praksi lehe lõpuosa).&lt;br /&gt;
&lt;br /&gt;
Oktoobri käigus lisandub siia veidi täiendavaid ideid ja soovitusi kõigi nende osade realiseerimiseks.&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;
Esimesed kaks osa (üksi mängides mängude salvestamine serverisse ja seni mängitud mängude tulemuste kuvamine)&lt;br /&gt;
on kohustuslik osa praktikumist ja nende korralik realiseerimine annab 7 punkti. Praktikumi&lt;br /&gt;
ei arvestata, kui nendes osades on suuremad puudujäägid. &lt;br /&gt;
&lt;br /&gt;
Omavahelise mängu realiseerimine (kolmas alamsüsteem) annab lisaks 8 punkti. &lt;br /&gt;
Suuremate puudujääkide korral selles osas on praktikum siiski arvestatud.&lt;br /&gt;
&lt;br /&gt;
Pane tähele, et selles praktikumis on kõigi ülesannete realiseerimiseks vajalik koodihulk väga väike, samas nõuab tõsist pingutust välja mõelda, kuidas kõiki asju täpselt teha ja esitada ja kuidas nad omavahel kokku käivad. Samuti võtab päris päris palju aega katsetamine ja esmatutvus võõra progekeelega.&lt;br /&gt;
&lt;br /&gt;
== Tehnoloogilised nõuded ==&lt;br /&gt;
&lt;br /&gt;
* Kõik serverirakendused tuleb realiseerida [http://www.python.org/ Pythonis].&lt;br /&gt;
* Rakendus peab olema võrgus vabalt brauseriga ligipääsetav, mitte lihtsalt töötama näiteks sinu laptopis.&lt;br /&gt;
* Serverarvutina pead kasutama Dijkstrat, rakenduse failid tuleb kopeerida kataloogidesse public_html/prax3 ja public_html/cgi-bin/prax3&lt;br /&gt;
* Serveris tuleb infot (loe järgmisest peatükist) hoida ühes või mitmes mängutulemuste failis.&lt;br /&gt;
* Kasutada tuleb nimelt lihtsaid inimloetavaid faile, andmebaasimootoreid kasutada ei tohi (andmebaasimootorite jaoks on neljas praks).&lt;br /&gt;
* Loodud veebilehed peavad sisaldama html-i, css-i ja javascripti (pluss pilte), javat ja flashi jne kasutada ei tohi.&lt;br /&gt;
* Teise mängija vastu mängimine peab kasutama ajaxit ehk andmevahetust serveriga otse javascriptist.&lt;br /&gt;
&lt;br /&gt;
Turvaküsimustega ei pea selles praksis tegelema! Seega on täiesti ok, kui mängija &lt;br /&gt;
saab ise anda cgi-le parameetrid näiteks võõra mängu kohta ja sellega teiste&lt;br /&gt;
mängu ära rikkuda, pettusi teha jne. Turvaküsimused oleks selle praksi jaoks&lt;br /&gt;
lihtsalt liiga töö- ja tähelepanumahukad.&lt;br /&gt;
&lt;br /&gt;
Miks just Python? Vaata [http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html Tiobe] progekeelte populaarsuse indeksit (ja lisaks ntx [http://regulargeek.com/2012/02/17/web-and-scripting-programming-language-job-trends-february-2012/ seda]): kõige populaarsemad nn skriptikeeled on (peale Javascripti) PHP ja Python. Kummagi jaoks on meil üks praktikum. PHP ja Python on üksteisest ka väga erinevad (Perl ja PHP on hoopis sarnasemad), seega on nad&lt;br /&gt;
sobivad näited skriptikeelte spektri eri otstest.&lt;br /&gt;
&lt;br /&gt;
== Dijkstra server ==&lt;br /&gt;
&lt;br /&gt;
Rakenduse pead seadma üles dijkstra serveris. Failid pead igal juhul kopeerima dijkstra serveris eelpoolnäidatud kataloogidesse.&lt;br /&gt;
&lt;br /&gt;
Dijktra serverisse ligipääsu, failide laadimise ja linuxi käsureaga hakkamasaamise kohta loe pikemalt [[ITV0110 2. töö: CSS, javascript, veebiserver|teise praktikumi materjalidest]] Dijkstra serveri peatükist, siin neid üle ei korrata.&lt;br /&gt;
&lt;br /&gt;
Oma programmid pane kataloogi &amp;lt;b&amp;gt;public_html/cgi-bin&amp;lt;/b&amp;gt; . Kõigepealt pead selle kataloogi tegema ja talle grupile ligipääsuõiguse andma, analoogiliselt teise praktikumiga.  Mujale pandud programme Apache käima ei pane.&lt;br /&gt;
&lt;br /&gt;
Samuti on sul vaja veidi tutvuda linuxi käsurea elementaarkäskudega (kopeerimine, kustutamine, õiguste muutmine jne). Nagu teises praksis soovitatud, loe selles järjekorras:&lt;br /&gt;
* päris algajatele on hea [http://www.freesoftwaremagazine.com/articles/command_line_intro see leht] (hakatuseks kolm lühikest lehekülge, aga vaata ka &amp;quot;Similar articles&amp;quot; linke lehekülje all),&lt;br /&gt;
* selles praksis peaks piisama [http://www.tuxfiles.org/linuxhelp/linuxcommands.html nendest käskudest],&lt;br /&gt;
* seejärel tasub korra lisaks vaadata [http://www.pixelbeat.org/cmdline.html seda kompaktset kokkuvõtet] erinevatest käskudest (enamust vaja ei lähe)&lt;br /&gt;
* ning lugeda [http://www.funtoo.org/wiki/Linux_Fundamentals,_Part_1 seda väga head ja põhjalikku õpetust] funtoo saidilt (vt ka järgmisi sarja osi lehe lõpust!)&lt;br /&gt;
* või alternatiivina [http://linuxcommand.org/learning_the_shell.php seda põhjalikumat õpetust].&lt;br /&gt;
* Alati tasub lisaks ise googeldada.&lt;br /&gt;
&lt;br /&gt;
== Soovitused programmeerimiseks ==&lt;br /&gt;
&lt;br /&gt;
Kõigepeal tutvu [[pythoni cgi-d dijkstra serveris: kiire sissejuhatus |  cgi programmide kirjutamise esmaste põhimõtetega loengumaterjalidest]] ja sisuliseks arusaamiseks loe cgi loengu materjalide alt teisi materjale lisaks.&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
Kui sa ei ole varem Pythonis cgi-sid programmeerinud, tutvu kõigepealt Pythoni keele ja&lt;br /&gt;
cgi teegiga: &lt;br /&gt;
&lt;br /&gt;
* loe [http://docs.python.org/tutorial/ Pythoni tutoriali] algust (keerulised andmestruktuurid, moodulite ja klasside värgi võid esialgu lugemata jätta)&lt;br /&gt;
* võib-olla parima pythonis cgi programmeerimise kiirtutoriali [http://www.tutorialspoint.com/python/python_cgi_programming.htm leiad siit]&lt;br /&gt;
* see [http://www.cs.virginia.edu/~lab2q/lesson_1/ pythoni cgi tutorial] annab ka pythoni keele jaoks ok sissejuhatuse&lt;br /&gt;
*lLisadetailide jaoks vaata [http://docs.python.org/library/cgi.html cgi teegi õpetust].&lt;br /&gt;
&lt;br /&gt;
Hea mõte on paralleelselt teha lahti Pythoni interpretaator ja katsetada kõrvale asju&lt;br /&gt;
otse Pythoni käsureal. Kui su masinas Pythonit pole, siis installeeri!&lt;br /&gt;
&lt;br /&gt;
Paljud kasulikud asjad on kirjas Pythoni&lt;br /&gt;
[http://docs.python.org/library/index.html#library-index teegi dokumentatsioonis].&lt;br /&gt;
Konkreetsete küsimuste korral aitab tihti googeldamine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NB!&amp;lt;/b&amp;gt; Pythonil on väga palju teeke ja mitmeid mittetriviaalseid keelekonstruktsioone.&lt;br /&gt;
Sul ei lähe rõhuvat enamust nendest vaja, praktikumiks piisab väga esmastest asjadest (listid,&lt;br /&gt;
stringid, numbrid) ning teekidest ei lähe samuti muud vaja, kui failide lugemine/kirjutamine,&lt;br /&gt;
stringioperatsioonid ja cgi. Ära kuluta kohe aega kõigi Pythoni teekide ja detailide uurimisele,&lt;br /&gt;
pigem alusta peale esmast tutvust koodi kirjutamist.&lt;br /&gt;
&lt;br /&gt;
Arvesta, et dijkstra serveris on installeeritud Python 2.7.3, seega väldi Python 3 spetsiifiliste&lt;br /&gt;
asjade kasutamist (vt [http://docs.python.org/py3k/whatsnew/3.0.html erinevusi 2 ja 3 sarja vahel]), &lt;br /&gt;
muidu võib tekkida komplikatsioone programmide viimisel dijkstrasse. Kui sa midagi eriti keerulist&lt;br /&gt;
ei tee, siis ei tohiks 3 sarja programmide ja 2 sarja interpretaatoriga siiski suuremaid probleeme tekkida.&lt;br /&gt;
&lt;br /&gt;
Kirjuta mõni väike näiteprogramm ja katseta serveris, kuhu lõpuks süsteemi üles&lt;br /&gt;
paned (kas siis dijkstra või oma isiklik lemmikserver).&lt;br /&gt;
&lt;br /&gt;
Väga abiks on ka [http://docs.python.org/library/cgitb.html cgitb teegi] kasutamine cgi-de &lt;br /&gt;
mugavamaks debugimiseks: see on väga lihtne, tee seda tingimata.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Vaata kindlasti&amp;lt;/font&amp;gt; [[Kasulikke pythoni näitejuppe cgi jaoks]]. Nendes näidetes toodud konstruktsioonidest ja funktsioonidest peaks kolmanda praksi jaoks piisama.&lt;br /&gt;
&lt;br /&gt;
=== Arendamine oma või arvutiklassi arvutitel ===&lt;br /&gt;
&lt;br /&gt;
Kuna sinu süsteem peab lõpuks töötama avalikul veebiserveril, kuid arendust teed&lt;br /&gt;
oma või arvutiklassi arvutitel, siis kuidas oleks mõistlik tööd korralda?&lt;br /&gt;
&lt;br /&gt;
Peamised variandid on sellised (vaata jällegi lisadetaile  [[ITV0110 2. töö: CSS, javascript, veebiserver|teise praktikumi materjalidest]] Dijkstra serveri peatükist):&lt;br /&gt;
&lt;br /&gt;
* Kirjutad kõik otse serveris, kasutades sisselogimiseks Putty-t (windows) või  ssh-d (linux) ja serveris kasutad redaktoriks näiteks vi-d. Aitab, kui teed lahti mitu akent. Kõige universaalsem viis, aga suhteliset ebamugav, samuti nõuab vi õppimist, mis võtab aega. Võimalik alternatiiv vi-le serveris on nano.&lt;br /&gt;
&lt;br /&gt;
* Kirjutad faile oma masinas redaktoriga, mis lubab üle võrgu faile avada ja sulgeda, windowsis näiteks [http://winscp.net/eng/docs/ui_editor winscp] abil. Katsetamiseks ja testimiseks hoiad lahti sisse logitud aknaid nagu eelmises variandis. See on &amp;lt;b&amp;gt;suhteliselt mugav viis&amp;lt;/b&amp;gt; kui sa ei taha järgmisena kirjeldatud meetodeid - mis veidi pikemas perspektiivis on paremad - kasutada.&lt;br /&gt;
&lt;br /&gt;
* Arendad süsteemi võimalikult lõpuni windowsis valmis ja siis kannad üle serverisse ja teed vajalikke muutusi. Selleks installeeri oma arvutis [http://www.python.org/download/windows/ python windowsile], arvutiklassides peaks see juba olemas olema. Väga abiks oleks seejuures ka veebiserveri installeerimine, näiteks&lt;br /&gt;
** [http://www.editrocket.com/articles/python_apache_windows.html apache saab panna käima windowsile]. &lt;br /&gt;
** Microsofti oma veebiserveri saab panna pythoni cgi-sid käivitama, vt [http://support.microsoft.com/kb/276494 siit] ja [http://www.winservermart.com/HowTo/Install-Python-In-Windows-Server.aspx siit].&lt;br /&gt;
** Mh on ka Pythoni teekide hulgas veebiserver olemas ja kasutatav:  vaata [http://docs.python.org/library/simplehttpserver.html#module-SimpleHTTPServer SimpleHTTPServer] ja [http://docs.python.org/library/cgihttpserver.html cgihttpserver].&lt;br /&gt;
&lt;br /&gt;
* Kui sul on oma arvutis windows ja põhiliselt kasutad seda, siis kõige soovitavam ja pikemas perspektiivis mõistlikum viis on installeerida windowsile lisaks ubuntu linux [http://www.ubuntu.com/desktop/get-ubuntu/windows-installer wubi] installeriga: see installer on täiesti harilik windowsi programm, mille pealepanekul tekib sinu masinasse windowsile lisaks linux. Masinat käivitades pakutakse valikut windowsi ja linuxi vahel. Niimoodi saad enda linuxi käivitada, seal apache käima panna ja arendada kogu asi enne avalikku serverisse kopeerimist valmis oma masinas. NB! Kogu see installeerimine ja süsteemiga tutvumine võtab algul paratamatult rohkem aega, kui ülaltoodud variandid: kaotad ajas lähiperspektiivis, võidad pikemas perspektiivis.&lt;br /&gt;
&lt;br /&gt;
* Ja loomulikult on võimalik kasutada oma masinas mõnda standalone unixt: linuxit, mõnda bsd-d, mac os X vms kas ainsa süsteemina või dual bootina. Kui kirjutad palju ja tihti koodi linuxi serverite jaoks, siis on see tõenäoliselt kõige mõistlikum variant.&lt;br /&gt;
&lt;br /&gt;
=== Python + CGI ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vormidelt saadetud data kasutamiseks on Pythonis tore imporditav moodul nimega cgi, mille funktsioonid aitavad vormiinfot söödavamal kujul sisse võtta. &lt;br /&gt;
&lt;br /&gt;
Looge fail test2.py:&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
 import cgi&lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Content-type: text/html&amp;quot;&lt;br /&gt;
 print&lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;&amp;amp;lt;html&amp;amp;gt;&amp;amp;lt;head&amp;amp;gt;&amp;amp;lt;title&amp;amp;gt;test2.py&amp;amp;lt;/title&amp;amp;gt;&amp;amp;lt;/head&amp;amp;gt;&amp;amp;lt;body&amp;amp;gt;&amp;amp;lt;h1&amp;amp;gt;Hello, World!&amp;amp;lt;/h1&amp;amp;gt;&amp;amp;lt;p&amp;amp;gt;Lisaparameeter oli &amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 formdata = cgi.FieldStorage()&lt;br /&gt;
 if formdata.has_key(&amp;quot;lisaparameeter&amp;quot;):&lt;br /&gt;
   print formdata[&amp;#039;lisaparameeter&amp;#039;].value&lt;br /&gt;
 else:&lt;br /&gt;
   print &amp;quot;puudu&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;.&amp;amp;lt;/p&amp;amp;gt;&amp;amp;lt;/body&amp;amp;gt;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
Vaadake faili brauseris:&amp;lt;br&amp;gt;&lt;br /&gt;
http://dijkstra.cs.ttu.ee/~t0XXX/cgi-bin/test2.py&lt;br /&gt;
&lt;br /&gt;
Parandage faili õigused omaette kirudes, et seda unustati teile teisel korral öelda ja vaadake uuesti.&lt;br /&gt;
&lt;br /&gt;
http://dijkstra.cs.ttu.ee/~t0XXX/cgi-bin/test2.py&lt;br /&gt;
http://dijkstra.cs.ttu.ee/~t0XXX/cgi-bin/test2.py?lisaparameeter=olemas&lt;br /&gt;
&lt;br /&gt;
Tasub vaadata ka  [[Kasulikke pythoni näitejuppe cgi jaoks]].&lt;br /&gt;
&lt;br /&gt;
=== Tegelik koodikirjutamine ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Kõige olulisem soovitus&amp;lt;/b&amp;gt;: alusta ülesande esimesest osast - oma mängu tulemuse salvestamine serverisse - ja tee seejärel&lt;br /&gt;
valmis salvestatud faili lihtne kuvamine brauseris.&lt;br /&gt;
&lt;br /&gt;
Kui see korralikult käib, &lt;br /&gt;
siis täienda esialgset funktsionaalsust vastavalt nõuetele ülal.&lt;br /&gt;
&lt;br /&gt;
Ära hakka korraga palju funktsionaalsust programmeerima: tee üks väike osa juurde, katseta&lt;br /&gt;
läbi ja paranda, ning alles seejärel lisa järgmine tükk funktsionaalsust jne.&lt;br /&gt;
&lt;br /&gt;
Ehk, selles järjekorras:&lt;br /&gt;
* väike katseprogramm a la hello world (võid ta kopeerida ülal viidatud koodinäidetest)&lt;br /&gt;
* oma mängu tulemuse salvestamine serveris olevasse faili&lt;br /&gt;
* tulemusfaili kuvamine&lt;br /&gt;
* vastase vastu mängimine&lt;br /&gt;
* mängufailide kuvamise täiendamine vastasega variandi jaoks&lt;br /&gt;
&lt;br /&gt;
Süsteemis on hulk funktsionaalsust, mis nõuaks justkui hulga erinevate cgi-de tegemist. &lt;br /&gt;
Üks variant süsteemi ehitada ongi teha mitu cgi-d, teine - üldiselt parem - variant on aga teha üks (või paar)&lt;br /&gt;
cgi-d, mis saavad vormidelt ette hidden väljale pandud operatsiooninime &lt;br /&gt;
(a la myprog.cgi?op=storetofile&amp;amp;name=John ...) ja siis kutsuvad välja operatsiooninimele&lt;br /&gt;
vastavat funktsiooni sellessamas cgi-s.&lt;br /&gt;
&lt;br /&gt;
=== HTML tekst programmis või eraldi failides ===&lt;br /&gt;
&lt;br /&gt;
Kuna sinu programm peab kokku panema ja lõpuks välja trükkima hulga html teksti, tekib küsimus, et kuidas seda paremini teha. Üldiselt on siin järgmised erinevad viisid või põhimõtted:&lt;br /&gt;
* Kõige lihtsam ja väga väikeste programmide korral kõige mugavam on panna html teksti jupid otse programmi muutujate väärtusteks umbes nii (näide on väga lihtsustatud, praktikas oleks juppe ja muutujaid rohkem):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
mymove=2&lt;br /&gt;
yourmove=1&lt;br /&gt;
header=&amp;quot;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
html1=&amp;quot;minu käik on &amp;quot;&lt;br /&gt;
html2=&amp;quot; ja sinu käik on &amp;quot;&lt;br /&gt;
footer=&amp;quot;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;&lt;br /&gt;
res=header+html1+str(mymove)+html2+str(yourmove)+footer&lt;br /&gt;
print res&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Kui htmli on rohkem ja programm veidi keerulisem, siis on vastupidi, praktilisem mitte panna kõiki htmli juppe programmi sisse, vaid lugeda html tekst eraldi failist ja siis asendada hulga lõike/juppe hetkel vajalikuks. Asendamiseks mõtle lihtsalt välja endale meeldivad marker-tekstijupid, mida htmlis mujal ei esine, ja tee stringiasendusi. Näiteks, kui su html on failis kpktemplate.html ja oled sinna pannud markerid {mymove} ja {yourmove} siis näeks kasutus välja umbes nii:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
mymove=2&lt;br /&gt;
yourmove=1&lt;br /&gt;
f=open(&amp;#039;kpktemplate.html&amp;#039;,&amp;#039;r&amp;#039;)&lt;br /&gt;
template=f.read()&lt;br /&gt;
f.close()&lt;br /&gt;
template=template.replace(&amp;quot;{mymove}&amp;quot;,str(mymove))&lt;br /&gt;
template=template.replace(&amp;quot;{yourmove}&amp;quot;,str(yourmove))&lt;br /&gt;
print template&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Sellise lihtsa stringiasenduse asemel võib kasutada pythonisse sisse ehitatud eraldi templatefunktsioone või ka keerulisemaid ja vägevamaid väliseid templateteeke (mako jms), mis teevad suurtes kogustes asendamisi efektiivsemalt ja mugavamalt ja lubavad template sisse programmijuppe kirjutada. Meie väikese praksiülesande jaoks oleks need vägevamad templatesüsteemid aga pigem overkill, st saadud lisamugavused asenduste tegemiseks tõenäoliselt ei kaaluks üles ajakulu/pingutust nende süsteemide uurimisele.&lt;br /&gt;
&lt;br /&gt;
=== Andmete esitamine ja kasutamine serveris ===&lt;br /&gt;
&lt;br /&gt;
Info salvestamise failid on soovitav luua õigustega, kus kõik võivad faili lugeda ja kirjutada. See on turvalisuse mõttes halb, aga arendamise/debugimise mõttes hea. Siis saad ligi ise ja saavad ligi sinu programmid. Käsurealt saad teha nii:&lt;br /&gt;
&lt;br /&gt;
     chmod a+rw myfile.txt&lt;br /&gt;
&lt;br /&gt;
Täiesti võimalik on olukord, kus Apache poolt käivitatav cgi programm ei ole nõus sinu kataloogis uusi faile tegema: siis tuleks kas muuta oma kataloogi õigusi kõigile loetavaks/kirjutatavaks või teha failid&lt;br /&gt;
mõnda kataloogi, kus apachel on õigused (ntx /tmp, kuid siis tuleks nende nimele panna ntx sufiksiks sinu matriklinumber, et teistega segi ei läheks) või teha hoopis nii, et kõigi mängude info pannakse ühte suurde faili kokku: sel juhul pead töö käigus hakkama failist tükke otsima ja faili vahele kirjutama jne, mis on selgelt ebamugavam, kui teha iga mängu jaoks eraldi fail. Samas ei pea sinu programmid siis üldse uusi faile tegema.&lt;br /&gt;
&lt;br /&gt;
Failile kirje lisamiseks võid kirjutada uue kirje lihtsalt faili lõppu uueks reaks. Vanu&lt;br /&gt;
kirjeid pole kunagi vaja muuta!&lt;br /&gt;
&lt;br /&gt;
Igale kirjele võib panna lisaväljana (ntx esimeseks) kaasa kirje loomise aeg.&lt;br /&gt;
&lt;br /&gt;
Faili lugemisel on üldiselt hea mõte kasutada &lt;br /&gt;
[http://docs.python.org/tutorial/inputoutput.html#reading-and-writing-files f.readline()]&lt;br /&gt;
funktsiooni, võid soovi korral kasutada ka &lt;br /&gt;
[http://docs.python.org/library/csv.html csv] teeki, mille abil faili tabeliks lahti hakkimine&lt;br /&gt;
nõuab veidi vähem koodikirjutamist (aga mitte tingimata palju vähem sinu aega).&lt;br /&gt;
&lt;br /&gt;
Aja määramisel on sul kõige praktilisem kasutada time.time() funktsiooni (otsi see&lt;br /&gt;
[http://docs.python.org/library/time.html mahukast ajateegist] välja: see annab lihtsalt&lt;br /&gt;
aja ühe numbrina, sekundites peale aastat 1970 vms. Selle numbri saad siis lihtsalt faili&lt;br /&gt;
kirjutada, kui tahad aega salvestada. Lugemisel on seda samuti lihtne võrrelda (ja liita/lahutada) hetkeajaga. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NB!&amp;lt;/b&amp;gt; Ära hakka jändama keerukate aasta/minuti/ajatsooni jne jne meetoditega: need&lt;br /&gt;
on keerulised, nende uurimine võtab hulga aega ja praksis neid vaja ei lähe (mis ei tähenda,&lt;br /&gt;
et huvi korral ei võiks neid uurida :).&lt;br /&gt;
&lt;br /&gt;
Stringi muutmine numbriks on lihtne (int(&amp;quot;12&amp;quot;) või float(&amp;quot;12&amp;quot;)) ning samamoodi on lihtne&lt;br /&gt;
numbri muutmine stringiks (string(12) või string(12.5)).&lt;br /&gt;
&lt;br /&gt;
=== Vastane: tema leidmine, tema käigu ootamine jms ===&lt;br /&gt;
&lt;br /&gt;
Selle osa lahendamiseks tuleks - tehnoloogia mõttes - kasutada ajaxit ehk andmete saatmist serverile ja sealt lugemist otse javascriptist.&lt;br /&gt;
&lt;br /&gt;
Seletused, ideed ja soovitused lisanduvad selle osa kohta loengute ja praktikumide käigus.&lt;br /&gt;
&lt;br /&gt;
* Loe seotud tehnoloogiatest: [http://en.wikipedia.org/wiki/Ajax_%28programming%29 wikipedia ajax], [http://en.wikipedia.org/wiki/XMLHttpRequest wikipedia xmlhttprequest], [http://en.wikipedia.org/wiki/JSON wikipedia json]&lt;br /&gt;
* [[xmlhttprequest ja jsonile rakendatud eval näited]]&lt;br /&gt;
&lt;br /&gt;
== Eelmise aasta versioon ==&lt;br /&gt;
&lt;br /&gt;
Eelmise aasta versiooni, mis on mitmes osas sarnane, kuid mitmes osas erinev, [[ITV0110 3. töö: Lihtne serverirakendus: vormid ja cgi|leiad siit]].&lt;/div&gt;</summary>
		<author><name>Martinv</name></author>
	</entry>
</feed>