<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="http://www.tahvel.info/lib/exe/css.php?s=feed" type="text/css"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Andrise prgrammeerimisalane WIKI google_app_engine</title>
    <subtitle></subtitle>
    <link rel="alternate" type="text/html" href="http://www.tahvel.info/"/>
    <id>http://www.tahvel.info/</id>
    <updated>2012-05-19T21:14:59+03:00</updated>
    <generator>FeedCreator 1.7.2-ppt DokuWiki</generator>
<link rel="self" type="application/atom+xml" href="http://www.tahvel.info/feed.php" />
    <entry>
        <title>google_app_engine:abiteekide_laadimine</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:abiteekide_laadimine?rev=1266754328&amp;do=diff"/>
        <published>2010-02-21T14:12:08+03:00</published>
        <updated>2010-02-21T14:12:08+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:abiteekide_laadimine?rev=1266754328&amp;do=diff</id>
        <summary>Sarnaselt keelega PHP ei ole vaja Pythonis panna kogu kasutatavat programmikoodi ühte faili - täiendavad ja abistavad teegid saab vastavate lausetega teistest failidest programmikoodi sisse laadida. Kui PHP's on selle jaoks käsklus include, siis Pyhtonis on selle asemel import.</summary>
    </entry>
    <entry>
        <title>google_app_engine:app_yaml</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:app_yaml?rev=1266753031&amp;do=diff"/>
        <published>2010-02-21T13:50:31+03:00</published>
        <updated>2010-02-21T13:50:31+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:app_yaml?rev=1266753031&amp;do=diff</id>
        <summary>Ülesehitus

Kõige olulisem fail mis määrab ära aplikatsiooni tegevuse, on app.yaml - selles failis on kirjas kõik tegevused, mida server mingile päringule vastab. Näiteks kui avatakse aadress domeen.appspot.com/abitekst, siis app.yaml teab, et /abitekst päringu peale tuleb käivitada fail abi.py, kui aga tuleb päring /tellimused, siis hoopis main.py.</summary>
    </entry>
    <entry>
        <title>google_app_engine:bigtable_andmetueuebid</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:bigtable_andmetueuebid?rev=1267011231&amp;do=diff"/>
        <published>2010-02-24T13:33:51+03:00</published>
        <updated>2010-02-24T13:33:51+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:bigtable_andmetueuebid?rev=1267011231&amp;do=diff</id>
        <summary>Property klass

Andmebaasitabeli mudeli defineerimisel tuleb igale väljale määrata kindel tüüp, mislaadi infot selles väljas hoida saab. Tüübist sõltub, kuidas andmebaas selle väärtusega ringi käib. Kas näiteks seda väärtust saab indekseerida või kui suurt väärtust saab üldse mahutada.</summary>
    </entry>
    <entry>
        <title>google_app_engine:bigtable_indeksid</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:bigtable_indeksid?rev=1267119029&amp;do=diff"/>
        <published>2010-02-25T19:30:29+03:00</published>
        <updated>2010-02-25T19:30:29+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:bigtable_indeksid?rev=1267119029&amp;do=diff</id>
        <summary>Google App Engine andmebaasis tehakse kõik andmete päringud indeksite alusel, seega tuleb kõik päringud eelnevalt indekseerida. Lihtsamad indeksid lisab Google App Engine ise, see tähendab, et Google App Engine järjestab kõik lihtväljad (näiteks numbrite puhul järjekorras, suuremad eespool jne).</summary>
    </entry>
    <entry>
        <title>google_app_engine:bigtable_kasutamine</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:bigtable_kasutamine?rev=1267437409&amp;do=diff"/>
        <published>2010-03-01T11:56:49+03:00</published>
        <updated>2010-03-01T11:56:49+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:bigtable_kasutamine?rev=1267437409&amp;do=diff</id>
        <summary>Andmebaasiteenuse kasutamiseks tuleb laadida vastavast teegist andmebaasiobjekt db - selle objekti läbi saabki teha kõiki andmebaasi operatsioone.

