Kumiankka-metodi debuggauksessa

Ohjelmoinnissa koodin kirjoittamisen lisäksi on tärkeää osata debugata koodia, eli selvittää mistä ilmennyt ongelma johtuu ja miten se ratkaistaan. Ongelmanselvitykseen on olemassa erilaisia välineitä, mutta yksinkertaisimmillaan se voi olla esimerkiksi kumiankka, kuten Canterbury Linux User’s Groupin postituslistalla asia ilmaistiin.

Kumiankka-metodi debuggauksessa menee seuraavasti:

  1. Kerjää, lainaa, varasta, osta, valmista tai muuten hanki kumiankka (amme-tyyppiä)
  2. Aseta kumiankka pöydälle ja kerro, että tulet kohta käymään läpi hieman koodia sen kanssa.
  3. Selitä ankalle mitä koodisi pitäisi tehdä ja syvenny yksityiskohtiin kertomalla asiat rivi riviltä.
  4. Jossain vaiheessa tulet kertomaan ankalle mitä teet seuraavaksi ja sitten tajuat, että todellisuudessa se ei ole sitä, mitä oikeasti teet. Ankka istuu seesteisenä, onnellisena siitä tiedosta, että on auttanut sinua.

Toimii joka kerta, ja jos kumiankkaa ei ole saatavilla, voi korvikkeena käyttää myös toista henkilöä, joka istuu vieressäsi ja kuuntelee. Tosin, jos työskentelet avokonttorissa ja selität asioita kumiankalle, kannattaa se tehdä ääneti ajatuksissa, sillä muuten voit saada osaksesi outoja katseita. Englanniksi asia tunnetaan nimellä Rubber Duck Debugging.

Vaadin tarjoaa Swingiä Web-sovellusten kehitykseen

Web-sovellusten kehitys Javalla on täynnä erilaisten frameworkkien kuten Strutsin, Springin ja JSF:n hyödyntämistä, joista jokaisessa on hyvät ja huonot puolensa ja varsinainen toteutus on usein sekoitus HTML-merkkausta ja koodia. Java EE -sovelluskehitystä voi kuitenkin katsella myös hieman erilaisesta näkökulmasta: Suomalainen IT Mill on rakentanut kokonaisuuden nimeltä Vaadin, joka tuo Javan Swing -maailman Web-sovelluksiin. Lopputuloksena on sovelluskehys, jossa HTML:n koodaaminen unohdetaan lähes täysin ja sovellusta toteutetaan samalla periaatteilla kuin työpöytäsovelluksia, joka on kätevää, jos tykkää Java Swing -tyylisestä sovelluskehityksestä.

Vaadinta voi lyhyesti kuvata sanomalla sen olevan Swing-koodausta sekä hyvässä että pahassa. Web-sovelluksen toteutus Vaatimella on suhteellisen helppoa, mutta toisaalta se myös Swingin tapaan rajoittaa käyttöliittymäsuunnittelua. Toteutuksessa HTML:n ja komponenttien säätäminen jää pois, jolloin toteuttajat voivat keskittyä varsinaiseen toimintaan kuuntelijoiden ja tapahtumien parissa. Kokonaisuutena kehitys on tavallaan selkeämpää kuin esimerkiksi JSF:llä, jossa toiminnot hajoavat sekä sivuille että Java-luokkiin ja erilaisia säädettäviä XML:iä on useita. Totuus ei tietenkään ole aivan näin yksinkertaista, mutta melkein.

Sovelluskehityksen osalta Eclipselle on saatavilla WYSIWYG-editori ja sovelluksen debuggaus onnistuu normaalisti debug-moodissa ja käyttöliittymän osalta Firefoxin Firebug-lisäosalla, eli sen osalta ei ole mitään ihmeellistä. Käytettävissä on useita erilaisia komponentteja ja hyvä dokumentointi, joilla toimintoja rakentaa. Tutoriaalien avulla pääsee helposti alkuun ja näkee mistä asiassa on kyse. Vaadin on lisensoitu avoimen lähdekoodin Apache License versio 2.0 -lisenssillä, joten tarvittaessa sen laajentaminen ja bugien korjaaminen on mahdollista. Saatavilla on myös maksullista tukea ja palveluita.

Vaadin perustuu Google Web Toolkitin päälle, jota käytetään selaimelle piirtämiseen ja GWT:hen verrattuna Vaadin-sovellukset pyörivät palvelinpuolella, kun GWT on selainpuolen sovellus. Vaadin-sovellus on paljolti sidottu JavaScriptiin ja siinä on mielestäni myös sen heikoin lenkki, sillä suorituskyvyllisesti käytetty lähestymistapa ei ole kovin tehokas. Etenkin monimutkaisilla käyttöliittymäkomponenteilla ja ulkoasuilla selaimen JavaScript-suorituskyky tulee äkkiä vastaan, vaikkakin tällä saralla on etenkin Googlen Chrome ja Safari kunnostautuneet. Muuten komponentit toimivat hyvin riippumatta käytettävästä selaimesta.

Vaikka Vaadin tavallaan yksinkertaistaa rikkaiden Internet sovellusten (RIA) tekemistä, pidän itse enemmän perinteisestä Java Server Facesiin (JSF) pohjautuvasta Web-kehityksestä. JSF:n kanssa käyttöliittymän koodi on erikseen HTML:ssä, johon on lisätty tarvittavat sidokset ja dynaamisuutta. Tietenkin tässäkin tavassa on omat ongelmansa, etenkin kun JSF 1.2 ja käyttöliittymäkomponentit ovat mitä ovat. Ehkä taustani Web-koodaajana vaikuttaa siihen, että pidän enemmän siitä, että pääsen helpommin näkemään ja säätämään käyttöliittymää HTML-tasolta, eli tekemään juuri sitä, mistä ”perinteiset” Java-koodarit eivät tykkää. Ainakin saan tarkalleen mitä haluan, jos osaan sen HTML:llä, CSS:llä ja käytössä olevilla komponenteilla toteuttaa.

Vaadin on kuitenkin kätevä tapa toteuttaa Web-sovelluksia ja sillä saa kohtalaisen nopeasti aikaan hyvän näköistä jälkeä helposti. Toisaalta kuten kaikissa sovelluskehyksissä, on myös Vaatimessa asioita, jotka aiheuttavat kehittäjälle harmaita hiuksia. Nimi Vaadin tarkoittaa myös naaraspuolista poroa ja sanaa voidaan käyttää esimerkiksi lauseessa ”Vaadin parempia käyttöliittymiä!”.

Näköjään seuraava Vaadin Developer Meetup pidetään 3.12.2009 Pitäjänmäellä Helsingissä Logican tiloissa (ilmoittautuminen 26.11.2009 mennessä).

Esimerkkinä silloin vielä IT Mill Toolkit -nimellä tunnetulla Vaadin-kehyksellä hahmoteltu sähköpostisovellus:

iMail iMail

Stund tuo kesää syksyn harmauteen

Syksyn ja kehnojen pyöräilykelien saapuessa voi todellisuutta paeta videoiden maailmaan, joskin katsoessa maailmalla kuvattuja pätkiä, alkaa kaipaamaan myös kotimaahan hieman isompia korkeuseroja. Vaikka en varsinaisesti ole freeriden ja hyppymisen suurin ystävä, on Stund -TV-sarjassa vedetty setti hienoa katseltavaa. Sarjan pääjehut Steve Romaniuk ja Mike Kinrade yhdessä kavereidensa kanssa vetävät kyllä isosti upeissa maisemissa. Tässä alkaa jo itsekin odottamaan kesää, että pääsisi taas pyörän päälle metsässä rymistelemään.

Stund -TV-sarjasta on ilmestynyt jo yksi kausi ja toinen on jokin aika sitten juuri alkanut. Sarjan videot ovat katsottavissa Pinkbikessä Stund-blogissa. Aikaisemmin blogissa linkitettyjä videoita ei vanhoilla linkeillä löydy, vaan ne pitää etsiä erikseen (listassa). Tähän mennessä ovat ilmestyneet:

Ensimmäisen kauden jaksot voi kätevästi ladata omalle koneelle MTBView.com-sivustolta myöhempää fiilistelyä varten. Ajopaikkoja ovat ilmeisesti Utah, Kelowna, Kamloops, Van/Whistler ja Nelson. MTBView.com-sivustolta löytyy myös muuta mukavaa katsottavaa kuten Drop in -sarjan viides kausi ja muita pyöräilyaiheisia videoita. Kun syksyn harmaus ja ankeus yllättää, kannattaa siis suunnata Internetiin ja haaveilla edessä odottavasta kesästä ja hetkistä pyörän päällä.

Uutta kuosia ”work in progress”-menetelmällä

Kun eräät hankkivat blogilleen uuden kuosin ulkoistamalla suunnittelu- ja toteutusprosessin, toiset tykkäävät tehdä sen itse syöksymällä koodiin ja virittämällä asiat haluamallaan tavalla. ”Kun itse tekee, saa mitä tulee” -työskentelytavalla saa muun muassa teeman suomenkieliseksi, mutta tiedetäänhän se jo vanhan sanonnan tapaan, ettei suutarin lapsilla ole kenkiä.

Tällä kertaa lähestyn sivuston ulkoasun uudistamista hieman likaisesti ”work in progress” -näkökulmasta, eli tarkennan ja visualisoin asioita sitä mukaa, kun niitä ehdin ja keksin. Ei mitenkään nätti lähestymistapa, mutta kehittäjän kannalta kätevää, koska WordPressin ulkoasun virittäminen on hieman hankalaa ilman vastaavaa testikappaletta. Nyt näkee aina miltä lopputulos näyttää oikeasti.

