Alat za automatiziranu provjeru ocjena iz e-Dnevnika stvorio nezadovoljni tata programer

Jedan je domaći programer volonterski stvorio softversko rješenje koje mu, kao roditelju školaraca, olakšava praćenje njihovih ocjena. Servis je dostupan svima koji žele biti u toku sa stanjem u e-Dnevniku

Sandro Vrbanus nedjelja, 25. prosinca 2022. u 08:10

Ponekad najbolja rješenja, i to ne samo u domeni softvera, nastaju tako da njihov autor želi riješiti neki svoj stvarni problem, pa potom, usput, riješi i probleme mnogih sličnih njemu. Jedna takva priča dovela je i do stvaranja softverskog alata o kojem danas pišemo, a sigurno će biti vrlo koristan (informatički pismenim) roditeljima školaraca. Softver se naziva e-dnevnik-bot, a stvorio ga je nekadašnji Bugov suradnik, ekspert za Linux, developer Dinko Korunić.

Za roditelje-geekove

Ovaj je alat zamišljen kao nadogradnja na CARNET-ov e-Dnevnik. Oni koji ga instaliraju, više neće morati otvarati e-Dnevnik i tamo tražiti nove informacije, školske ocjene djece i slično. Umjesto njega to će odraditi ovaj bot te mu poslati obavijesti o novim informacijama putem nekog od podržanih kanala (za sada su to Discord, Telegram, Slack ili obični e-mail). Bot se može autentificirati kao različiti AAI/AOSI korisnici iz domene skole.hr te može provjeravati informacije bilo jednokratno, bilo kao servis koji povlači informacije u redovnim intervalima.

Evo što sam autor kaže o nastanku ideje: "Kao roditelji troje djece, od koje dvoje idu u školu (a treće će krenuti ove jeseni), vrlo brzo smo primijetili kako je e-Dnevnik neprilagođen roditeljima sa više djece. Informacije se ne prenose efikasno prema oba roditelja, već proces zahtijeva ručno ulogiravanje i izlogiravanje za svako dijete i pregledavanje novosti, a povrh toga nema ni naznake kad se ocjene, napomene i ispiti mijenjaju kroz vrijeme. S obzirom na potrebu da i supruga i ja budemo u toku sa događanjima, razvio sam e-dnevnik-bot kao servis koji će se osigurati da svaka promjena ispitnih termina i ocjena bude pravovremeno poslana na adrese oba roditelja u formi kratke poruke kroz neki od podržanih servisa za komunikaciju, i to za svako dijete."

Kako do e-dnevnik-bota?

Servis je u potpunosti "self-hosted", što znači da je problematika čuvanja podataka i privatnosti u potpunosti prebačena na korisnike. K tome, servis može raditi na Windows i Linux platformi, praktički čak i na najmanjim embedded platformama. Korisnici koji su se do sada zainteresirali za ovaj softver ga koriste kao Docker container unutar Github Actionsa, na vlastitim Raspberry Pi mini serverima, Linux i Windows desktopima, i slično – kaže nam Korunić.

Program je dostupan na Githubu, gdje možete pronaći i dokumentaciju te sve upute za konfiguraciju i puštanje servisa u pogon.

S obzirom na minimalne hardverske zahtjeve servisa (100-tinjak MB RAM, 15-ak MB diska za godinu dana obavijesti), moguće ga je koristiti na bilo čemu od podržanih platformi.

Alat je u potpunosti javnog koda, bez ikakvih restrikcija korištenja i napisan je u Golangu, koji je omogućio jednostavnu međuplatformsku podršku i jednu izvršnu datoteku u kojoj se nalazi sve potrebno, a koja ne zahtijeva nikakve preinake ili instalacije drugog softvera. Podržan je i rad unutar Dockera i Kubernetesa.

Luka Kladarić, mnogima dobro poznati član domaće developerske scene, na ovo je rješenje dodao i Github Actions recept, pa se zahvaljujući tome e-dnevnik-bot može upogoniti i na taj način.

Izazovi pri izradi

Autor nam je otkrio i neke od problema s kojima se susretao prilikom izrade bota, nastalih primarno zbog činjenice da sustav e-Dnevnika nije prilagođen za strojno čitanje:

"Glavni problem tijekom razvoja softvera bila je činjenica da e-Dnevnik nema API koji bi bio javno dostupan, pa se prikupljanje informacija obavlja analizom HTML sadržaja. To je relativno loš pristup, ali nije bilo drugog izbora. Što se tiče zaštite podataka, čak ni ocjene i ispiti djece nisu spremljeni u bazi podataka, već u tzv. checksum obavijesti koje su poslane, pa na taj način saznajemo i ako je neka od ocjena, napomena ili ispita bila promijenjena naknadno. Ipak, servis se dobro nosi s mrežnim ispadima ili ispadima samih API-ja koje koristi te pokušava nekoliko puta poslati obavijesti s klasičnim progresivnim pauziranjem slanja kod greške."