onnistumisen edellytykset

24.2.2010 21:14
kategoriat: ohjelmointi
Olen tehnyt töissä jo toista vuotta samaa projektia, mutta sain yllättäen parin viikon pestin toisen asiakkaan sovelluksen kehitysprojektiin. Sovellus on pieni verkkosovellus, joka hakee tietoa yhdestä paikasta ja palauttaa ne kutsujalle. Nyt siihen piti lisätä samanlainen haku myös toisesta paikasta. Kuulostaa yksinkertaiselta.

No ei. Alkuperäinen haku tehdään ihan SQL-lauseilla suoraan tietokannasta. Uusi haku tehdään Rest-kutsuna netin yli. Tekniikastakaan ei ollut ihan varmaa tietoa, vaan Rest oli erään kollegani valistunut arvaus (joka onneksi osui oikeaan). Sain käyttööni valmiiksi kasatun paketin käytettävästä rajapinnasta ja pelkistetyn ohjeen siitä, miten uuden kohteen tiedot vastaavat vanhan kohteen käsitteitä. Rajapinnan varsinaisesta käytöstä ei tietenkään ollut minkäänlaista ohjetta tai esimerkkiä. Kun otetaan huomioon, että toimiala oli minulle täysin vieras ja ennen projektin alkua tiesin Restistä vain nimen ja että se liittyy jotenkin tiedon hakemiseen, odotukset eivät olleet kauhean korkealla.

Sovelluksen varsinaiset tuotanto- ja testiympäristöt ovat asiakkaan omassa verkossa, jonne ei työkoneeltani pääse, joten en pystynyt koodaillessa kokeilemaan, olenko onnistunut veikkaamaan hakujen toiminnan oikein tai edes sitä, minkälaista ja muotoista tietoa alkuperäinen haku palauttaa. Uuden haun lisäksi myös vanhaan hakuun tuli muutoksia, joten rajapinta sinnekin suuntaan muuttui. Hakua käyttävästä sovelluksesta vastaa tietenkin eri firma, joten heidän käsityksensä rajapinnan muutoksista saattoi olla hieman erilainen. Voisi sanoa, että hommassa ja sen onnistumisessa oli aika monta liikkuvaa osaa.

Pari ensimmäistä päivää kului googlaillessa ja sen jälkeen koodaillessa uskottavimmalta näyttävän ratkaisutavan mukaan. Pieniä vinkkejä ja dokumentinpalasia tippui hiljalleen omalta väeltä ja asiakkaan puolelta, joten kokonaiskuvakin hahmottui ja kahden viikon jälkeen sovellus alkoi olla valmis testattavaksi.

Testaus alkoi lupaavasti, sillä projektin käytössä oli kyllä tunnukset testipalvelimelle, mutta mitään ympäristöä ei ollut asennettu. Asiakkaan edustaja soitteli ympäriinsä ja sai selville palvelinohjelmiston nimen ja version. Sovelluspalvelimen asennuspaketti ja sen asennus- ja käyttöohjeet piti googlata ja sen jälkeen vielä yrittää viritellä koko homma toimimaan jotenkin yhteen uuden sovelluksen kanssa. Niinpä ällistys oli uskomaton, kun ensimmäinen testikokeilu palautti ihan oikeanlaista tietoa. Olisi pitänyt saada kuva omasta naamasta ja lattialle putoavasta leuasta.

Se uudempi haku ei tietenkään toiminut, koska paketista puuttui riippuvuuksia, joista meillä ei ollut ollut hajuakaan. Selvittelyä ei auttanut se, että sovelluksen käynnistäminen tuotti puolisen megatavua huttua lokitiedostoon. Kollegani löysi jostain sopivat paketit ja niiden asentelun jälkeen haku alkoikin toimia, ainakin osittain. Jälkeen päin selvisi, että rajapinnan ohjeisiin oli jäänyt virhe, jonka takia kaikki haut kaatuivat tekniseen virheeseen.

Täytyy myöntää, että asiakkaalle ei välttämättä jäänyt päivästä kovin vahvaa kuvaa, mutta olisi se voinut mennä huonomminkin.

Seuraavaa hommaa varten täytyy muistaa varmistaa, että ainakin osa näistä löytyy:
  • Kattavat määrittelyt
  • Teknisen ympäristön tiedot (tekniikat, palvelin, rajapinnat)
  • Edes jotain vaadittavaa osaamista tai aikaa opiskella tekniikkaa ennen projektin alkua
  • Mahdollisuus testata sovellusta omassa kehitysympäristössä
Toisaalta onhan se kivaa, että konsultillakin on vähän haasteita.

uusia hommia

7.1.2009 11:42
kategoriat: ohjelmointi
Kirjoittelenpa vähän yleistäkin asiaa työtilanteesta. Oltuani loppuvuoden asiakkaan tiloissa siirryin vuodenvaihteesta lähtien takaisin omalle toimistolle koodailemaan uutta projektia.

Edellistä hommaa tehtiin IBM Rational Application Developer 7.5:llä, joka Vistan kanssa muodosti aikalailla tappavan tehosyöpön yhdistelmän. Muistia lorahti pelkän kehitysympäristön ja testipalvelimen käyttöön toista gigaa ja Vistalle ja pakolliselle virustorjunnalle toinen mokoma ja koneen muu toiminta oli sitten sen mukaista. Käytössä oli myös timanttityökalun mukana tullut versionhallinta ja kollaboraattori, joka ei oikeastaan yhtään helpottanut työn etenemistä parin hengen projektissa, päinvastoin. Ylläpidettävästä ja kehitettävästä sovelluksesta ei tietenkään viitsitty tehdä saati ylläpitää mitään dokumentteja, joten suunnilleen kaikki hommat alkoivat sillä, että tuijotellaan koodia ja sekalaisia XML-tiedostoja niin kauan, että henki alkaa puhutella ja sen jälkeen koodaillaan tarvittava muutos niin hyvin, kun se puutteellisen toimialaosaamisen puitteissa vain onnistuu. Lopputulos ei yleensä ollut ihan ensimmäisellä kerralla sitä mitä haettiin, joten tuota sitten toistettiin niin kauan, että asiakas oli tyytyväinen. Kun muutos sitten meni tuotantoon, korjailtiin vähän lisää, sillä oikeassa elämässä mikään ei koskaan ollut niin yksinkertaista kuin miltä se testiympäristössä (tai konsultin ajatuksissa) näyttäisi olevan.

