lauantai 20. lokakuuta 2012

La 20.10. - Saukkonen maaliin!

Tänään -

Niinhän siinä kävi, että valvoin pääosan yötä työasioissa ja päätin sitten pitää lepopäivän. Tai oikeastaan pihatöitä ja wihaa on ollut ohjelmassa leipätyön lisäksi. Huomenna juoksen järvenkierron maksoi mitä maksoi.

Wihan järjestelyjen kanssa siis haasteita riittää reittiongelmien osalta. Toivottavasti katastrofilta vältytään. Olen tehnyt kaikkea pientä ja helppoa muiden järjestelyjen kanssa, mikä tietenkin sekin on tärkeää, mutta vasta tänään tartuin siihen vaikeimpaan juttuun. Eli pjh_race_timer-ohjelmistoon. Se aloittaminen on vaan niin uskomattoman vaikeaa!! Onneksi kokemus osoittaa, että muutaman tunnin tuskailun jälkeen se alkaa taas sujua.

Olen siis tehnyt RFID-chipeillä toimivaa ajanottosysteemiä wihaan muutaman vuoden ajan. Nyt taitaa olla neljäs kerta, kun se on käytössä. Joka kerta sen toiminta on vähän parantunut ja viime vuonna se oli ekaa kertaa hyvä. Siitä innostuneena tosiaan viime wihan jälkeen kehitin ohjelmistoon paljon uusia parannuksia noin kuukauden verran, kunnes into laantui. Onneksi sain silloin paljon aikaiseksi.

Työympäristönä on Linux-läppäri, ja kehitysalustana Qt. Tein tuon valinnan siihen aikaan, kun Qt oli Nokian strateginen valinta ja ajattelin, että saan hyvää omakohtaista kokemusta siitä. No, Qt on menneen talven lumia Nokiassa, mutta ikinä en enää pysty tuota ohjelmistoa muuallekaan porttaamaan. Ja ihan hyvähän Qt on. Ongelmana on vain se, että kun käytän sitä tasan kerran vuodessa lyhyen aikaa, niin olen unohtanut kaiken oleellisen, niinkuin nytkin. En muista mitä viimeksi jäi kesken ja mitkä featuret toimivat ja mitkä eivät, enkä muista ohjelman logiikan detaljeja. Koodirivejä on noin 10.000 ja sekin on ihan tarpeeksi paljon, kun pitää alkaa lukea vuoden tauon jälkeen.

Minulla on ohjelmassa sellainen testimoodi, jossa voin simuloida kilpailuja ja testata kaikkia toimintoja ilman todellisia juoksijiota ja chippi-antenni-systeemiä. Eli ohjelma itse generoi noita chippi-lukuja tiettyjen algoritmien mukaan ja pääohjelman kannalta näyttää ihan kuin oikeita juoksijoita juoksisi antennin ali. Voin siis järjestää kilpailuja kotona ja sillä lailla kehittää ohjelmaa.
Olen simulaatiossa jopa määritellyt tavoitevauhdit yksittäisille juoksijoille vastaamaan jollain lailla todellisuutta. Sitten kisassa tapahtuu sammumisia, keskytyksiä ja kaikkea mitä oikeassakin kisassa tapahtuu. Jotkut jäävät tavoitevauhdista ja jotkut tekevät uusia enkkoja.
Ja mikä tärkeintä, simulaatiossa tapahtuu myös chipin luvussa virheitä, mikä on koko homman kompastuskivi ja vaikein hallita ohjelmallisesti. Chipin luku on noin 98-99% varmaa riippuen säästä ja chipin sijoittelusta ym. Ja homman koko vaikeus on jotenkin järkevästi hallita ne tilanteet, kun juoksija juoksee antennin ali ilman, että chippi tulee luetuksi. Käytännössä ohjelmaan on rakennettu ”tekoälyä”, joka varoittaa operaattoria (=minua) todennäköisistä lukuvirheistä. Eli jos jollekin juoksijalle tulee epänormaalin pitkä kierrosaika tai häntä ei kuulu kierrokselta vaikka olisi jo pitänyt tulla, niin sen voi manuaalisesti korjata.

No, silloin viime vuoden marraskuun 25. päivä, kun viimeksi tein ohjelmaan muutoksia, niin tuttuun tyyliin käynnistin taas yhden Wihan tapahtuman simuloinnin. Juoksijoina olivat viime vuoden osallistujat. Pistin läppärin nurkkaan ja annoin kisan kulkea. Ajatuksena oli varmaan käydä syömässä ja jatkaa sitten töitä. No, siihen into lopahti enkä koskaan jatkanut, kunnes äsken kaivoin läppärin nurkasta. Pyyhin pölyt ja avasin kannen: Kisa oli jatkunut siellä nyt siis 11 kuukautta ja ohjelma pyöri iloisesti ilman ongelmaa!! Markku Asumaa oli viimeisin maaliin tullut. Ruudulla oli useista simuloiduista chipin lukuvirheistä varoituksia, että esim. juoksija X ei ole vielä tullut maaliin vaikka häntä odotettiin 956210 minuuttia sitten;-) Ajoin simulaatiota ”tuplanopeudella”, eli simulaatiossa kilpailu oli ollut käynnissä kaksi vuotta.

On tuo Linux käsittämättömän stabiili! Eikä minullakaan ilmeisesti pahempia muistivuotoja ole, kun ohjelma toimi ihan normaalisti melkein vuoden...

Olipa hauska kokemus;-) Viimeisenä asiana ennen simulaation keskeyttämistä vielä lisäsin Saukkoselle manuaalisesti yhden kierroksen, kun hänen 10. kierrokseensa oli kulunut tupla-aika (eli chippi oli jäänyt lukematta). Näin sain Saukkosenkin maaliin sataselta loppuajassa 16:41:01.

Ei kommentteja: