Kas noin, Pinserin ääkkösongelma on nyt korjattu, tavallaan. Korjaukseen liittyi jonkin verran kiroilua, vähän häkkeröintiä, mietiskelyä tietokoneiden eroista ja elämänfilosofinen opetus.
Alla seuraa pitkä ja hyvin nörtähtävä tarina. Toivottavasti viihdyt sen parissa.
Alkuperäinen ongelma oli siis se, että Pinserin kaikessa sisällössä olevat ääkköset noudattavat vanhaa 8-bittistä iso-latin-standardia. Jossain vaiheessa ympäröivä maailma oli siirtynyt uuteen utf-8-merkistöön, mutta en ollut koskaan jaksanut päivittää Pinserin tietokantaa koska tiesin sen tulevan olemaan hankalaa. Vuosi vuodelta kirjoituksia ja kommentteja kertyi enemmän eikä merkistömuunnos tuntunut ajankohtaiselta. Nyt kuitenkin jälleen yksi ohjelmisto (tällä kertaa Posterous) suostui käyttämään vain uudenaikaisia ääkkösiä ja siten sotki Pinserin tekstejä.
Oli tullut aika uudistaa Pinserin kirjoitukset, kommentit ja sivupohjat uuden vuosituhannen merkistöstandardiin. Tervetuloa, UTF-8.
Aiemmin ehdin kysyä lukijoilta neuvoja mahdollisimman vaivattomaan muutokseen ja sain joukon hyviä vastauksia. Mikään valmis ratkaisu ei kuitenkaan olisi tullut toimimaan koska a) Pinserin tietokanta sisältää muutakin kuin Pinserin tietoa eikä sitä parane muokata tässä vaiheessa ja b) suurin osa ohjeista oli tehty pari vuotta vanhoille WordPressin versioille ja jossain kaukaisen foorumin pimeimmässä nurkassa todettiin lakonisesti että jos ohjeita käyttää 2009-malliseen WordPressiin, tietokanta todennäköisesti tuhoutuu.
Tiesin tämän todeksi, sillä tuhosin Pinserin tietokannan pari kuukautta sitten eräällä tällaisella palikalla. Kaikista kommenteista katosivat sekä ääkköset, että kaikki ääkkösten jälkeen tulevat tekstit. Jouduin pyytämään internet-operaattoriltani koko tietokannan hätäpalautusta (koska en tietenkään ollut ottanut varmuuskopioita).
Merkistömuunnos täytyi tehdä siis käsin. Kaikki automaattiset operaatiot olivat tuomittuja päättymään katastrofiin tavalla tai toisella. Käärin hihat, kaivoin WordPressin sivuilta ohjeet ja aloin hommiin.
Verkossa näkee usein lyhyitä tarinoita joissa tietokoneiden käyttöjärjestelmiä käytetään arkipäivän ilmiöiden vertauskuvina, hieman liioitellen ja stereotyyppisiä asioita korostaen. Esimerkiksi näin:
"Windowsin tapa hoitaa blogien ääkkösongelma olisi tukea kaikkia ääkkösformaatteja maailman loppuun asti. Kymmenet ja taas kymmenet ohjauspaneelit takaavat sen, että oikea asetus löytyy lopulta. Sitten blogi hidastuisi ja alkaisi kaatua 10 kertaa päivässä.
Linuxin tapa hoitaa blogin ääkkösongelmat on todeta, että kaikki asiat ovat korjattavissa muutamalla tarkasti valitulla SQL-lauseella, konvertointiskriptillä ja lähdekoodin puukottamisella. Referenssitietokannasta löytyy kyllä kaikki tarvittava tieto. Jos joku ohje ei toimi, se on vähän vanha ja sinun täytyy itse viritellä sitä.
Macin tapa hoitaa ääkkösongelma olisi se, että jonain kauniina päivänä kaikki ääkköset muuttuvat uudenlaisiksi. Macin käyttäjä ei kuitenkaan huomaa sitä, vaan hän jatkaa höyryävän latten siemailua kuin mitään ei olisi tapahtunut. Jos katsoo oikein läheltä, Ä-kirjaimen pilkut kimaltelevat ehkä hieman aiempaa kirkkaammin."
Pinseri sijaitsee Linux-palvelimella. Tiedossa oli siis konvertointia ja puukottamista. Ohjeessa neuvottiin konvertoimaan ensin tietokannan taulujen muutettavat kentät yhdestä tietotyypistä toiseen. Kun pääsin kohtaan "toista tätä kunnes kaikki on muutettu", tajusin äkkiä että muutettavia kenttiä ei ole yksi tai kaksi, vaan kymmeniä. Kaikkia ei tarvinnut tosin muuttaa, vaan kombinaatioiden joukossa oli viitisen oleellista muutettavaa. Ohjeessa ei tietenkään kerrottu mitä nämä olivat. No, otin selvää.
Sitten tuli taas mutkia matkaan. Tietokanta ilmoitti noin puolet muokkauksista tehtyäni että korjausoperaatiota ei voi suorittaa fulltext-indeksoiduille kentille. Koska minua ei kiinnostanut alkaa purkaa kenttien hakuindeksejä, päätin lopettaa ohjeen käyttämisen siihen paikkaan ja kokeilla jotain muuta.
Jäljellä oli vielä viimeinen oljenkorsi: ohjesivun lopussa kerrottiin että "voit aina yrittää häkkeröidä erästä vähän sinnepäin olevaa pluginia". Rivien välissä kerrottiin lisäksi: "älä kysy meiltä, miten se tapahtuu".
No, olenhan pitkän linjan häkkeri, joten hain pluginin ja katsoin sen sisään. Se tosiaankin oli häkkeröitävissä. Aloin miettiä miten pluginia voisi käyttää hyväkseen Pinserin vanhojen kirjoitusten, kommenttien ja sivupohjien korjaamisessa.
Ja sitten yhtäkkiä koin valaistumisen.
Joskus taannoin jossain haastattelussa minulta kysyttiin, miten kauan aion jaksaa blogata. Vastasin että periaatteenani on harrastaa asioita niin kauan kuin harrastaminen on hauskaa.
Tämä ei ollut enää hauskaa. Minä olen nykyään Mac-käyttäjä. Minua ei kiinnosta tippaakaan konvertoida merkistöjä toisiksi monimutkaisilla tietokantaoperaatioilla. Haluan että blogini toimii ilman jatkuvia ongelmia.
Katsoin uudelleen pluginia ja mietin että voisinko Pinserin muuttamisen sijasta muuttaa ulkopuolista maailmaa. Entäpä jos konvertoin kaikki ulkomaailmasta tulevat ääkköset Pinserin vaatimaan formaattiin? Kävi ilmi, että se ei ollut lainkaan vaikeaa.
Niinpä Pinseri käyttää siis edelleen iso-latin1 -merkistöä. Jos joku ulkopuolinen taho yrittää syöttää siihen utf-8-merkkejä, häkkeröimäni plugin muuttaa merkit takaisin antiikkiseen formaattiin. Kaikki on taas hyvin.
Me loppukäyttäjät näemme ruudullamme oikeanlaisia ääkkösiä ja voimme siemailla rauhassa lattea.
äöäöäöäöäöäå.
Posted via email from Samin Posterous-sivut