No, pääsin sitten onneksi uuteen projektiin, joka tuntuu heti alusta alkaen paljon paremmin hallitulta ja etenkin dokumentoidulta. Projektissa toteutettava sovellus on yksinkertaisempi ja selkeämpi eikä siinä yritetä yhdistellä lukemattomia erilaisia arkkitehtuureita sitä mukaan, kun projektin vetäjä tai asiakkaan vastuuhenkilö niitä keksivät. Toteutusvälineenä on huomattavasti käyttäjäystävällisempi NetBeans, joka RAD:in jälkeen tuntuu todella selkeältä ja kevyeltä. Lähitulevaisuus näyttää siis valoisalta. Toki joudun edelleen hätätilanteessa antamaan tukea edelliseen projektiin, mutta nyt voin sentään pääsääntöisesti tehdä jotain sellaista, josta normaali ihminen saa edes jotain selkoa.

mobiilijava

24.11.2006 12:21
kategoriat: ohjelmointi, puhelin
Nyt kun käytössä on uusi puhelin, johon saa vielä asennettua Java-sovelluksia (sai tosin vanhaankin), heräsi taas ajatus J2ME:n opettelusta. Puhelimestani puuttuu muistio eikä kaikkia muistiinpanoja viitsi kirjoitella tekstiviesteinä ja talletella luonnoksiin.

Kokeilin joskus tuota mobiili-javaa, mutta silloin en päässyt oikein aloittamista pitemmälle. Nyt on käytössä uusi versio ympäristöstä (MIDP 2.0) ja muutenkin perus-javakokemusta paljon enemmän, joten hommasta voisi vaikka tullakin jotain. Alkuun voisi päästä hyvin vaikka Sunin ohjeilla ja työkaluilla.

binäärikello

22.11.2006 15:15
kategoriat: ohjelmointi
Tänään Teknoblogissa askarrellaan kätevä pieni binäärikello. Sorsat on lainattu osoitteesta www.javascript-page.com ja niihin on viritelty ihan itse kokonaisluvun kääntäminen kuusinumeroiseksi binääriluvuksi. Kello käynnistyy käyntiin-linkistä.

käyntiin / pois
Kello synnähtää tähän, kun painat yllä olevaa linkkiä


Koodi löytyy selaimella sivun lähdekoodista, mutta laitetaan se nyt vielä tähänkin:


var clockID = 0;
var bin0 = "-";
var bin1 = "/";
var limiter = " ";

// Päivittää kelloa ja tulostaa ajan // kello-nimiseen div-elementtiin function UpdateClock() { if(clockID) { clearTimeout(clockID); clockID = 0; } var tDate = new Date(); var timeStr = toBin(tDate.getHours()) + limiter + toBin(tDate.getMinutes()) + limiter + toBin(tDate.getSeconds()); var timeNode = document.createTextNode(timeStr); var div = document.getElementById("kello"); if (div.hasChildNodes) { if (div.lastChild) div.removeChild(div.lastChild); } div.appendChild(timeNode); clockID = setTimeout("UpdateClock()", 1000); }

// Muuttaa numeron kuusinumeroiseksi binääriksi (= 0..63) function toBin(i) { var b = ""; for (var o=0; o<6; o++) b += bin0; for (var o=6; o>0; o--) { if (i >= Math.pow(2, o-1)) { b = b.substr(0, 6-o) + bin1 + b.substr(7-o); i -= Math.pow(2, o-1); } } return b; }

// Käynnistää kellon function StartClock() { if (document.getElementById("kello")) clockID = setTimeout("UpdateClock()", 500); } }

// Pysäyttää kellon function KillClock() { if(clockID) { clearTimeout(clockID); clockID = 0; } }

testaus

14.11.2006 10:06
kategoriat: ohjelmointi
Verkkopalvelun testaus on lopuillaan ja enää on pari kiusallista ongelmaa, jotka eivät vain tahdo ratketa. Asiaa hankaloittaa, että ns. virallista testipalvelinta ei pääse itse hallinnoimaan vaan kaikki asennukset ja käynnistykset pitää erikseen tilata ja sitten odotella. Muutenkin palvelussa alkaa olla jo ihan liikaa liikkuvia osia, että mitään ongelmaa saisi ratkaistua mitenkään helposti tai ainakaan itse. Oma palvelimemme kyllä on täysin käytettävissä, mutta siellä on tasan kolme testitapausta, joista ei enää tässä vaiheessa ole yhtään mitään hyötyä.

Mitenhän sitä eläisi MySQL:n päälle tehdyn PHP-pohjaisen blogisoftan kehittelyllä? Olisi ainakin helpommin hallittava ympäristö ja vähemmän riippuvaisuuksia muista tekijöistä. Tuotekin olisi jo melkein valmiina. Ehkä tämä on parempi pitää ihan harrastuksena.

[päivitys 13:55]
Kyllä se sieltä tulee, kun vähän potkii. Nyt homma toimii, tosin ei ollut edes omista tekemisistä kiinni vaan ihan kaikki liikkuvat osat eivät olleet mukana.
  Ylös