Praktikumitöö: twitter: erinevus redaktsioonide vahel

Allikas: Lambda
Mine navigeerimisribale Mine otsikasti
Resümee puudub
Resümee puudub
1. rida: 1. rida:
<!-- Kõigepealt loe läbi praktikumiülesande spec, siis loe lisaks soovitusi ülesande programmeerimiseks ja näitekoode. -->
<!-- Kõigepealt loe läbi praktikumiülesande spec, siis loe lisaks soovitusi ülesande programmeerimiseks ja näitekoode. -->


Hetkel ei ole ülesanne antud täies mahus: siin lehel on kirjas ülesande osi, esialgseid ideid ja viiteid.
= Ülesande kokkuvõte: mida on tarvis teha =


Detailne spec ilmub septembri lõpuks.
On vaja kirjutada käsurea rakendus, mis võtab kasutajalt geograafilise asukoha nime
(näiteks Tallinn, Eesti, Rapla, Harjumaa, Nüpli vms), otsib seejärel twitteri blogisüsteemist
[http://www.twitter.com twitteri]
api-t kasutades välja viimased kirjed, mis on postitatud enam-vähem sellest piirkonnast ja trükib
need kirjed välja.


API viiteid:
Programm käivitatakse niiviisi:


* [http://www.twitter.com Twitter]
    java findtweets Tallinn
* Rakendusi Twitteri apil: http://mashable.com/2007/09/29/twitter-toolbox/
   
* Üks ideedest: http://siliconflorist.com/2007/10/23/twitterwhere-get-tweets-by-geographic-location/
ja ta trükib tulemuseks näiteks (reealne otsingunäide):
* Twitteri API:
 
** [http://apiwiki.twitter.com/Search+API+Documentation Seletusi ja juttu]
    06.09.2008 altexor: Klaxons -a1 disco punk in tallinn. fun 
** Kohapõhine otsing atomi formaadis, näide: http://search.twitter.com/search.atom?geocode=59.438862,24.754472,10km
    06.09.2008 Nath_Milliet: Just booked our plane tickets to go &
** Kohapõhine otsing jsoni formaadis, näide: http://search.twitter.com/search.json?geocode=59.438862,24.754472,10km
      see Glenn in Tallinn on the 1st of november. I just can't wait :)
* Geocoding ehk aadressi järgi koordinaatide kättesaamine:
    05.09.2008 nolecore: Too much Vana Tallinn....argggghhh   
** [http://code.google.com/apis/maps/documentation/services.html#Geocoding_Direct Väike kasutamisjuhend]
 
** Näide: http://maps.google.com/maps/geo?output=xml&q=tallinn ja vaata ka oma softist sobivat http://maps.google.com/maps/geo?output=csv&q=tallinn
Ülesanne annab kokku maksimaalselt 11 punkti. Põhiosa annab 5 punkti, täiendavad lisaks. Ilma
* Vajalik oma fail:
töötava põhiosata lahendust ei aktsepteerita.
** kohad.csv kus iga rida kujul ametlik_nimi,xkoord,ykoord,raadius_km,alternatiivnimi_1,...,alternatiivnimi_N
 
** kõigepealt vaatab soft seda faili, kui piisavalt infot ei ole, siis geocodingust
== Ülesande põhiosa detailid: kuidas otsing funktsioneerima peab ==
** kui geocodingust info leiti, siis salvestab sinna faili: kirjutab (puuduoleva) xkoord ja ykoord vahele
 
* Täiendavat infofail linnade ja asulate kohta:
Sinu programm peab kasutama [http://www.twitter.com twitteri] API-t, vt
** [http://www.world-gazetteer.com/wg.php?x=1129163518&men=stdl&lng=en&gln=xx&dat=32&srt=npan&col=aohdq siin on formaadi seletus]
[http://apiwiki.twitter.com/Search+API+Documentation api seletusi ja juttu].
** [http://www.world-gazetteer.com/dataen.zip downloaditav zip fail] 6.3M, lahti pakkides 23M
 
Selle API abil saad lihtsalt otsida twitteri kasutajate poolt twitteri profiili
sisestatud asukohta geograafiliste koordinaatide järgi. Twitteri kasutaja ei
pruugi oma asukohta õigesti sisestada, aga see pole meie mure. Twitteri süstem püüab
kasutaja sisestatud asukoha nime järgi ise tema koordinaate välja rehkendada.
 
Api näited:
 
* Kohapõhine otsing atomi formaadis: http://search.twitter.com/search.atom?geocode=59.438862,24.754472,10km
* Kohapõhine otsing jsoni formaadis: http://search.twitter.com/search.json?geocode=59.438862,24.754472,10km
 
Need URL-d annavad tagasi mingi mõistliku pikkusega listi viimastest sissekannetest
antud koordinaatidel, antud raadiuse sees. Sina kasuta oma programmi väljundis sedasama listi,
nii palju, kui twitteri API vastuseid annab.
 
Kui sul ei ole spetsiaalset soovi kasutada jsoni formaati, siis tungiv soovitus on kasutada
siin ülesandes atomi formaati (json sobib väga hästi javascripti rakenduste jaoks).
 
Nagu näitest näed, peab sinu programm avama urli, mille lõpus on komadega eraldatud:
 
* laiuskraad (59.438862)
* pikkuskraad (24.754472)
* raadius (10km)
 
Kuidas saada sisestatud asukoha (Eesti, Tallinn, Rapla jne) koordinaadid? Ülesandes pead siinkohas
kasutama Google mapsi API-t:
 
* [http://code.google.com/apis/maps/documentation/services.html#Geocoding_Direct Väike API kasutamisjuhend]
* Näide XML formaadis: http://maps.google.com/maps/geo?output=xml&q=tallinn  
* Näide CSV formaadis: http://maps.google.com/maps/geo?output=csv&q=tallinn
* Viimase (CSV) näite oodatav vastus:  200,4,59.438862,24.754472
 
NB! NB! Kui vajutad ülaltoodud kahele näitelingile, saad tõenäoliselt vale tulemuse, kuhu on sisse
kodeeritud hoopis veateade. Pead näite-urli kopeerima brauseri urli reale ja vajutama enter (või kasutama
hoopis mõnda käsurea-urlilugejat nagu curl), siis töötab ta OK.
 
Kuna Google CSV-formaat on oluliselt lihtsam, kui XML formaat, siis on siin ülesandes soovitav
kasutada seda.
 
CSV formaadi vastuse väljad on:
 
* Asukoha jaoks sobiv zoomi-aste (selle järgi saad pärast valida mõistliku raadiuse!)
* OK/viga kood (200 on ok)
* laiuskraad
* pikkuskraad
 
NB! laiuskraad ja pikkuskraad tulevad teises järjekorras, kui twitter API neid sööb.
 
Siin kirjeldatud põhiosa annab niisiis 5 punkti ja tema korrektse töö korral saad praktikumi
arvestatud.
 
 
== Ülesande esimene lisaosa: kohad.csv moodul ==
 
 
See osa on täiendav jupp programmist, mille eesmärgiks on võimaldada ise kohti (kodu, Tehnikaülikool,
vanaema_juures jne) kirjeldada: kohad.csv fail peab olema sinu programmile kättesaadav (soovitavalt
samas kataloogis) ja peab koosnema CSV kujul ridadest
 
    ametlik_nimi,xkoord,ykoord,raadius_km,alternatiivnimi_1,...,alternatiivnimi_N
 
või ridadest, kus koordinaadid ja raadius puudu:
 
    ametlik_nimi,,,,alternatiivnimi_1,...,alternatiivnimi_N
 
kus
 
* ametliknimi on kohanimi, mida tuleks otsida (kodu asemel näiteks Tallinn, vanaema asemel näiteks Rapla jne)
* alternatiivnimi1,...,alternatiivnimi_N on nimed, mida kasutaja saab sisestada selle kohta jaoks
* koordinaadid ja raadius on standardse tähendusega, kuid võivad olla esialgu puudu!
 
Sinu süsteemi algoritm kohad.csv kasutamiseks:
 
* Enne Google API kasutamist peab süsteem vaatama kõigepealt, kas antud kohanimi on selles failis.
* Kui jah, ja koordinaadid antud, siis kasutab neid koordinaate ja Google APIt ei kasuta.
* Kui jah, ja koordinaadid ei ole antud, siis:
** teeb Google API päringu ametliknimi kohta, leiab koordinaadid
** kirjutab need koordinaadid faili vastavale reale juurde: järgmine kord ei ole vaja enam Google API päringut teha.
 
 
See moodul annab täielikult realiseerituna 3 punkti.
 
 
== Ülesande teine lisaosa: dataen.txt fail ==
 
 
See osa on jälle täiendav jupp programmist, mis koha suuruse (ja sobiva raadiuse) hindamisel kasutab
suures failis dataen.txt kodeeritud hinnangut elanikkonna suurusele selles kohas.
 
Fail on [http://www.world-gazetteer.com/dataen.zip siit downloaditav zip fail] 6.3M, lahti pakkides 23M.
 
[http://www.world-gazetteer.com/wg.php?x=1129163518&men=stdl&lng=en&gln=xx&dat=32&srt=npan&col=aohdq \
Siin on toodud formaadi seletus].
 
See moodul annab täielikult realiseerituna 2 punkti.
 
 
== Ekstraosa: sorteerimine ==
 
See osa on vabatahtlik lisa, mille realiseerimisel saad lisaks veel ühe punkti (kokku võid siis
saada ülesande eest 11).
 
Sorteerimisega variandis käivitatakse progamm ühel järgmistest viisidest:
 
* java findtweets Tallinn
* java findtweets Tallinn name
* java findtweets Tallinn date
* java findtweets Tallinn daterev
 
kus esimene variant on varemkirjeldatud ja harilik, teine aga sorteerib ja trükib vastuslisti autori
nime järgi, kolmas sorteerib vastuslisti kirjutamiseaja järgi, neljas vastupidiselt kirjutamiseaja
järgi.
 
 
 
== Ülesande punktid ==
 
Kokkuvõtlikult:
 
* Põhiosa: 5
* kohad.csv fail: 3
* dataen.txt fail: 2
* sorteerimine: 1

Redaktsioon: 8. oktoober 2008, kell 02:17


Ülesande kokkuvõte: mida on tarvis teha

On vaja kirjutada käsurea rakendus, mis võtab kasutajalt geograafilise asukoha nime (näiteks Tallinn, Eesti, Rapla, Harjumaa, Nüpli vms), otsib seejärel twitteri blogisüsteemist twitteri api-t kasutades välja viimased kirjed, mis on postitatud enam-vähem sellest piirkonnast ja trükib need kirjed välja.

Programm käivitatakse niiviisi:

   java findtweets Tallinn
   

ja ta trükib tulemuseks näiteks (reealne otsingunäide):

    06.09.2008 altexor: Klaxons -a1 disco punk in tallinn. fun   
    06.09.2008 Nath_Milliet: Just booked our plane tickets to go & 
      see Glenn in Tallinn on the 1st of november. I just can't wait :)
    05.09.2008 nolecore: Too much Vana Tallinn....argggghhh    

Ülesanne annab kokku maksimaalselt 11 punkti. Põhiosa annab 5 punkti, täiendavad lisaks. Ilma töötava põhiosata lahendust ei aktsepteerita.

Ülesande põhiosa detailid: kuidas otsing funktsioneerima peab

Sinu programm peab kasutama twitteri API-t, vt api seletusi ja juttu.

Selle API abil saad lihtsalt otsida twitteri kasutajate poolt twitteri profiili sisestatud asukohta geograafiliste koordinaatide järgi. Twitteri kasutaja ei pruugi oma asukohta õigesti sisestada, aga see pole meie mure. Twitteri süstem püüab kasutaja sisestatud asukoha nime järgi ise tema koordinaate välja rehkendada.

Api näited:

Need URL-d annavad tagasi mingi mõistliku pikkusega listi viimastest sissekannetest antud koordinaatidel, antud raadiuse sees. Sina kasuta oma programmi väljundis sedasama listi, nii palju, kui twitteri API vastuseid annab.

Kui sul ei ole spetsiaalset soovi kasutada jsoni formaati, siis tungiv soovitus on kasutada siin ülesandes atomi formaati (json sobib väga hästi javascripti rakenduste jaoks).

Nagu näitest näed, peab sinu programm avama urli, mille lõpus on komadega eraldatud:

  • laiuskraad (59.438862)
  • pikkuskraad (24.754472)
  • raadius (10km)

Kuidas saada sisestatud asukoha (Eesti, Tallinn, Rapla jne) koordinaadid? Ülesandes pead siinkohas kasutama Google mapsi API-t:

NB! NB! Kui vajutad ülaltoodud kahele näitelingile, saad tõenäoliselt vale tulemuse, kuhu on sisse kodeeritud hoopis veateade. Pead näite-urli kopeerima brauseri urli reale ja vajutama enter (või kasutama hoopis mõnda käsurea-urlilugejat nagu curl), siis töötab ta OK.

Kuna Google CSV-formaat on oluliselt lihtsam, kui XML formaat, siis on siin ülesandes soovitav kasutada seda.

CSV formaadi vastuse väljad on:

  • Asukoha jaoks sobiv zoomi-aste (selle järgi saad pärast valida mõistliku raadiuse!)
  • OK/viga kood (200 on ok)
  • laiuskraad
  • pikkuskraad

NB! laiuskraad ja pikkuskraad tulevad teises järjekorras, kui twitter API neid sööb.

Siin kirjeldatud põhiosa annab niisiis 5 punkti ja tema korrektse töö korral saad praktikumi arvestatud.


Ülesande esimene lisaosa: kohad.csv moodul

See osa on täiendav jupp programmist, mille eesmärgiks on võimaldada ise kohti (kodu, Tehnikaülikool, vanaema_juures jne) kirjeldada: kohad.csv fail peab olema sinu programmile kättesaadav (soovitavalt samas kataloogis) ja peab koosnema CSV kujul ridadest

   ametlik_nimi,xkoord,ykoord,raadius_km,alternatiivnimi_1,...,alternatiivnimi_N

või ridadest, kus koordinaadid ja raadius puudu:

   ametlik_nimi,,,,alternatiivnimi_1,...,alternatiivnimi_N

kus

  • ametliknimi on kohanimi, mida tuleks otsida (kodu asemel näiteks Tallinn, vanaema asemel näiteks Rapla jne)
  • alternatiivnimi1,...,alternatiivnimi_N on nimed, mida kasutaja saab sisestada selle kohta jaoks
  • koordinaadid ja raadius on standardse tähendusega, kuid võivad olla esialgu puudu!

Sinu süsteemi algoritm kohad.csv kasutamiseks:

  • Enne Google API kasutamist peab süsteem vaatama kõigepealt, kas antud kohanimi on selles failis.
  • Kui jah, ja koordinaadid antud, siis kasutab neid koordinaate ja Google APIt ei kasuta.
  • Kui jah, ja koordinaadid ei ole antud, siis:
    • teeb Google API päringu ametliknimi kohta, leiab koordinaadid
    • kirjutab need koordinaadid faili vastavale reale juurde: järgmine kord ei ole vaja enam Google API päringut teha.


See moodul annab täielikult realiseerituna 3 punkti.


Ülesande teine lisaosa: dataen.txt fail

See osa on jälle täiendav jupp programmist, mis koha suuruse (ja sobiva raadiuse) hindamisel kasutab suures failis dataen.txt kodeeritud hinnangut elanikkonna suurusele selles kohas.

Fail on siit downloaditav zip fail 6.3M, lahti pakkides 23M.

[http://www.world-gazetteer.com/wg.php?x=1129163518&men=stdl&lng=en&gln=xx&dat=32&srt=npan&col=aohdq \ Siin on toodud formaadi seletus].

See moodul annab täielikult realiseerituna 2 punkti.


Ekstraosa: sorteerimine

See osa on vabatahtlik lisa, mille realiseerimisel saad lisaks veel ühe punkti (kokku võid siis saada ülesande eest 11).

Sorteerimisega variandis käivitatakse progamm ühel järgmistest viisidest:

  • java findtweets Tallinn
  • java findtweets Tallinn name
  • java findtweets Tallinn date
  • java findtweets Tallinn daterev

kus esimene variant on varemkirjeldatud ja harilik, teine aga sorteerib ja trükib vastuslisti autori nime järgi, kolmas sorteerib vastuslisti kirjutamiseaja järgi, neljas vastupidiselt kirjutamiseaja järgi.


Ülesande punktid

Kokkuvõtlikult:

  • Põhiosa: 5
  • kohad.csv fail: 3
  • dataen.txt fail: 2
  • sorteerimine: 1