Bottiseminaari (27.11.2008)
tammikuu 24, 2009 at 12:47 juhoo 3 kommenttia
OLO-ryhmämme sai siis tuolloin marraskuun aikana tehtäväkseen suunnitella ja koodata irc-botin (Paul Muttonin kehittämän PircBot-sovelluskehyksen avulla). Kokooonnuimme aluksi joukolla paniikkiin, jossa stormailtiin ja koodattiin muutamia simppeleitä ominaisuuksia. Riemua riitti, kun botti saatiin kannulle, ja se kaiken lisäksi sanoi vielä jotain hauskaa. Tästä Heidi hieman ehtikin jo kirjoittaa tänne blogiin. Postaus löytyy, jos hetken skrollailee alaspäin.
Kaikilla oli ainakin jossain määrin jäänyt huono omatunto robottiturnauksesta. Hannu koodasi käsittääkseni koko hela hoidon, mutta ryhmä sai kuitenkin nimiinsä muutaman erittäin maukkaan erävoiton itse turnauksessa. Koodia kyllä katselin, mutta paljoa en ymmärtänyt. Jos olo-tehtävän tavoitteena todella oli, että jokainen osaisi koodata toimivan robotin herkullisilla algoritmeilla höystettynä niin ihmettelen hieman. Aikaa moiseen ei itselläni olisi todellakaan riittänyt. Onneksi joku osasi jo valmiiksi; kiitos Hannu (ja muutamat muut involved). Päätimme siis heti tämän kertaisen bottitehtävän aluksi, että tämä tehdään ryhmänä, meni sitten päin metsää tai ei.
Bottimme nimeksi tuli Protestibotti, jolle suunnittelun edetessä päätettiin koodata seuraavat ominaisuudet:
- Linkkikirjasto, johon botti tallentaa kanavalle kirjoitetut linkit, ja jolta voi kysyä niitä hakusanoilla. Botti myös huusi wanhaa, jos linkki oli jo kanavalle pastettu. (Otso)
- Kanavalaisten sivistäminen uusimmilla uutisilla osoitteesta ampparit.com. (Juho)
- Viestin tallentaminen, jos henkilö, jolle tämä viesti on tarkoitettu ei ole kanavalla. Botti välittää viestin, kun kyseinen henkilö joinii kanavalle. (Elina)
- Protesteointi yms pieni ärsyttäminen, kuten topicin vaihto takaisin, jos joku sitä yrittää vaihtaa. (Ape)
- (Kanavalaisten sivistäminen random teiniprofiilin urlilla irc-galleriasta. (Hannu))
- Poistuminen kanavalta, kun joku sanoi “lähe menee”.
Koska tarkemmat koodit on suluissa mainitut henkilöt koodanneet itsenäisesti, he tarkentavat osa-aluettaan kommenttina tähän postiin. Itse koodasin tuon uutisominaisuuden, josta voisin kertoa vielä kuitenkin. Ideahan lähti “päivän liha”-ominaisuudesta, jonka tarkoitus oli, että botti pastee kanavalle jonkun random 15-17 vuotiaan teinin profiilin urlin. Hannu meni ja toteutti tämän. Tutkin koodia, ja sain siitä vähän suuntaa-antavaa neuvoa omaan urakkaani. Aikaa tuli käytettyä suht reippaasti, mutta halusin saada tämän toimimaan. Etsin tietoa, miten koodissa voisi käydä läpi jotakin nettisivua. Jälkeenpäin ajatellen se käy yllättävän näppärästi bufferedreaderin ja inputstreamreaderin avulla. Valmis bottiominaisuuteni siis aktivoituu komennolla !uutinen. Tämän jälkeen botti lukee ampparit.com sivun lähdekoodia läpi, kunnes saa kaikista uusimman uutisen otsikon ja urlin talteen, ja sanoo nämä kanavalle. Toimiva ominaisuus osoitti jälleen kerran, että täysin uutta ja ihmeellistä voi oppia, kunhan vain haluaa. Kun kaikki ominaisuudet olivat valmiit, Heikki nivoi koodit kasaan toimivaksi kokonaisuudeksi.
Kaikille jäi bottitehtävästä sekä seminaariesityksestä hyvä maku suuhun, mitä tukee lähetetty palaute:
-
Hei,
tässä palautteemme bottiseminaariesityksestänne.
- hyvin valmistauduttu
- esitys oli itsevarma, ja oli hyvä, että yksi ihminen johti show’ta
- kalvot olivat tarkoituksenmukaiset ja tukivat esitystä
- tekninen selitys epäselvä eikä sitä havainnollistettu
Saitte esityksestänne arvosanan 5.
–Oula ja Ville
-
Metsään ei menty.
Kategoria/t: Juho Kokkola, Ohjelmointitehtävä. Avainsana/t: .
1.
dancek | tammikuu 24, 2009 19:59
Tosiaan avasin pöydän botin koodaukseen koodaamalla ensimmäisen (läpällä) ehdotetun ominaisuuden saman tien. Kurkkasin netistä vinkkejä nettisivujen parsimiseen Javalla. Se oli onneksi suhteellisen helppoa, ja toiminnohko oli valmis vajaassa tunnissa. Tähän meni siis vain hetki; vähän pidempi hetki meni jonkinlaisen frameworkin kasaamiseen, jotta kaikkien toimintoluokat saisi näppärästi liitettyä emobottiluokkaan. Tätä ei kuitenkaan lopulta käytetty, koska se olisi ollut liian rajoittava, ja niinpä vielä vähän pidempi hetki meni Heikin kanssa Paniikissa istuskellessa (“istuskellessa”) deadline-päivänä. Oh well.
Bottiprojektissa tuli kyllä varsin hieno fiilis siitä että ihan oikeasti ryhmätyö toimi, ja kaikille löytyi jotain fiksua tekemistä projektin parissa.
2.
Otso | tammikuu 25, 2009 22:56
Bottiprojekti oli jo lähtökotaisesti täydellinen ryhmätyöharjoitus. Mitään tarkkaa tavoitetta ei oltu asetettu, joten ryhmä sai vapaasti stormailla ja keskittyä ydinosaamiseensa. Tehtävä rohkaisi usean ominaisuuden toteuttamista, joten jokaisella oli myös oma tehtävänsä, jolla itsenäisesti jouduttaa ryhmätyön edistymistä.
Tällä tavalla toteutettu botti oli mielestäni myös täydellinen esimerkki javaohjelman sisäisestä tehtävänjaosta. Kun viestien lukija, eli “botti” ohjelman kannalta oli omassa luokassaan ja botin logiikka muissa, kykenivät kehittäjät kirjoittamaan ja muokaamaan omaa featureaan mielin määrin. Oppitunti, joka tuli hyvään käyttöön projektissa.
Ominaisuuksien kirjoituksen jälkeen taisi käydä ilmi, että vain osa ryhmästä oli ymmärtänyt “feature erikseen”-ajattelutavan, joten palautusta edellisenä päivänä Hannu ja Heikki päätyivät rakentamaan botista toimivaa versiota.
3.
elina2 | tammikuu 25, 2009 23:13
Botissa oli siis ainakin tarkoitus olla myös viestitoiminto, eli sille olisi voinut jättää viestin välitettäväksi henkilölle, joka käyttää kanavaa, mutta ei juuri tietyllä hetkellä ole siellä. Viestin antaminen, välitys, poistaminen jne. toimivat mukavasti kun testailin toimintoa itsekseen. Jotain kuitenkin tapahtui lopullisen botin kokoamisessa, jonka jälkeen viestinvälitys ei toiminut kunnolla ainakaan koko ajan. Minulle jäi vähän epäselväksi, että mitkä osat toiminnosta loppupeleissä toimivat seminaarissa ja mitkä eivät.
Vähän kyllä harmittaa tuo viestitoiminnon kämähdys kun jotenkin niin elin siinä uskossa, että toki se toimii kokonaisuudessa jos toimii yksinäänkin. Tyhmäähän se oli sillälailla olettaa kun eihän ohjelmoinnissa ikinä mikään toimi heti odotusten mukaan. Jos olisin tajunnut aktivoitua aiemmin silloin kokoamisen jälkeen, niin olisin ehkä ehtinyt korjailla viestiluokan.. Jälkiviisaasti ajatellen olisin ylipäätään voinut koodata toiminnon hieman erilailla, jotta se olisi ollut helpommin yhdistettävissä. Varmasti vaikutti se, että en ole tainnut aiemmin ohjelmoida vastaavanlaista osakokonaisuutta. Noh, ensi kerralla paremmin.