Edelleen ulkoasun kokonaisilme on suhteellisen askeettinen, mutta aika näyttää mihin suuntaan ilme etenee. Sivuston aikaisemmatkin teemat ovat muutamaa poikkeusta lukuun ottamatta olleet suhteellisen hillittyjä ja sama trendi jatkuu varmaan edelleen. Tekniikan osalta kokeilussa on joitain CSS 3:n ominaisuuksia kuten @font-face, text-shadow ja box-shadow.

Helvetireader muuttaa Google Readerin minimaaliseksi

Googlen Reader on näppärä web-sovellus uutissyötteiden lukemiseen, mutta sen ulkoasu on perinteistä Googlea eli aivan kauhea. Onneksi eri selaimissa voi lisäosien avulla lisätä haluamilleen sivuille omia lisäominaisuuksia ja niinpä Helvetireader-skriptin avulla Google Readerkin muuttuu huomattavasti mukavammaksi.

Helvetireader muuttaa Google Readerin ulkoasun minimaaliseksi: syötteiden lukemiseen liittymättömät asiat piilotetaan hienovaraisesti ja värimaailmasta muokataan hillityn harmaa. Helvetiredear-käyttäjäskripti toimii kaikissa käyttäjäskriptejä tukevissa selaimissa kuten Firefoxissa Greasemonkey-lisäosan avulla, Operassa, Google Chromessa ja Webkit-pohjaisissa selaimissa (Safari) GreaseKit-lisäosan avulla.

Myös aikaisemmin Google Readerille oli saatavilla gReader-teema, mutta sen ylläpito on lopetettu. Google Reader muuttuu ajoittain ja teemojen pitää aina sen mukaa päivittyä. Tähän mennessä Helvetireader on päivittynyt hyvin ja uuden version ”lataaminen” on vain sivun päivityksen päässä, kun skriptiä ei asenneta vaan se haetaan Internetistä.

Asioita, joita konsolipelikehittäjien pitäisi korjata

Konsolipelaaminen on helppoa, mutta se voisi olla vielä yksinkertaisempaa. Pelikehittäjät ovat tehneet, varmasti ihan hyvällä tarkoituksella, muutamia asioita turhan hankalaksi ja pienillä muutoksilla pelaamisesta saataisiin vielä kitkattomampaa. Xbox Sam on listannut 11 ärsytyksen aihetta ja tässä omat poimintani kyseisestä listasta.

  1. Älä kysy minulta missä pelitalletukseni on, kun minulla on vain yksi tallennusväline liitettynä konsoliin. On aika yksiselitteistä missä se voisi olla.
  2. Laske minut hitaasti takaisin peliin, sen jälkeen kun olen laittanut pelin tauolle ja haluan jatkaa. Muutama sekunti olisi tarpeen, jotta sormet löytävät oikeille näppäimille takaisin. Etenkin musiikki- ja ajopeleissä tauolta palaamisen jälkeen peli menee puihin.
  3. Salli minun ohittaa välikohtaukset, etenkin jos samoja kohtauksia pitää katsella usealla eri pelikerralla kokonaan uudestaan.
  4. Anna selkeä visuaalinen etenemispalkki ladatessa, sillä haluaisin tietää ehdinkö latausajalla hakea lisää juotavaa keittiöstä vai en. Pelkkä pyörivä ympyrä ei ole riittävä.
  5. Kokoa vaikeustasosaavutukset yhteen nippuun. Jos pelaan peliä vaikealla-tasolla, en varmaankaan tule sitä pelaamaan uudestaan helpolla tai keskivaikealla.

Lisäksi myös konsolien valmistajilla eli Microsoftilla ja Sonylla on hieman kehitettävää käyttäjäystävällisyyden osalta. Molemmat toki haluavat, että pelaaja ostaa juuri heidän laitteensa, mutta pelaajan lukiuttaminen yhteen alustaan on hyödytöntä. Harva ostaa kuitenkaan molempia laitteita.

  1. Mahdollista verkkopelaaminen eri konsolimerkkien kesken. Useat pelit ovat saatavissa molemmille konsoleille, joten miksi ei voisi myös mahdollistaa verkkopelaamisen eri konsolien omistavien pelaajien kesken.
  2. Salli verkkopelaaminen ilman erillistä maksua. Pelistä ja nettiliittymästä on jo maksettu, joten miksi pitäisi vielä maksaa erikseen pelaamisesta.
  3. Käytä yhtenäistä standardia peliohjainten liittämiseksi ja käyttämiseksi konsolissa. Jos pelaaja on jo ostanut esimerkiksi Rock Bandin ohjaimineen Xbox 360:lle, ei hän varmaankaan osta sitä myös PlayStation 3:lle vain sen takia, että pääsisi pelaamaan kaverin kanssa verkossa.
  4. Älä hinnoittele konsolisi lisälaitteita aivan järjettömin hinnoin, sillä kohtuullisella hinnalla myös myynti kasvaisi.

Konsolipelaamisessa on varmasti monia muitakin asioita jotka ärsyttävät ja kaipaavat parannusta, mutta olisihan se elämä aivan turhan helppoa, jos kaikki vain toimisi.