Ülesande püstitus
Selle ülesande raames lood sa käsurea põhise tööriista, mille eesmärgiks on kuvada hetkeilma ja prognoosi kasutades kohalike ilmaallikaid. Kodutöö raames tuleb kasutada kahte kolmanda osapoole teeki, sh pead uurima XML andmeformaati.
Andmed
Ülesande lahenduse raames tuleb kasutada Keskkonnaameti poolt pakutavaid ilmaandmeid.
- https://www.ilmateenistus.ee/teenused/ilmainfo/eesti-vaatlusandmed-xml/
- https://www.ilmateenistus.ee/teenused/ilmainfo/eesti-prognoos-xml/
Pööra tähelepanu andmete kasutamise nõuetele (litsents) – vaata mis nõuded peavad olema täidetud kui kasutad nende andmeid!
Nõuded kolmanda osapoole teekidele
- Ilmaandmed tuleb alla laadida kasutades libcurl teeki (https://curl.se/libcurl/)
- Ilmaandmete töötlemine tuleb teostada kasutades libxml2 teeki (https://gitlab.gnome.org/GNOME/libxml2/-/wikis/home)
Nõuded koodimisstandardile ja keskkonnale
Loodav programm peab olema kirjutad C programmeerimiskeeles. Kasutada tohib C90 ja C99 koodistandardeid. Kokkuleppel tohib kasutada ka uuemaid standardeid (nt C11, C17, C23).
Lisaks C standardteekidele tohid kasutada ka C POSIX, GNU C ja ncurses teeke ning ülesandest lähtuvalt vajaminevaid teeke (libcurl ja libxml2). Teiste teekide kasutamine väljaspool eelnimetatut ainult kokkuleppel!
Esitatud lahendus kompileeritakse ja testitakse laboris oleva Linux seadistusega võrdväärses keskkonnas (nt OpenSUSE SLED-15 SP5 või Ubuntu Linux 24.04 koos GCC-13 kompilaatoriga). Ühilduvus teiste operatsioonisüsteemidega (Windows, MacOS) pole vajalik.
Rakenduse üldnõuded
- Ilmaandmed tuleb alla laadida automaatselt, kuid mitte tihedamalt kui korra tunnis.
- Käivitamise järel peab rakendus koheselt näitama hetkeilma kasutaja lemmik-asukohtades.
- Kui lemmikuid ei ole, kuvatakse hetkeilm automaatselt järgnevatest jaamadest: “Tallinn-Harku”, “Tartu-Tõravere” ja “Narva”.
- Rakendus peab lubama lisada ja eemaldada lemmik-asukohtasid.
- Kasutaja sisestatud asukohad peavad olema kontrollitud.
- Kõik muudatused lemmikutes peavad olema püsivad (st pärast lemmiku lisamist tuleb selle asukoha hetkeilma kuvada ka järgnevatel rakenduse käivitustel, kuniks kasutaja otsustab selle asukoha eemaldada.
- Iga asukoha kohta näita järgnevat
- Jaama nimi, ilmastikunähtused, sademed, õhurõhk, suhteline õhuniiskus, temperatuur, tuule kiirus, tuuleiilide kiirus.
- Veebiaadress ilmajaama asukohale kaardirakenduses. Lubatud on kas OpenStreetMap, Google Maps või Bing Maps.
- Rakendus peab näitama ka ilmaprognoosi Eesti kohta (päevane ja öine minimaalne ning maksimaalne temperatuur) kõigi prognoosis saadaval olevate päevade kohta.
- Rakenduse sisemine käitumine on sinu otsustada – st kas seal on menüü-loogika või võetakse käske vastu ainult käsurea argumentide kaudu. Lõpptoote kasutajakogemus peab olema loogiline lähtuvalt rakenduse eesmärgist – ehk siis kiiresti ülevaate saamiseks mis ilm on ning mida oodata lähipäevil.
- Rakendus peab jälgima andmete kasutamisele seatud nõudeid (litsentsitingimused)!
- Rakenduse kood ja struktuur peab jälgima üldiseid levinud ja häid praktikaid C-keelsetele programmidele.
- Rakendus tuleb kompileerida kasutades Makefile’i, mille annad ülesannet esitades kaasa. Rakenduse tükeldus failideks peab olema mõistlik.
Dokumentatsioon
- Tiitelleht
- Autorideklaratsioon
- Lühendite ja mõistete sõnastik (vajadusel)
- Sisukord
- Jooniste ja tabelite loetelu (vajadusel)
- Rakenduse detailne kirjeldus (väldi tekstimüüre!)
- Programmi lühikirjeldus – st mida teeb?
- Programmi töövoog (mis järjekorras mida tehakse, lühidalt ja üldistatult. Väldi detailidesse minekut! Maksimaalselt pool lehekülge).
- Andmestruktuuride kirjeldus (iga struktuuri kohta)
- Struktuuri eesmärk
- Iga struktuuri liikme kohta nimi, andmetüüp ja kirjeldus.
- Eriolukordade analüüs ja lahendamine
- Probleemi kirjeldus
- Probleemi seisukord (kas lahendatud, leitud alternatiivne võimalus või on see jätkuvalt aktuaalne)
- Kui probleem on lahendatud, siis kuidas selle lahendasid
- Programmi kasutusjuhend
- Ekraanitõmmis(ed) töötavast programmist
- Ekraanitõmmised võivad olla pandud lisana, kuid võivad olla ka põimitud lahenduse kirjelduse sisse – ekraanitõmmiste jagu võib lahenduse kirjeldus pikeneda lubatud maksimumist.
- Kokkuvõte
- Kirjuta mõni lause oma lähenemisest ülesandele ja tööprotsessi kohta.
- Kirjuta mõni lause ülesandest ja selle keerukusest sinu jaoks.
- Kui võimalik, hinda ülesande sooritamise ajalist mahtu.
- Kas soovitad ülesannet kasutada ka tulevikus? Kas ja mida muudaksid?
- Täiendavad kommentaarid, emotsioonid, mõtted.
- Kasutatud kirjandus (vajadusel)
- Kõik mis ei olnud kaetud selle õppeaine raames ja mida sa ei loonud iseseisvalt.
- Ka näiteks sõbra või kursusekaaslase abi tuleks viidata: https://libraryguides.vu.edu.au/ieeereferencing/personalcommunication
- Kui kasutasid tehisintellekti (nt ChatGPT), peab selle kasutus olema viidatud – mis ulatuses ja mille jaoks kasutasid.
- Viited allikatele peavad olema täpsed. Näiteks viitena stackoverflow.com või google.com ei sobi. Viide peab olema konkreetsele leheküljele kust informatsioon pärineb.
NB! Funktsioonide dokumenteerimine on osa dokumentatsioonist. Funktsioonid tuleb dokumenteerida koodis. Iga funktsiooni kohta kirjelda selle eesmärki, parameetreid, nõudeid parameetritele tagastavat väärtust ja kõrvalmõjusid.
Juhendaja ja töö esitamine
Kõigi kodutöö 3 variantide tähtaeg on 8. juuni 2025.
Töö juhendajaks on Carmen Raun (Mattermost: @rauncarmen).
Kodutöö esitamine käib kahes etapis:
- Lae üles oma lahendus Moodlesse: https://moodle.taltech.ee/mod/assign/view.php?id=499816
- Kirjuta töö juhendajale andmaks teada, et lahendus on esitatud. Täiendavalt on soovitav lahendus saata ka talle otse tema eelistatud suhtlusvahendi kaudu.
Kodutöö raames tuleb esitada kaks faili:
- Aruanne (pdf fail)
- Projekti kompileerimiseks vajalikud failid kokkupakituna .zip arhiivis (lähtekood, Makefile. Vajadusel andmefailid, seadefailid jms).
Juhendajal on õigus nõuda töö kaitsmist kohapeal!