Erinevus lehekülje "ITI0011:Säuts draft" redaktsioonide vahel
2. rida: | 2. rida: | ||
[[Säuts]] | [[Säuts]] | ||
+ | |||
+ | == Põhiosa: käsurealt juhtimine == | ||
+ | |||
+ | Programm peab olema juhitav käsurealt, näiteks | ||
+ | |||
+ | java Twitter Tallinn -count 50 -sort date desc -search tere | ||
+ | |||
+ | Minimaalne käivitamine toimub näiteks selliselt: | ||
+ | |||
+ | java Twitter Tallinn | ||
+ | |||
+ | kus | ||
+ | * <code>java</code> on java programm ise, mis hakkab teie programmi jooksutama. | ||
+ | * <code>Twitter</code> on klassi nimi, mida käivitatakse | ||
+ | * <code>Tallinn</code> on asukoht, mida otsitakse. | ||
+ | |||
+ | Seega sellise käivitamise puhul antakse teie programmi ette üks argument: "Tallinn" | ||
+ | |||
+ | Kui programm pannakse käima ilma argumentideta, tuleb kasutajala kuvada juhised, kuidas programmi käima panna. | ||
+ | |||
+ | Argumendid, mida programm peab ära tundma: | ||
+ | * <code>-help</code> (põhiosa) - kuvab kasutajale juhise, kuidas programmi käima panna. Peale juhiste kuvamist pannakse programm kinni, väljumiskood (exit code) peaks olema 1. Samad juhised näidatakse (ja sama väljumiskood tagastatakse) siis, kui: | ||
+ | ** programm pannakse ilma argumentideta käima või | ||
+ | ** sisestatud argumendid on valed | ||
+ | * <code>-count ''num''</code> (põhiosa) - määrab ära, mitu säutsu välja näidatakse. Kui see puudub, siis praks programmis olema määratud vaikimisi säutsude kogus 15. | ||
+ | * <code>-sort ''field'' [asc|desc]</code> (lisaosa) - määrab ära, kuidas säutsud järjestatakse väljaprintimiseks. Väli võib olla kas: <code>author</code>, <code>date</code> või <code>tweet</code>. Valikuliselt võib kaasa panna kas <code>asc</code> või <code>desc</code>. Esimesel juhul toimub järjestamine kasvavalt, teisel juhul kahanevalt. Kui pole määratud, siis vaikimisi järjestatakse kasvavalt. Vaata ka vastavat lisaosa kirjeldust. | ||
+ | * <code>-search ''keyword''</code> (lisaosa) - kuvatakse vaid säutsud, milles esineb etteantud otsisõna. | ||
+ | * ... | ||
+ | |||
== Lisaosa: Kohanimede puhverdamine faili (2p) == | == Lisaosa: Kohanimede puhverdamine faili (2p) == | ||
84. rida: | 113. rida: | ||
Selle lisaosa täielik realiseerimine annab 1 punkti. | Selle lisaosa täielik realiseerimine annab 1 punkti. | ||
+ | |||
+ | == Lisaosa: interaktiivne juhtimine == |
Redaktsioon: 18. märts 2015, kell 15:36
Põhiosa
Põhiosa: käsurealt juhtimine
Programm peab olema juhitav käsurealt, näiteks
java Twitter Tallinn -count 50 -sort date desc -search tere
Minimaalne käivitamine toimub näiteks selliselt:
java Twitter Tallinn
kus
java
on java programm ise, mis hakkab teie programmi jooksutama.Twitter
on klassi nimi, mida käivitatakseTallinn
on asukoht, mida otsitakse.
Seega sellise käivitamise puhul antakse teie programmi ette üks argument: "Tallinn"
Kui programm pannakse käima ilma argumentideta, tuleb kasutajala kuvada juhised, kuidas programmi käima panna.
Argumendid, mida programm peab ära tundma:
-help
(põhiosa) - kuvab kasutajale juhise, kuidas programmi käima panna. Peale juhiste kuvamist pannakse programm kinni, väljumiskood (exit code) peaks olema 1. Samad juhised näidatakse (ja sama väljumiskood tagastatakse) siis, kui:- programm pannakse ilma argumentideta käima või
- sisestatud argumendid on valed
-count num
(põhiosa) - määrab ära, mitu säutsu välja näidatakse. Kui see puudub, siis praks programmis olema määratud vaikimisi säutsude kogus 15.-sort field [asc|desc]
(lisaosa) - määrab ära, kuidas säutsud järjestatakse väljaprintimiseks. Väli võib olla kas:author
,date
võitweet
. Valikuliselt võib kaasa panna kasasc
võidesc
. Esimesel juhul toimub järjestamine kasvavalt, teisel juhul kahanevalt. Kui pole määratud, siis vaikimisi järjestatakse kasvavalt. Vaata ka vastavat lisaosa kirjeldust.-search keyword
(lisaosa) - kuvatakse vaid säutsud, milles esineb etteantud otsisõna.- ...
Lisaosa: Kohanimede puhverdamine faili (2p)
Kuna linnade/asukohtade koordinaadid ei ole ajas muutuvad, siis ei ole mõtet igal korral, kui kasutaja otsib "Tallinna" kohta säutse, uut koordinaatide päringut teha. Tulemus on väga suure tõenäosusega täpselt sama, mis eelmisel korral. Seoses sellega oleks mõistlik salvestada tulemused kuskilt puhvrisse (faili) ning neid hiljem sealt lugeda.
Selle lisaosa funktsionaalsus on:
- asukoha koordinaatide päringu tulemused salvestatakse faili, et järgmisel korral ei peaks neid uuesti küsima (kohalik cache)
- nimetatud faili saab lisada ise uusi asukohti (näiteks "kodu", "TTÜ" jne)
Puhverdamiseks kasuta vaikimisi faili "kohad.csv", mis peab olema sinu programmile kättesaadav (soovitavalt paikneb samas kataloogis käivitatava klassiga) ja peab koosnema CSV kujul ridadest:
ametlik_nimi,latitude,longitude,raadius_km,alternatiivnenimi_1,..,alternatiivnenimi_N
või ridadest, kus koordinaadid ja raadius on puudu:
ametlik_nimi,,,,alternatiivnenimi_1,...,alternatiivnenimi_N
kus
- ametlik_nimi on kohanimi, mida otsitakse API-st (näiteks
tallinn
) - alternatiivnimi_1, ..., alternatiivnimi_N on nimed, mida kasutaja saab sisestada. Näiteks saab kasutaja siin määrata "kodu". Kui vastav päring tehakse, otsitakse tegelikult ametlik_nimi asukohta (või kasutatakse juba olemasoelvaid koordinaate ja raadiust, kui need on olemas) (näiteks
kodu,elupaik
) - latitude, longitude ja raadius_km on standardse tähendusega. Need võivad puududa. (näiteks:
59.4,24.5,10
)
Sinu programm kasutab puhvrifaili järgmiselt:
- Enne asukoha API poole pöördumist vaatab programm, kas vastav kohanimi on selles failis olemas
- Kui jah, ja koordinaadid-raadius on antud, kasutab ta koordinaate ja raadiust Twitteri päringu tegemiseks. Asukoha päringut ei tehta
- Kui jah, aga koordinaadid on puudu, siis
- teeb uue asukoha API päringu ametliku kohanime järgi, leiab koordinaadid ja arvutab raadiuse
- kirjutab saadud koordinaadid ja raadiuse vastava rea juurde. Järgmisel korral sama päringu puhul pole vaja asukoha API-t enam kasutada.
- Kui ei, siis tehakse uus päring ning puhverdatakse tulemused faili (kirjutatakse uus rida, kus on ametlik_nimi, koordinaadid ja raadius:
pärnu,58.3800572,24.5200466,5)
.
Näited:
1) kohad.csv:
tallinn,59.4,24.5,10,kodu,ttü
Kui tehakse otsing "tallinn", siis kasutatakse koordinaate 59.4 ja 24.5, raadius = 10km. Sama juhtub, kui teha päring "ttü", "kodu". kohad.csv fail ei muutu.
2) kohad.csv:
pärnu,,,,vanaema,suvila
Kui tehakse otsing "pärnu" või "vanaema" või "suvila", siis otsitakse asukoha API-ga üles "pärnu", loetakse välja koordinaadid ja arvutatakse välja raadius. Tulemuseks on sama rida failis:
pärnu,58.3,24.5,5,vanaema,suvila
3) kohad.csv:
tallinn,59.4,24.5,10,kodu,ttü
Kui tehakse otsing "pärnu", siis tehakse asukoha otsing "pärnu" ja salvestatakse koordinaadid ja raadius faili. Tulemuseks on fail:
tallinn,59.4,24.5,10,kodu,ttü pärnu,58.3,24.5,5
4) kohad.csv
tallinn,59.4,24.5,10,kodu,pärnu pärnu,58.3,24.5,5
Kui tehakse otsing "pärnu", siis kasutatakse infot teiselt realt. Ehk siis ametlik nimi on prioriteetsem kui alternatiivsed nimed. Kui sellist ametlikku nime ei leidu, otsitakse alternatiivsete nimede seast.
Faili sisu ei tohi olla tõstutundlik, ehk siis otsingud jm toimub case-insensitive printsiibil, kus suur- ja väiketäht on võrdsed ("Pärnu", "pärnu" ja "PÄRNU" on kõik samad).
Teie programmis mingeid muid operatsioone ei pea failiga tegema (näiteks kustuta rida või muuda vms). Faili muutmine toimub käsitsi. Samuti ei pea te otseselt tegelema valesti formaaditud failiga. Samas, kui tekib viga andmete lugemisel, ei tohiks see programmi kinni panna. Pigem kui cache'i ei suudega lugeda, siis arvestada olukorraga nagu cache puudub (kõik päringud tehakse veebist).
See lisaosa täielikult realiseerituna annab 2 punkti.
Lisaosa: sortimine ja filtreerimine(otsimine) (1p)
Võimaldab säutse sorteerida vastavalt etteantud väljale. Sorteerida saab järgmiste väljade järgi:
- autor
- postituse kuupäev
- postitus (ehk siis säutsu tekst)
Sorteerida saab nii kasvavas (väiksemad ees, näiteks: a, b, c, ...
või 1, 3, 5, ...
) kui kahanevas (suuremad ees, näiteks: ü, ö, ä, ...
või 9, 8, 4, ...
) järjekorras.
Samuti on võimalik anda ette otsisõna. Näidatakse välja vaid neid säutse, kus otsisõna esineb. Vihjeks: teie kasutada olev teek võimaldab otsingut suhteliselt lihtsalt teha.
Selle lisaosa täielik realiseerimine annab 1 punkti.