Koncepti
Brojevi nedelja i zašto su kalendarski pogrešni
Svaka ustanova numeriše svoje nastavne nedelje, gotovo nijedna ne numeriše ih kao kalendar, a u tom jazu živi iznenađujuća količina zabune.
Dva različita broja istog naziva
Pitajte kalendar koja je nedelja i dobićete ISO broj nedelje: nedelja 1 je ona koja sadrži prvi četvrtak u januaru, a do početka akademske godine na severnoj hemisferi nalazite se negde oko nedelje 36 do nedelje 40.
Postavite isto pitanje službi za raspored i dobićete potpuno drugačiji broj. Nedelja 1 je prva nastavna nedelja godine, gde god u kalendaru da pada, i sve se odatle računa. To je broj odštampan na rasporedu, broj u obrascu za rezervaciju učionice i broj koji dvoje kolega koriste kada dogovore da se sastanu u devetoj nedelji.
Ta dva nikada nisu ista, osim ako nastavna godina ustanove slučajno ne počinje prve nedelje januara, što znači: nikada. A pošto se oba zovu broj nedelje, softver koji tiho proizvodi pogrešan daje nešto što izgleda potpuno uverljivo.
Kako izgleda kada pođe naopako
Ne izgleda kao greška. Izgleda kao stranica s brojem na vrhu, a broj je pogrešan za različitu vrednost u svakoj ustanovi — jer svaka počinje godinu na drugi datum.
Zbog toga je skupo. Pad se prijavi za sat vremena. Naslov koji glasi Nedelja 36 kada ga svi u zgradi zovu Nedelja 2 prijavi nedeljama kasnije neko ko je pretpostavio da je on pogrešno razumeo sistem, a ne sistem njega — a u međuvremenu su ljudi dolazili u učionice na osnovu toga.
Pravilo koje to izbegava je kratko: broj nedelje se čita, nikada ne izračunava. Ustanova odlučuje gde je nedelja 1; posao softvera je da izvesti ono što je ustanova odlučila, a ne da iz datuma izvodi sopstveni broj.
Nedelja 1 nije uvek prva nedelja koja postoji
Ustanovama rutinski trebaju datumi pre njihove nastavne godine: uvodne dve nedelje, ispitni rok za popravne, letnja škola koja pripada godini koja se završava. Umesto da se sve renumeriše — što bi tiho promenilo značenje svakog rasporeda, svake rezervacije i svake poruke koju je iko ikada poslao o devetoj nedelji — razumno je proširiti kalendar unazad, u nulu i negativne brojeve.
Prvi put zvuči čudno, a drugi put je savršeno ispravno: nedelja 1 zadržava značenje koje je oduvek imala, a dve nedelje pre nje su nedelja −1 i nedelja −2. Imamo ustanove čija tabela nedelja ide daleko u negativno i daleko iza kraja nastavne godine, a sve između adresira pravi datum.
Sve što programski čita raspored treba da to očekuje. Broj nedelje je ceo broj sa znakom, a ne brojač koji počinje od jedan.
A neke ustanove uopšte ne koriste brojeve
Oxford i Cambridge imenuju nedelje po semestru umesto da ih broje kroz godinu: datum je u Michaelmas četvrtoj nedelji, a broj ne bi značio ništa nikome u sali. Druge ustanove označavaju dve nedelje kao Revision, Induction ili Assessment period i očekuju da to raspored kaže.
Dakle nastavna nedelja nosi dve stvari, a ne jednu: broj kojim je softver adresira i sopstveni naziv ustanove za nju, što čitalac zaista želi na vrhu stranice. Tamo gde naziv postoji treba ga štampati umesto broja i to u celini — skraćivanje tuđe konvencije semestra radi uštede osam piksela je vrsta uslužnosti koju niko nije tražio.
Tamo gde naziva nema, a kod većine ustanova ga nema, broj je naziv i to je sasvim u redu.
Četiri stvari koje vredi proveriti u svakom sistemu za raspored
Nijedna nije egzotična. Sve su negde tiho pogrešne.
| Pitanje | Kako izgleda dobar odgovor |
|---|---|
| Gde počinje nedelja 1? | Datum koji je postavila Vaša ustanova, upisan jednom i korišćen svuda. Ne izveden iz kalendara i ne podesiv po ekranu. |
| Može li kalendar ići pre nedelje 1? | Da, u nulu i negativne brojeve, bez renumerisanja ičega što već postoji. |
| Može li nedelja da nosi naziv? | Da, i naziv se štampa umesto broja, u celini. |
| Odakle studentska aplikacija dobija broj? | Iz rasporeda, u istom odgovoru kao i časovi. Klijent koji sam računa biće u krivu, i to drugačije u svakoj ustanovi. |
Zašto je ovo i pitanje integracije
Portal, aplikacija ili informativni ekran koji prikazuje naslov nedelje mora ga odnekud dobiti, a jedini izvor koji može biti u pravu je sam raspored. U Wise Timetable odgovor o rasporedu nosi brojeve i nazive nedelja za raspon koji pokriva, pa klijent nikada nema razloga da ih sam izračunava — a GET /v2/weeks odgovara na isto pitanje samostalno za ekran koji treba da označi ceo semestar odjednom.
Priručnik za REST API dokumentuje oba, uključujući negativan slučaj, i objavljen je u celini i bez ograda da bi programer mogao proveriti oblik odgovora pre nego što iko išta potpiše.
Želite da vidite kako ovo radi?
Rezervišite onlajn prezentaciju od 45 minuta i prođićemo kroz nju na primeru problema izrade rasporeda u Vašoj ustanovi.