from google.appengine.ext import db

Tabelite defineerimine

Järgmisena tuleks defineerida andmebaasitabelite mudelid. Mudelite defineerimine käib klasside loomise läbi. Klassi omadused saavadki seeläbi tabeli väljadeks. Kui PHP ja MySQL puhul ollakse harjunud selle jaoks kasutama mõnd tööriista nagu phpMyAdmin, siis Google App Engine puhul pole vaja…</summary>
    </entry>
    <entry>
        <title>google_app_engine:bigtable_query</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:bigtable_query?rev=1267117119&amp;do=diff"/>
        <published>2010-02-25T18:58:39+03:00</published>
        <updated>2010-02-25T18:58:39+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:bigtable_query?rev=1267117119&amp;do=diff</id>
        <summary>Google App Engine andmebaas laseb päringuid läbi viia kahel viisil - päringuliidese abil ning SQL laadse GQL (Google Query Language) lausetega.

Päringuliides

Päringuliides võimaldab andmebaasiobjekti meetodite abil määrata millistele tingimustele päring vastama peab, - kuidas peab see olema sorteeritud ning mida objektiga edasi teha saab jne. Tegun on suuresti millegi Active record pattern laadsega, kus andmebaasiga saab suhelda ilma SQL lauseid kirjutamata.</summary>
    </entry>
    <entry>
        <title>google_app_engine:bigtable_transaktsioonid</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:bigtable_transaktsioonid?rev=1267127757&amp;do=diff"/>
        <published>2010-02-25T21:55:57+03:00</published>
        <updated>2010-02-25T21:55:57+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:bigtable_transaktsioonid?rev=1267127757&amp;do=diff</id>
        <summary>Transaktsioonid on päringute grupid, mis kas õnnestuvad täielikult või kukuvad kõik läbi. Kui mingi päring ebaõnnestub (andmebaasis tekib viga, olgu selleks ajalimiidi ületamine vms.), siis võetakse tagasi kõik senini transaktsiooni käigus tehtud päringud. Nii ei jää andmebaasi ripakile poolikuid elemente.</summary>
    </entry>
    <entry>
        <title>google_app_engine:bigtable_tutvustus</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:bigtable_tutvustus?rev=1267437342&amp;do=diff"/>
        <published>2010-03-01T11:55:42+03:00</published>
        <updated>2010-03-01T11:55:42+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:bigtable_tutvustus?rev=1267437342&amp;do=diff</id>
        <summary>Google App Engine ei kasuta ühtegi „tavakäibes“ olevat andmebaasi nagu näiteks MySQL, MSSQL või Oracle, vaid selle asemel on kasutusel Google poolt välja töötatud mitte-relatsiooniline andmebaas BigTable. Andmete salvestamiseks pole võimalik alternatiivina kasutada isegi tekstifaile - Google App Engine on keelanud aplikatsioonidele kettale kirjutamise õigused - ning seega tuleb absoluutselt kõik püsiv info (ajutise info jaoks saab kasutada ka näiteks memcache teeki) teenuse poolt võimaldatud and…</summary>
    </entry>
    <entry>
        <title>google_app_engine:cron</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:cron?rev=1266753351&amp;do=diff"/>
        <published>2010-02-21T13:55:51+03:00</published>
        <updated>2010-02-21T13:55:51+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:cron?rev=1266753351&amp;do=diff</id>
        <summary>Google App Engine võimaldab seada perioodilisi töid (cron), mis käivitavad etteantud programmi ettemääratud intervalli järel. Näiteks saab määrata, et URL /tasks käivitub automaatselt igal keskööl või igal esmaspäeval kell kolm.

