sunnuntai, maaliskuuta 30, 2008

Geokooderin taikasanoja

API:n kautta toimivan GClientGeocoderin tietokantaa päivitetään silloin tällöin. Esim. Helsingin paikka vaihtelee. Tänään se on Mannerheimintiellä Kaivokadun/Simonkadun risteyksesssä. Joskus se oli jopa Tähtitorninmäellä mutta yleensä aseman lähimaastossa.

Monet geokooderit tyrkyttävät 'Helsinki FI'-haulla ensimmäisenä vaihtoehtona Taivassalossa sijaitsevaa 'Helsinki' nimistä kylää. Nyt onnistuin löytämään kyseisen paikan myös Googlen geokooderilla. Se löytyy haulla: 'Helsinki FI FI'

'Tampere fi fi' antaa kymmenen sijaintia.

Varsinainen taikasana on koko ajan ollut 'AND' lisättynä mihin tahansa hakuun. Alunperin se ilmeisesti tarkoitti samannimistä paikkatietofirmaa (oli hankala googlattava). Nyt 'and' sanan lisääminen hakuun tuo business-hakutuloksia, museoita ja kouluja! Hakutarkkuus ('accuracy'-attribuutti) on 9, jota ei pitäisi edes esiintyä.

'OR'-sana ei toimi tällä hetkellä.

Tällä sivulla voi leikkiä. Se näyttää kaikki hakutulokset, ei pelkästään ensimmäistä. Nyt sen nuppineuloja voi siirtää raahaamalla jos esim. etsii kesämökkinsä koordinaatteja. Samoin koordinaattien syöttö hakutermiksi käy nyt näppärämmin oikean napin klikillä.

lauantaina, maaliskuuta 29, 2008

Modulirakenne

Api muutettiin versiossa 2.93 modulirakenteiseksi.

Muutos tapahtui käsittämättömän kivuttomasti. Kaikki dokumentoidut asiat toimivat kuten ennenkin.

Ensin latautuuu apin main.js, sitten oma scriptisi, sen jälkeen ne lisäosat, joita oma scriptisi tarvitsee.

Ainoastaan .getOverview()-metodi takkuilee, mutta sitä ei olekaan dokumentoitu ja sekin toimii pienellä viiveellä.

JavaScript ! Java

Heti tuli sähköpostia, joka paljastaa, että edelleen luullaan JavaScriptiä Javaksi.

JavaScript on maailman yleisin ohjelmointikieli. Maailmassa on enemmän JavaScipt-kääntäjiä kuin tietokoneita, koska jokaisessa tietokoneessa on vähintään yksi webbiselain ja jokaisessa webbiselaimessa on JavaScript-kääntäjä.

Kun nettisivun html-koodissa on <script, ymmärtää selain oletusarvoisesti, että nyt ruvetaan joraamaan JavaScriptin ordereitten mukaan.

Java on ohjelmointikieli, jolla kirjoitettuja 'appletteja' voidaan suorittaa koneessa, johon on erikseen asennettu Java Runtime. Nettisivu voi kutsua applettia suoritettavaksi.

JavaScript oli kieli, jolla alunperin vain häirittiin ihmisiä, mutta nyt sovellukset kuten Gmail tai Google Maps ovat näyttäneet, että se on siunaus webille.

Asiaa yrittää valottaa Douglas Crockfordin artikkeli:
'The World's Most Misunderstood Programming Language Has Become the World's Most Popular Programming Language'.

JavaScriptillä pystytään muokkaamaan ja luomaan html-koodia ja css-määrittelyjä. Esim tämän sivun html sisältää vain otsikot. Kaikki muu on luotu JavaScriptillä. Java ei ymmärtääkseni pysty vaikuttamaan nettisivun sisältöön.

DHTML tarkoittaa JavaScriptin ja HTML:n seurustelua. Samaa tarkoittaa myös DOM. Se on html:n api, jonka kautta JavaScript pääsee lukemaan ja muokkaamaan html-koodilla tehtyä webbisivua. Javalla ei ole tätä mahdollisuutta.

