2005-04-29

Ensimmäinen ja viimeinen

Alkamassa on toinen viikko ilman PowerBookia. Koneen palaamista odotellessa on aikaa tutustua siihen, kuinka nimellä Scanbox Entertainment kulkeva DVD-talo aliarvioi asiakkaitaan.

Yllätyin tänään melkoisesti, kun eräästä Suonenjoen taajaman liepeillä sijaitsevasta pikkukaupasta löytyi DVD-hylly. Vielä enemmän yllätti, että tämä hylly sisälsi myös yhden katsomisen arvoiselta vaikuttavan elokuvan, nimittäin Sky Captain and the World of Tomorrow.

Kun laitoin levyn soittimeen, huomasin jotain hälyttävää: vaikka soittimen valikon mukaan tekstitys on kytketty pois päältä, ei se osoita mitään ruudulta häipymisen merkkejä! Ehkä tein jonkin virheen? Levy tietokoneeseen ja uusi kokeilu. Ei muutosta. Tutkin levyn takakantta tarkemmin ja huomaan, että erään merkitsevän tähden. Kiva. Tekstitystä ei voi kytkeä pois.

Seuraa kahden tunnin pituinen jakso, kun yritän katsoa elokuvan Windows-koneella, ilman tekstejä ja ilman nykimistä. Itsestäänselvä ensimmäinen yritys, eli VideoLAN Client kun osasi kyllä näyttää levyn ilman tekstejä mutta ääni nyki aina silloin tällöin. Lopulta onnistuin, kun avasin levyltä oikean tiedoston Media Player Classiciin.

Ensimmäinen kerta kun näen tällaista, tyypillisestihän DVD tarjoaa parikymmentä tekstitysvaihtoehtoa ja puolenkymmentä ääniraitaa. Ja kun muistaa, miten aikanaan DVD:eitä mainostettiin katselukokemuksen monipuolisuudella, ei voi kun ihmetellä mitä järkeä tässä nyt on. Taiteilijan moraalisia oikeuksia ei rikota, sillä juurihan haluaisin elokuvan lähemmäs alkuperäistä asuaan. Lisäksi kaikki haluamani sisältö on jo ostamallani levyllä. Selitystä pitää varmaankin siis hakea yrityksestä rajoittaa levyn myynti pohjoismaihin, sillä pohjoismaiset kielet löytyvät tekstityksen vaihtoehtoina.

Tämänpäiväisellä on kolme seurausta:
1. Sky Captain jää ensimmäiseksi ja viimeiseksi ostamakseni Scanbox-julkaisuksi
2. Soitan maanantaina Scanboxiin ja ilmaisen asiallisesti tyytymättömyyteni
3. Olen entistä iloisempi siitä, että olen EFFI:n jäsen

Mikähän on vuorossa seuraavaksi? Kiinteäksi osaksi kuvaa "poltetut" tekstit, eli henkinen paluu VHS-aikakaudelle? Vai pitääkö teksteistä, tai niiden poistamisesta, ehkä maksaa erikseen?

2005-04-19

Surrin surrin surrin

PowerBookin kiintolevy päättikin yllättäen ryhtyä työtaisteluun. Tiedonsiirto hidastui aluksi murto-osaan normaalista partakonetta muistuttavan surinan saattelemana. Sen jälkeen kaikki työ lakkasi varsin ikävän hankaavan äänen myötä. Tässä vaiheessa työnantajapuoli päätti sulkea neuvotteluyhteyden kokonaan pitkällä virtanapin painalluksella.

Onni onnettomuudessa on, että meneillään on vasta kahdestoista kuukausi koneen hankkimisen jälkeen, eli takuuseen menee. Samoin mitään korvaamatonta ei tullut menetettyä, sillä tapanani on ollut ottaa varmuuskopiot tärkeimmiksi katsomistani tiedoista. Sähköposti on siis tallessa, kuten myös salasanat, 20% valokuvista ja erinäiset harjoitustyöt. Musiikin voin ripata CD:iltä uudestaan.