Perioodiliste tööde määramiseks tuleb need tööd kirjeldada ära failis cron.yaml, mis asub samas kataloogis kus app.yaml failgi. Alguses projektis cron.yaml faili ei eksisteeri, vajadusel tuleb see ise luua.</summary>
    </entry>
    <entry>
        <title>google_app_engine:django_filtrid</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:django_filtrid?rev=1267437186&amp;do=diff"/>
        <published>2010-03-01T11:53:06+03:00</published>
        <updated>2010-03-01T11:53:06+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:django_filtrid?rev=1267437186&amp;do=diff</id>
        <summary>Muutujate kasutamisel saab neile rakendada ka erinevaid filtreid, näiteks saab sundida kõik tähed suurtähetedeks, hoolimata nende algsest vormist. Filtrite rakendamine muutujatele käib läbi | sümboli.

{{pealkiri|upper}}

Filtreid saab ka liita, sellisel juhul on kõik filtrid eraldatud teistest samuti | sümboliga. Filtreid hakatakse rakendama vasakult paremale.</summary>
    </entry>
    <entry>
        <title>google_app_engine:django_muutujad</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:django_muutujad?rev=1266756574&amp;do=diff"/>
        <published>2010-02-21T14:49:34+03:00</published>
        <updated>2010-02-21T14:49:34+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:django_muutujad?rev=1266756574&amp;do=diff</id>
        <summary>Muutujaid saab lehele manada kahekordsete loogeliste sulgudega - nende vahel olevat teksti käsitletakse sisendparameetrina saadud massiivi elemendi võtmena ja väljundis asendataksegi selline märgend antud elemendi väärtusega.

{{pealkiri}}

Juhul kui elemendi väärtuseks on samuti assotsiatiivne massiiv (näiteks {&quot;objekt&quot;: {&quot;pealkiri&quot;: &quot;Minu koduleht&quot;}}) või mõni objekt, saab muutuja nimena kasutada punktidega ühendatud ketti.</summary>
    </entry>
    <entry>
        <title>google_app_engine:django_naide</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:django_naide?rev=1266757568&amp;do=diff"/>
        <published>2010-02-21T15:06:08+03:00</published>
        <updated>2010-02-21T15:06:08+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:django_naide?rev=1266757568&amp;do=diff</id>
        <summary>Antud näites defineerime ära templiidifaili, mis sisaldab endas HTML ja Django lehemalli koodi ning pythoni faili, mis seda lehemalli kasutada oskab.

Esiteks Django templiidifail osalejad.tpl, mis asub kataloogis views:

&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;Osalejad üritusel {{ nimi }}&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h1&gt;Osalejate nimekiri üritusel {{ nimi }}.&lt;/h1&gt;
    {% if osalejad %}
      &lt;ul&gt;
      {% for osaleja in osalejad %}
        &lt;li&gt;Nr {{forloop.counter}}, {{osaleja}}&lt;/li&gt;
      {% endfor %}
 …</summary>
    </entry>
    <entry>
        <title>google_app_engine:django_parilikkus</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:django_parilikkus?rev=1266757356&amp;do=diff"/>
        <published>2010-02-21T15:02:36+03:00</published>
        <updated>2010-02-21T15:02:36+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:django_parilikkus?rev=1266757356&amp;do=diff</id>
        <summary>Lehemalle saab ka üksteisest sõltuma panna. Näiteks saab teha ühe peamise lehemalli, mis defineerib ära lehekülje üldise struktuuri, laeb sisse kõik vajalikud CSS ja JavaScript failid ning paneb paika elementide paigutuse (kus asub menüü, kus pealkiri jne) üle terve veebilehe. Seejärel aga saab teha terve hulga erinevaid teema-malle, mis määravad ära ainult konkreetse bloki sisu põhilehel.</summary>
    </entry>
    <entry>
        <title>google_app_engine:django_tingimuslaused</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:django_tingimuslaused?rev=1267437210&amp;do=diff"/>
        <published>2010-03-01T11:53:30+03:00</published>
        <updated>2010-03-01T11:53:30+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:django_tingimuslaused?rev=1267437210&amp;do=diff</id>
        <summary>Samuti nagu Pythoni skriptides, saab ka lehemallides kasutada tingimuslauseid. Kasutatavad tingimused on siiski tunduvalt lihtsamad kui päris programmis, võrrelda saab ainult kas konkreetne väärtus eksisteerib või on võrdne kindla väärtusega. Selle jaoks on kasutatavad tingimuslaused IF ning IFEQUAL.</summary>
    </entry>
    <entry>
        <title>google_app_engine:django_tsueklid</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:django_tsueklid?rev=1266757115&amp;do=diff"/>
        <published>2010-02-21T14:58:35+03:00</published>
        <updated>2010-02-21T14:58:35+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:django_tsueklid?rev=1266757115&amp;do=diff</id>
        <summary>Tsüklid on realiseeritud sarnaselt Pythoniga võtmesõnaga FOR. Tsükkel käib läbi massiivi ning omistab iga iteratsiooni käigus järgmise massiivi väärtuse elemendile.