Epäselvien selitysten yhteenvetona:
- JavaScript on kaikissa webbiselaimissa ja siksi osa webbiä. JavaScript koodia on lähes kaikilla sivuilla
- Java on ohjelmointikieli, jolla ei ole paljonkaan tekemistä nettisivujen kanssa

Historiaa kannattaa googlata. En muista jätkän nimeä, mutta luonnollisesti historia juontaa Netscapeen. JavaScript ja Java olivat alussa kilpailijoita.

Tärkeintä on muistaa, että JavaScript ja Java ovat kaksi tyystin eri asiaa.

P.S. Mikrosoft ei tietenkään tunnusta JavaScriptiä. Heidän mielestään se on JScript, jonka he keksivät ihan itse. Siksi heidän ei tarvitse noudattaa Ecmascript-standardia.

Softaprojekti lähtee helposti käsistä

Uteliaisuus pakotti käväisemään Sampo-Pankin sivulla. Pidin Javan poiskytkettynä kuten se on ollut jo yli vuoden.

Kirjautumissivulle päästyäni alkoi läppärin tuuletin suhista täysillä. Koneeni prosessori oli siis pantu tekemään paljon töitä.

Firebug kertoi että pelkälle kirjautumissivulle mentäessä oli koneeseeni ladattu puoli megaa koodia, josta valtaosa näyttää olevan kävijän laitteiston tunnistamiseen tähtäävää JavaScriptiä. Kyseinen koodi oli syönyt muistiani lähes kaksisataa megaa. Entä jos olisin Sampo-Pankin asiakas ja pääsisin sisälle?

Kukaan ei jaksa käydä noin isoa koodia läpi pelkästä uteliaisuudesta mutta löysin vahingossa virheen jo ensimmäiseltä sivulliselta. Ensin määritellään funktio ClientSniffer(). (JavaScriptin kielioppitavoissa funktiot muuten alkavat aina pienellä kirjaimella.) Ja heti sen jälkeen:
window.is = new ClientSniffer();
Ei varmaankaan ole tarkoitus luoda kaksoiskappaletta juuri luodusta funktiosta. Mitä vikaa vanhaan ehti jo tulla? Ajatus on jokin muu, mutta näin saadaan muistia palamaan ja koodille pituutta. Kun kyseinen rivi ei tuonutkaan haluttua lopputulosta, on se paikattu myöhemmin koodissa jollain uudella vastaavalla. Koodin kommentointi vaikuttaa tanskankieliseltä.

Diagnoosina matkin hammaslääkäriäni muutaman vuoden takaa: 'Tätä ei voi enää korjata, tämä pitää poistaa.'

Kyseisessä katastrofiprojektissa on jotain hyvääkin. Se pani pohtimaan mikseivät kaikki softaprojektit johda kaaokseen.

Motivaatiosta on kysymys. Itsekin ramppaisin jatkuvasti tupakalla jos joutuisin nappulaksi kyseisenlaiseen projektiin.

M.O.T. (mitä opimme tästä)

Fuusaukset (mashupit) ovat tyypillisesti kooltaan yhden ihmisen tai pienen ryhmän projekteja. Tylsän datankeruun ja kurinalaisen apien kirjoittamisen ovat jo tehneet jotkut muut. Fuusauksen kirjoittajalle jää se magein, eli luova työ.

Lisäys pari tuntia myöhemmin: Sampo-Pankin sivu oli jäänyt välilehdelle auki. 'Back'-painikkeen painaminen kiihdyttää vain tuuletinta; ei päästä pois sivulta. WTF.

torstaina, maaliskuuta 27, 2008

Säädettävät nuppineulat eli MapIconMaker

Pamela julkaisi yllättäen toissapäivänä MapIconMaker -nimisen avoimen koodin skriptiprojektin. Se tekee nuppineulan koon ja värin säädettäväksi.