Mutta juuri nyt ei voi kuin odotella ja toivoa nopeaa ratkaisua.

2005-04-18

GET/POST -symmetria ja hierarkiset URL:ät

Eräs web-sovellusten peruspiirteistä on, että monella GET-metodia käyttävällä kyselyllä on POST-metodia käyttävä vastineensa. Kun tämän symmetrian tiedostaa, voi sitä alkaa hyödyntää omassa kehitystyössään.

Perinteisen web-sovelluksen, millä tässä yhteydessä tarkoitetaan Ajaxiin perustumatonta sovellusta, tulisi toimia seuraavasti:

URL tunnistaa tietyn kohteen, esimerkiksi verkkosivun, viestin keskustelussa tai postauksen blogissa. Selain hakee tämän kohteen käyttäjän nähtäväksi GET-metodia käyttävillä kyselyillä. Selain lähettää tätä kohdetta koskevat muutokset POST-metodia käyttävillä kyselyillä.

Sekä GET- että POST-kyselyn yhteydessä pitää tehdä samankaltaisia asioita. Yksi näistä on pääsyntarkistus, toinen takaisin palaavan sivun muodostaminen (ellei takaisin sitten palauteta uudelleenohjausta).

Tästä syystä osoittautuu todennäköisesti hyödylliseksi, että GET- ja POST-kyselyillä on suurelta osin yhteinen koodipolku. En pari vuotta sitten ymmärtänyt tätä kunnolla ja siksi eräässä järjestelmässä GET- ja POST-kyselyiden käsittely tapahtuu eri koodipoluilla ja siksi koodia toistetaan usein turhan paljon.

Toinen hyvä käytäntö on, että URL:t muodostavat hierarkian. Esimerkiksi osoitteen polkuosa siis menisi näin:

/forums/
/forums/42/
/forums/42/24/
/forums/42/24/edit

Näitä olisikin erittäin järkevä käsitellä myös koodissa hierarkiana, eli vaikkapa pääsyntarkistuksen tapauksessa aluksi tutkitaan, onko pääsyoikeutta keskustelualueille. Seuraavaksi katsotaan, löytyykö oikeus alueelle 42 ja sitten viestiin 24 ja lopuksi mietitään, onko käyttäjällä oikeutta viestin 24 muokkaamiseen. Koodipolku kulkee siis alaspäin kohti muokkaamista, eikä hyppää suoraan muokkaamiseen, josta pitää muistaa tehdä muut tarkistukset. Tässäkin tein aikanaan virheen.

Oma lukunsa sitten on, miten nämä käytänteet sitten kussakin ohjelmointikielessä toteuttaa siististi ja hyvää ohjelmointitapaa noudattaen.

2005-04-15

Huono vitsi

Tunnetko vitsin, jossa sumuun eksynyt kuumailmapalloilija pysähtyy kysymään neuvoa pilvenpiirtäjän asukilta: "Voitko kertoa missä minä olen?" Vastaushan tähän on: "Tietysti, olet kuumailmapallon korissa." Tänään kohtasin vastaavan tilanteen, jossa tietoa kyllä löytyi, mutta ei valitettavasti sitä hyödyllistä tietoa.

Visa-kortti voidaan myöntää 20 vuotta täyttäneelle henkilölle, jolla ei ole luottohäiriöitä, joka on hoitanut raha-asiansa moitteetta ja jolla on säännöliset tulot. Tämä sama asia toistetaan myös Osuuspankin OP-Visa -sivuilla.

Vasta tehtyäni hakemuksen saankin sitten tietää, että OP-Visa -yhdistelmäkorttia ei suositella alle 23-vuotiaille, eikä sitä siis myönnetä tuon rajan alittaville kuin poikkeustapauksissa. Opiskelija-Visa ei myöskään tule kysymykseen, sillä opintoviikot ovat vasta jossain kolmenkymmenen tienoilla ja pitäisi olla 60.

