Skip to main content

Posts

Showing posts from January, 2013

Instacode

Tästä lähtien koodipätkät pelkästään kuvina! http://instacode.linology.info/38678

ykj2wgs84

Viljelysuunnitteluprojektissa olennaisena osana ovat luonnollisesti pellot. Suomalaiset maanviljelijät saavat omat peltotietonsa koordinaatteineen maaseutuviraston GISistä. Teimme oman parsijan, joka parsii koordinaatit ja peltojen nimet mavin viljelijäpalvelusta. Koordinaatit ovat palvelussa YKJ tasokoordinaatistossa ja ne täytyy muuttaa karttapalveluja ja mobiiliosan GPS träkkeriä varten WGS84 koordinaateiksi. Tein muunnosoperaatiota varten melko mielenkiintoisen metodin public double[] ykj2wgs84(double E, double N) { double f = 1.0D / 297.0; double el = f / (2 - f); double a = 6378388.0; double A1 = (a / (1 + el)) * (1 + (Math.pow(el, 2) / 4) + (Math.pow(el, 4) / 64)); double E0 = 3500000.0; double lambda_0 = 27 * (Math.PI / 180); double k_0 = 1.0D; double eps = N / (A1 * k_0); double n = (E - E0) / (A1 * k_0); double h1 = ((((1.0D / 2.0) * el) - ((2.0 / 3.0) * Math.pow(el, 2))) + ((37.0 / 96.0) * Math .pow(el, 3))) - ((1.0D / 360.0) * Math.

Koodausrutiini

Olen osana maatalouden viljelysuunnitteluun liittyvässä projektissa, jossa on kaksi muuta tekijää, jotka ovat opiskelukavereitani. Projekti on lähtenyt liikkeelle syksyllä 2011 ja on sitä myöden edennyt enemmän tai vähemmän tasaisesti. Haasteena on rakentaa helppokäyttöinen ohjelmisto ei tekniselle käyttäjäkunnalle. Lisäksi viljelysuunnitteluun liittyvä lainsäädäntö on suhteellisen monimutkaista. Olen vastannut projektin ominaisuuksien valinnoista ja niiden priorisoinnista, mikä on myös johtanut siihen että olen koodannut ylivoimaisesti eniten ominaisuuksia. Epätasainen työnjako on tuttua opiskelijaprojekteissa ja miksei myös muissa projekteissa. Opiskeluvaiheessa tämä ei itseäni ainakaan haittaa: oma ammattitaitoni kasvaa lähes riskittömässä ympäristössä. Palkkaa tosin ei saa. Kokemattiomien koodaajien kesken on hankalaa löytää itseluottamusta projektin eteenpäin viemiseen. On vaikeaa saada rohkeutta tai kannustaa muita tekemään. Varsinkin jos kohde ei ole tuttu ja taskit

Digilasku osa 5

Digilaskussa siirretään suurin osa usein tarvittava tietokannassa oleva data ohjelman muistiin. Vaatimella tämä onnistuu helposti, kunhan ymmärtää miten instanssit ja istunnot toimivat. Tavoitteena on siis hakea data aina kerran ja vain siihen liittyvään istuntoon. Vaatimessa on oma metodinsa, jolla saa nykyisen instanssin sovelluksesta, mutta se osoittautui ongelmalliseksi. Ratkaisuna käytimme ThreadLocal patternia, josta kirjoitettu lisää mm. täällä https://vaadin.com/wiki/-/wiki/Main/ThreadLocal%20Pattern Käytännössä, kun ohjelmainstanssi luodaan, se tallennetaan staattiseen muuttujaan, joka on sidottuna ainoastaan nykyiseen instanssiin (säikeeseen). private static ThreadLocal<DigilaskuApplication> instance = new ThreadLocal<DigilaskuApplication>(); Jos halutaan käsitellä jotain instanssiin liittyviä tietoja, siihen päästään käsiksi helposti mistä tahansa ohjelmaa Instanssiin liittyvän tiedon haku DigilaskuApplication. getInstance ().