Google Mapsin markkerit ovat PNG-muotoisia kuvia. Osittain läpinäkyvien PNG-kuvien tuottamiseen ja työstämiseen tarvitaan käytännössä PhotoShop ja aikaa. Nyt asia muuttui. Jos pysytään perusnuppineulan muodossa, ei grafiikkaa tarvitse editoida. Se tilataan Googlen palvelimelta.



Google Chart on alunperin Spreadheets taulukkolaskennan laajennus. Viikko sitten se sai lisäominaisuuksia ja sen api julkaistiin. Samalla poistettiin kaikki käyttöehdot!

Kuvan piirakka on osoitteessa:
http://chart.apis.google.com/chart?
cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World

Google Chart API on vain url:n parametrien määrittelyä. Esimerkin parametrit ovat diagrammityyppi, data, mitat ja otsikot.

Kun diagrammityypiksi annetaan 'mm', ilmestyy tuttu Google Mapsin virtuaalinuppineula. Muina parametreinä annetaan koko ja kolme väriä: sisus, ääriviiva ja päälaen kiilto. MapIconMaker huolehtii myös markkerin muista komponenteista: varjo, transparentti ja sen imagemap.

Google Chart palauttaa grafiikkatiedoston niin nopeasti, ettei kuvaa välttämättä tarvitse tallentaa omalle serverille. Jos kartan markkerit ovat samanlaisia, hakee selain vain yhden kuvatiedoston ja lukee sen jälkeen omaa välimuistiaan - paitsi IE. Internet Explorerissa on ikävä suunnitteluvirhe jonka vuoksi se hakee samaa kuvatiedostoa niin monta kertaa kuin kartalla on markkereita. Se kuormittaa serveriä ja hidastaa markkereiden latautumista. Siksi koodiin kannattaa järjestää markkerin esilataus.

Yksi Google Chartin diagrammityyppi on maakohtaisesti väritettävä maailmankartta.

lauantaina, maaliskuuta 15, 2008

Lapsipornoa

Minulta vaaditaan mielipidettä, on kai se annettava:

1.) Internet on suurin siunaus, joka ihmiskuntaa on kohdannut tuhansiin vuosiin.

2.) Valtaapitävien on vaikeata mahdotonta tajuta, että kansalaisilla on systeemi, joka ohittaa heidät ja joihin ei edes lakeja säätämällä voi vaikuttaa.

Olkaamme avoimia kansalaisia.

perjantaina, maaliskuuta 14, 2008

Google Transit

Google Transit on julkisen liikenteen aikataulu- ja reittihaku. Kuten vaikkapa YTV:n vastaava mutta muutaman vuoden tekniikassa ja käytettävyydessä edellä.

Tiedoittivat että kansalaiset muistuttaisivat paikallista liikennelaitosta toimittamaan tarvittavat tiedot päästäkseen mukaan Google Transitiin.

Tämä on nyt kansalaisen ja julkisen liikenteen käyttäjän vetoomus, että Suomen julkinen liikenne toimittaisi reittinsä ja aikataulunsa Googlelle. He ovat luvanneeet ilmaiseksi huolehtia karttapohjaisista pysäkkiaikatauluista ja reittihausta.

Sanomattakin on selvää, että tällainen ilmainen tarjous ei käy jäykille laitoksille. Kuitenkin muutaman vuoden sisällä kaikki ovat siinä mukana. Suomalaiset liikennelaitokset - pliis osoittakaa olevanne edelläkävijöiden joukossa.

Google toivoo datan tietyssä muodossa. Paketoiminen tähän 'tiettyyn muotoon' on tietokantameedioille arkipäivää.

Nyt voisivat liikennelaitokset pelastaa Suomen kolhiintunutta mainetta nettimaana.

Lisäys: HKL on toki osoittanut olevansa edelläkävijöiden joukossa.