Kiitos vain. Ei siten, että Visa olisi tarpeellinen samassa mielessä kuin esimerkiksi verkkopankkipalvelut. Mutta esimerkiksi ADC-opiskelijajäsenyys ja Xbox Live jäävät siis hankkimatta. Ärsyttää lähinnä se, että kulutin toista tuntia verkossa yrittäen selvittää etukäteen, onko minun mahdollista saada kortti vai ei. Jos huonot mahdollisuuteni olisi kerrottu jo etukäteen, olisin unohtanut koko asian saman tien.

Ehkä ratkaisu on Sammon asiakkaaksi siirtyminen. Heidän myöntämäänsä Visa Electron -korttia voi käyttää ostosten maksuun Electronia tukevissa verkkokaupoissa myös vaikka kauppias ei tukisikaan Verified by Visa -varmennusta. ADC-jäsenyyteen tuo ei kelpaa, mutta kuulemani perusteella Xbox Liveen kyllä, samoin myös jo aika moneen ulkomaiseen verkkokauppaan.

2005-04-14

Kollektiivinen jokin

Re: (Warning 56k) Alt text is not displayed as a tooltip over <img> (image).

Mozilla-projektin bugitietokannan seuraaminen paljastaa usein mielenkiintoisia keskusteluja. Tai mielenkiintoisia ainakin samassa merkityksessä kuin ketjukolarikin on mielenkiintoinen. Tätä merkintää alt-attribuutista puuttumisesta työkaluvihjeenä on kyllä vaikea ylittää.

Viihteen lisäksi bugitietokannan seuraaminen tuo selväksi yhden asian: sosiaalinen sopimus (kansalaissopimusta arkipäiväisemmässä merkityksessä) on todella hyödyllinen ajattelun apuväline. Toisin sanoen, henkilöryhmien A ja B välillä voi olla muitakin suhteita kuin se että A palvelee B:tä tai päinvastoin. Väitteet "kehittäjät palvelevat käyttäjiä" ja "käyttäjät palvelevat kehittäjiä" ovat kumpikin epätosia. Siitä kiitos.

2005-04-12

Ajaxin ja Flashin suhteesta

Re: JavaScript is not the devil's plaything, This is not another XMLHttpRequest article ja Drawing a line in the sand: No more IE 5.x support in Basecamp and our future products.

Rakennetaanko tulevaisuuden web-sovellukset JavaScriptistä, jonka seassa on vähän HTML:ää tai XML:ää, eikä toisin päin? Johtuuko tämä palvelimen kanssa suoraan kommunikoivia JavaScript-sovelluksia käsittelevien artikkelien tulva uudesta hienosta nimestä ja uutuuksien seuraamisesta, vai onko nyt vain hyvä tilaisuus kirjoittaa jo kauemmin mieltä vaivanneesta asiasta?

En tiedä, jään seuraamaan vielä tilannetta. Toivoisin vain, että joku artikkeli vihdoin vastaisi yhteen pitkään minua mietityttäneeseen asiaan. Lähes jokainen JavaScriptiä tukeva selain tukee myös Flashia. Miksi siis Flashia edellyttävillä sovelluksilla (saati sitten sivustoilla) on edelleen huono maine, mutta JavaScriptin edellyttäminen on askel kohti parempaa tulevaisuutta?

Ei minulla periaatteessa ole mitään nyt visioitua uutta uljasta maailmaa vastaan. Oikeastaan olisi aika mukava lähteä liikkeelle suunnittelutyöhön siitä oletuksesta, että JavaScriptiä saa käyttää kaikkeen missä se tuntuu hyödylliseltä. Haluaisin kuitenkin tietää, miten tämä visio eroaa eilisen toteutumattomasta visiosta.

Lisäys 13.4.: Lisätty pitkähköä, puolivalmista pohdintaa kommentteihin. Kannattaa myös lukea myös ensimmäiset kommentit.