{% for element in massiiv %}
&lt;p&gt;Elemendi väärtus: {{element}}&lt;/p&gt;
{% endfor %}</summary>
    </entry>
    <entry>
        <title>google_app_engine:django_tutvustus</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:django_tutvustus?rev=1267437117&amp;do=diff"/>
        <published>2010-03-01T11:51:57+03:00</published>
        <updated>2010-03-01T11:51:57+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:django_tutvustus?rev=1267437117&amp;do=diff</id>
        <summary>Google App Engine sisaldab endas Django 0.96 lehemallide tuge. Lehemallide kasutamiseks tuleb täiendavalt laadida järgmised teegid

import os
from google.appengine.ext.webapp import template

Teek nimega os ei ole otseselt lehemallidega seotud, kuid sisaldab endas failide haldamise funktsionaalsust, mida on vaja lehemallide mootorile lehemallifailide etteandmiseks. Django moodul template sisaldab endas kõike vajalikku lehemallide kasutamiseks.</summary>
    </entry>
    <entry>
        <title>google_app_engine:domeen</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:domeen?rev=1267367831&amp;do=diff"/>
        <published>2010-02-28T16:37:11+03:00</published>
        <updated>2010-02-28T16:37:11+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:domeen?rev=1267367831&amp;do=diff</id>
        <summary>Kui aplikatsioon on juba piisavalt suur, siis tõenäoliselt tekib soob vahetada app_id.appspot.com stiilis domeen millegi käepärasema vastu, näiteks www.minudomeen.ee vms. Google App Engine võimaldab seda õnneks vabalt teha ja seda isegi tasuta paketi korral. Oma domeeni kasutamiseks tuleb see domeen registreerida Google Apps teenuses. Google Apps Standard versioon on kasutamiseks tasuta ning lisaks muule sisaldab see ka väga head e-posti serverit, mis põhineb GMail teenusel.</summary>
    </entry>
    <entry>
        <title>google_app_engine:images</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:images?rev=1267362483&amp;do=diff"/>
        <published>2010-02-28T15:08:03+03:00</published>
        <updated>2010-02-28T15:08:03+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:images?rev=1267362483&amp;do=diff</id>
        <summary>Pildifaile on võimalik redigeerida suhteliselt piiratud ulatuses. Saab muuta faili tüüpi, suurust, pilti lõigata ja pöörata. Samuti saab kasutada automaagilist funktsiooni värvide sättimiseks, kuid käsitsi värve ega muud sättida ei saa. Piltide redigeerimiseks tuleb sisse laadida images teek.</summary>
    </entry>
    <entry>
        <title>google_app_engine:keele_struktuurid</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:keele_struktuurid?rev=1267437062&amp;do=diff"/>
        <published>2010-03-01T11:51:02+03:00</published>
        <updated>2010-03-01T11:51:02+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:keele_struktuurid?rev=1267437062&amp;do=diff</id>
        <summary>Muutujad ja andmetüübid

Muutujad esitatakse nende nimelisel kujul ilma igasuguste prefiksiteta. Kui PHP's kirjeldatakse muutujaid kujul $nimi ja PERL'is on näiteks massiivid kujul %nimi, siis Pythonis piisab kõikide muutujate kirjeldamiseks kujust nimi.</summary>
    </entry>
    <entry>
        <title>google_app_engine:koos</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:koos?rev=1267435328&amp;do=diff"/>
        <published>2010-03-01T11:22:08+03:00</published>
        <updated>2010-03-01T11:22:08+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:koos?rev=1267435328&amp;do=diff</id>
        <summary>© Andris Reinman, 2010

Tutvustus

Google App Engine on Google infrastruktuuril põhinev veebiaplikatsioonide platvorm. Tegu on pilveteenusega, kus andmed asuvad serverite „pilves,“ võimaldades vajaduste saabudes kasutada aina rohkem ja rohkem ressursse. Sellise infrastruktuuriga teenused on väga suures ulatuses skaleeruvad, kuna kui ressursse puudu jääb, saab neid „lennult“ juurde haarata. Tavalise serveri puhul saab ressursse kasutada vaid konkreetse serveri limiitide raames ning kui nendest ei…</summary>
    </entry>
    <entry>
        <title>google_app_engine:lisa1</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:lisa1?rev=1267435303&amp;do=diff"/>
        <published>2010-03-01T11:21:43+03:00</published>
        <updated>2010-03-01T11:21:43+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:lisa1?rev=1267435303&amp;do=diff</id>
        <summary>Selles artiklis vaatame, kuidas käib Google App Engine SDK-ga kaasas oleva Hello World rakenduse ülesseadmine alates selle loomisest kuni brauseris tulemuse nägemiseni. Programmikoodi see artikkel ei puuduta - juttu on ainult vaikimisi kaasas oleva näiteprogrammi käima saamisest.</summary>
    </entry>
    <entry>
        <title>google_app_engine:mail</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:mail?rev=1267370403&amp;do=diff"/>
        <published>2010-02-28T17:20:03+03:00</published>
        <updated>2010-02-28T17:20:03+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:mail?rev=1267370403&amp;do=diff</id>
        <summary>Google App Engine võimaldab nii e-posti saatmist kui ka vastuvõtmist. Vastuvõtmiseks tuleb registreerida vastav kuular, millele suunatakse kõik tingimusele vastavad kirjad (eri aadressidele laekuvad kirjad saab suunata eri kuularile). Nii saatmine kui vastuvõtmine on tehtud programmeerija jaoks väga mugavaks - pole vaja midagi teada e-kirja tehnilisest ülesehitusest ja muust sellisest, e-kiri on Google App Engine aplikatsiooni jaoks lihtsalt järjekordne kindlate omadustega objekt.</summary>
    </entry>
    <entry>
        <title>google_app_engine:memcache</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:memcache?rev=1267135193&amp;do=diff"/>
        <published>2010-02-25T23:59:53+03:00</published>
        <updated>2010-02-25T23:59:53+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:memcache?rev=1267135193&amp;do=diff</id>
        <summary>Memcached on andmete puhverdamise süsteem, mis pakub võimalust hoida aplikatsioonidel puhverdatavaid andmeid sessioonide vahel mälus. Näiteks kui laetakse andmebaasist mingeid andmeid, siis on mugav säilitada neid järgmiste lehe vaatajate jaoks juba mälus - nii pole vaja kalleid andmebaasipäringuid nende andmete kehtivusaja jooksul teha.</summary>
    </entry>
    <entry>
        <title>google_app_engine:paigaldus</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:paigaldus?rev=1267436832&amp;do=diff"/>
        <published>2010-03-01T11:47:12+03:00</published>
        <updated>2010-03-01T11:47:12+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:paigaldus?rev=1267436832&amp;do=diff</id>
        <summary>Google App Engine kasutamiseks on vaja paigaldada arvutisse vastav tarkvara arenduspakett (SDK), mille saab alla laadida Google App Engine kodulehelt [&lt;http://code.google.com/intl/et/appengine/downloads.html]&gt;. Valida on kolme versiooni vahel, millest igaüks on mõeldud eri platvormi jaoks.</summary>
    </entry>
    <entry>
        <title>google_app_engine:platvorm</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:platvorm?rev=1267436809&amp;do=diff"/>
        <published>2010-03-01T11:46:49+03:00</published>
        <updated>2010-03-01T11:46:49+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:platvorm?rev=1267436809&amp;do=diff</id>
        <summary>Google App Engine erineb teistest pilveteenuste pakkujatest (näiteks Amazon AWS teenused) selle poolest, et pakub mitte üldist laadi majutust, vaid kindlaksmääratud platvormil aplikatsioonide majutust. Kogu arveldamine käibki aplikatsioonide järgi - igal aplikatsioonil on kasutada teatud arv ressursse ning ka maksta tuleb vastavalt konkreetse aplikatsiooni ressursikasutuse järgi, mitte kuidagi üldisemalt, näiteks aplikatsiooni omaniku poolt ressursside üldkasutuse järgi.</summary>
    </entry>
    <entry>
        <title>google_app_engine:programmi_struktuur</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:programmi_struktuur?rev=1266754145&amp;do=diff"/>
        <published>2010-02-21T14:09:05+03:00</published>
        <updated>2010-02-21T14:09:05+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:programmi_struktuur?rev=1266754145&amp;do=diff</id>
        <summary>Kui PHP puhul asub skript HTML või mõne muu väljundfaili sees - PHP koodiblokid tuleb muu väljundi vahel spetsiaalselt tähistada &lt;?php ja ?&gt; märgenditega - siis Pythoni skriptid on struktureeritud sarnased PERL keelele, kus terve fail ongi skriptifail ning koodiblokkide ja muu väljundi vahel PHP'le sarnast vahet teha ei saa. Juhul kui on soov midagi väljastada, tuleb teha seda näiteks print käsuga.</summary>
    </entry>
    <entry>
        <title>google_app_engine:python_tutvustus</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:python_tutvustus?rev=1266753911&amp;do=diff"/>
        <published>2010-02-21T14:05:11+03:00</published>
        <updated>2010-02-21T14:05:11+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:python_tutvustus?rev=1266753911&amp;do=diff</id>
        <summary>Pythoni lõi kaheksakümnendate lõpul Guido van Rossum, kes on senimaani keele arengu peamiseks vedajaks. Google App Engine kasutab programmeerimiskeele Python versiooni 2.5 - kõik platvormile kirjutavad skriptid peavad seega olema antud versiooniga ühilduvad. Mainitud on, et tulevikus võib tekkida ka Python 3 tugi, kuid hetkel tuleb piirduda vaid olemasoleva versiooniga.</summary>
    </entry>
    <entry>
        <title>google_app_engine:rakendus</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:rakendus?rev=1267435242&amp;do=diff"/>
        <published>2010-03-01T11:20:42+03:00</published>
        <updated>2010-03-01T11:20:42+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:rakendus?rev=1267435242&amp;do=diff</id>
        <summary>Kogu teema kokkuvõtteks koostame siinkohal lihtsa näidisrakenduse, mis asub Google App Engine platvormil ja kasutab ära mitmeid Google App Engine võimalusi nagu näiteks andmebaas, memcache ja e-postide saatmine. Tegu on lihtsa külalisteraamatuga, mis oma kirjeid hoiab Google App Engine andmebaasis, kirjutajaid autendib Google Konto abil ning teatab igast lisandunud kirjest aplikatsiooni omanikku e-posti teel.</summary>
    </entry>
    <entry>
        <title>google_app_engine:registreerimine</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:registreerimine?rev=1267131755&amp;do=diff"/>
        <published>2010-02-25T23:02:35+03:00</published>
        <updated>2010-02-25T23:02:35+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:registreerimine?rev=1267131755&amp;do=diff</id>
        <summary>Kõik GAE aplikatsioonid tuleb reaalseks kasutamiseks registreerida &lt;http://www.appspot.com/&gt; teenuse lehel. Peale registreerimist eraldatakse aplikatsioonile vajalik serveripind ning domeeninimi kujul aplikatsiooni_id.appspot.com. Enne aplikatsiooni registreerimist tuleb aktiveerida endale appspot.com konto, mida saab teha lihtsalt lehte külastades. Valmis peab olema mobiiltelefon, kuna kasutaja tuvastamine käib nimelt SMS teel (appspot.com saadab sisestatud mobiilinumbrile aktiveerimiskoodiga S…</summary>
    </entry>
    <entry>
        <title>google_app_engine:sdk_kasud</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:sdk_kasud?rev=1266844934&amp;do=diff"/>
        <published>2010-02-22T15:22:14+03:00</published>
        <updated>2010-02-22T15:22:14+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:sdk_kasud?rev=1266844934&amp;do=diff</id>
        <summary>Run - Aplikatsiooni käivitamine GAE emulaatoris (lokaalne veebiserver)

Linuxis asendab käsklus dev_appserver.py aplikatsiooni_kaust



Stop - Lokaalse veebiserveri töö lõpetamine

Linuxis tuleb sulgeda programm dev_appserver.py (klahvikombinatsioon ctrl+z)</summary>
    </entry>
    <entry>
        <title>google_app_engine:service_users</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:service_users?rev=1267131796&amp;do=diff"/>
        <published>2010-02-25T23:03:16+03:00</published>
        <updated>2010-02-25T23:03:16+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:service_users?rev=1267131796&amp;do=diff</id>
        <summary>Google App Engine pakub arendajatele mugavat kasutajate haldust - Google Accounts süsteemi läbi, nii ei ole vaja ise kogu vajalikku infrastruktuuri üleval pidada ja saab kohe aplikatsiooni põhifunktsionaalsust arendama hakata. Sama kasutajanime ja parooliga millega siseneb kasutaja näiteks oma GMail postkasti või kirjutab Blogger teenuses blogpostitusi, saab ta sisse logida ka suvalisse Google App Engine platvormil paiknevasse aplikatsiooni.</summary>
    </entry>
    <entry>
        <title>google_app_engine:sms_bulletin_board</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:sms_bulletin_board?rev=1268913443&amp;do=diff"/>
        <published>2010-03-18T13:57:23+03:00</published>
        <updated>2010-03-18T13:57:23+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:sms_bulletin_board?rev=1268913443&amp;do=diff</id>
        <summary>SMS Bulletin Board on lihtne rakendus Google App Engine platvormil, mis oskab võtta vastu Fortumo Dünaamilise SMS-teenuse sõnumeid. Rakendus võtab saadetud sõnumid vastu, salvestab need andmebaasis ning kuvab esilehel kuni 100 viimasena laekunud sõnumit.</summary>
    </entry>
    <entry>
        <title>google_app_engine:tasks</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:tasks?rev=1267364678&amp;do=diff"/>
        <published>2010-02-28T15:44:38+03:00</published>
        <updated>2010-02-28T15:44:38+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:tasks?rev=1267364678&amp;do=diff</id>
        <summary>Tegumid on väiksed ülesanded, mis antakse serverile täitmiseks. Sisuliselt on tegu midagi perioodiliste tööde laadsega, selle vahega et kui perioodilisi töid tehakse perioodiliselt, siis tegumid käivitatakse nii kiiresti, kui hetke võimalused lubavad. Mõlemal juhul teeb server kindlaksmääratud skripti vastu päringu, mis selle skripti käivitab.</summary>
    </entry>
    <entry>
        <title>google_app_engine:tasuline</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:tasuline?rev=1267436722&amp;do=diff"/>
        <published>2010-03-01T11:45:22+03:00</published>
        <updated>2010-03-01T11:45:22+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:tasuline?rev=1267436722&amp;do=diff</id>
        <summary>Juhul kui aplikatsioon on kasvanud nii mahult kui külastatavauselt juba üsnagi tõsiseltvõetavaks, tasuks kaaluda tasuta versioonilt üleminekut tasulisele versioonile. Esimese hooga sellega mingeid kulutusi ei kaasnegi - tuleb lihtsalt määrata maksimaalne päeva limiit, milleks vaikimisi on $2. Limiidi saab ära jagada erinevate osade vahel, seega kui näiteks sisenev andmemaht saab ületatud, siis muid ressursse see ei puuduta ning need jäävad endiselt kättesaadavaks.</summary>
    </entry>
    <entry>
        <title>google_app_engine:tutvustus</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:tutvustus?rev=1267436784&amp;do=diff"/>
        <published>2010-03-01T11:46:24+03:00</published>
        <updated>2010-03-01T11:46:24+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:tutvustus?rev=1267436784&amp;do=diff</id>
        <summary>Google App Engine on Google infrastruktuuril põhinev veebiaplikatsioonide platvorm. Tegu on pilveteenusega, kus andmed asuvad serverite „pilves,“ võimaldades vajaduste saabudes kasutada aina rohkem ja rohkem ressursse. Sellise infrastruktuuriga teenused on väga suures ulatuses skaleeruvad, kuna kui ressursse puudu jääb, saab neid „lennult“ juurde haarata. Tavalise serveri puhul saab ressursse kasutada vaid konkreetse serveri limiitide raames ning kui nendest ei jätku, tuleb kas serveri riistvara…</summary>
    </entry>
    <entry>
        <title>google_app_engine:urlfetch</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:urlfetch?rev=1267358912&amp;do=diff"/>
        <published>2010-02-28T14:08:32+03:00</published>
        <updated>2010-02-28T14:08:32+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:urlfetch?rev=1267358912&amp;do=diff</id>
        <summary>Veebiaadressidelt sisu laadimiseks on kasutusel Google App Engine spetsiifiline teek urlfetch

from google.appengine.api import urlfetch

Tugi on ka olemas teiste sarnaste Pythoni teekide jaoks nagu näiteks urllib või urllib2 kuid nende meetodid veebist sisu laadimiseks on tegelikult asendatud taustal urlfetch teegi meetoditega - kõik andmete laadimised Google infrastruktuuris käivad ühtedel ja samadel alustel samu vahendeid kasutades (ise ei saa ühendusi avada) ning neid vahendeid urlfetch paku…</summary>
    </entry>
    <entry>
        <title>google_app_engine:uue_aplikatsiooniprojekti_loomine</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:uue_aplikatsiooniprojekti_loomine?rev=1267436860&amp;do=diff"/>
        <published>2010-03-01T11:47:40+03:00</published>
        <updated>2010-03-01T11:47:40+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:uue_aplikatsiooniprojekti_loomine?rev=1267436860&amp;do=diff</id>
        <summary>Aplikatsioon koosneb aplikatsiooniprojektist, mis asub ühes kaustas ning koosneb minimaalselt määratud elementidest. Nendeks on kolm faili - app.yaml, mis määrab ära aplikatsiooni konfiguratsiooni, index.yaml  andmebaasi indeksite seadmiseks ning main.py milles asub aplikatsioon ise.</summary>
    </entry>
    <entry>
        <title>google_app_engine:veebispetsiifilised_elemendid</title>
        <link rel="alternate" type="text/html" href="http://www.tahvel.info/google_app_engine:veebispetsiifilised_elemendid?rev=1267624258&amp;do=diff"/>
        <published>2010-03-03T15:50:58+03:00</published>
        <updated>2010-03-03T15:50:58+03:00</updated>
        <id>http://www.tahvel.info/google_app_engine:veebispetsiifilised_elemendid?rev=1267624258&amp;do=diff</id>
        <summary>Kõik sisenevate päringuga seotud andmed asuvad objektis self.request ning väljuvate andmetega seotud andmed asuvad objektis self.response. Näiteks kui on vaja midagi väljastada, saab seda teha omadusega out

self.response.out.write(&quot;see läheb ekraanile&quot;)</summary>
    </entry>
</feed>

