Nyt on lauantai 29.09.2018 klo 06:55. Olen pörrännyt koko yön kolttonen.fi sivustoni modernisoinnin parissa. En tee mitään isoja muutoksia, mutta yritän konvertoida kaikki sivut HTML5-kielelle ja ennenkaikkea pyrin parantamaan sivujen toimivuutta mobiililaitteissa. Käytin pääasiassa Bash-skriptejä sivujen muokkaukseen. Se riitti, sillä tehdyt muutokset olivat melkoisen yksinkertaisia - suurin osa sivuista muuntui HTML5-muotoon vain ensimmäistä 8:aa riviä muokkaamalla. Korvasin myös joitain linkkejä XML-tiedostoihin linkeiksi uusiin CGI-skripteihini. Käsityötä oli todella vähän eli hoidin muutaman poikkeustapauksen suoraan tekstieditorilla.
Alkusysäyksen tämä koko päivitysoperaatio sai siitä, että Google valitteli, että sivustoni ei ole "mobile friendly" ja tottahan se näköjään oli. Kaikki sivut renderoitiin esimerkiksi Android-puhelimeni Firefox-selaimessa hyvin pienellä fontilla. Selvittelin asiaa hieman ja totesin, että sivujen XHTML-osuudet on korvattava uudella HTML5:llä. Uudessa HTML5-kielessä on tagi:
Käsittääkseni se mahdollistaa, että kukin selain omassa laitteessaan voi skaalata HTML5-sivut itselleen sopivimpaan esitysmuotoon. Tosiaankin tuo <meta>
tagi näyttäisi toimivan. Koko blogini käyttää sitä nyt ja kaikki vanhat XHTML-sivut blogissani on konvertoitu. Siirrän myöhemmin sivujeni musiikki- ja elokuvaosiot HTML5 aikaan.
Sivujeni runo-osio oli toteutettu siten, että runot ovat hyvin yksinkertaisessa XML-formaatissa, jonka keksin itse joskus vuonna 2009. Tuosta formaatista generoitiin XSLT-muunnosten avulla sekä PDF-tiedostoja että XHTML-dokumentteja. Muutin nyt XSLT-transformaatiosääntöjä siten, että nyt generoidaankin HTML5:tä.
PDF-tiedostoa ei XSLT-transformaatiossa generoida suoraan, vaan XML muunnetaaan ensin LaTeX-dokumentiksi. Siitä generoidaan DVI-muotoinen tiedosto ja DVI-tiedostosta taas tulee lopulta julkaisuvalmis PDF dvipdf
-ohjelman avulla. Olen automatisoinut koko prosessin Linuxissa ihan perinteisen Makefilen avulla.
Muutin XSLT-transformaatiosääntöjen lisäksi paikkaa, jossa transformaatio tapahtuu. Aiemmin tarjosin suoraan XML-tiedostoja lukijoiden www-selaimille, jotka sitten XSLT-sääntöjen avulla renderoivat XML-dokumentit XHTML-muotoon. Nyt runo-osion koko hakemistopuu www-serverillä on piilotettu käyttäjiltä eikä XML-tiedostoihin voi enää päästä käsiksi suoraan. Sen sijaan tein pari yksinkertaista CGI-skriptiä Python-kielellä. Nuo skriptit tekevät XSLT-transformaation serverin päässä ja lähettävät HTTP-clienteille valmiin sisällön HTML5-muodossa.
Valitettavasti HTML5-validaattori antaa yhden varoituksen generoidusta kielestä:
Warning: Documents should not use about:legacy-compat
, except if generated by legacy systems that can't output the standard <!DOCTYPE html>
doctype.
Käytin serverillä Pythonin kakkosversiota ja sen kirjastoissa ei ollut asennettuna sellaista, joka olisi osannut tuottaa HTML5:tä ilman, että tuo varoitus tulee. Minun on siis pakko käyttää XSL-tiedostossa tällaista julistusta:
<xsl:output method="html" doctype-system="about:legacy-compat" encoding="UTF-8" indent="yes"/>
Muuten en saanut minkäänlaista HTML5:tä ulos transformaatiossa. Eli tuon varoituksen kanssa on ilmeisesti vain pakko elää kunnes tarjolla on uudempi muunnoskirjasto Pythonille.
Olin hieman huolissani, että miten Googlen hakukoneen indeksointi suhtautuu näihin CGI-skriptillä tuotettuihin sisältöihin. Lukemani mukaan hakukone selviää niistä. Runo-osioon on edelleen hyperlinkki sivustoni pääsivulta, mutta se viittaa nyt /cgi-bin/poetry.py
skriptiini. Googlen hakukone ilmeisesti "crawlaa" sen siinä missä muutkin linkit. Kyseinen skripti luo runo-osion indeksisivun, jonka hakukone prosessoi edelleen rekursiivisesti.
Osa indeksisivulla olevista linkeistä viittaa toiseen CGI-skriptiini /cgi-bin/showpoem.py
. Tuo skripti vaatii toimiakseen kaksi parametria: author
ja poem
. Niiden perusteella skripti hakee serverin tiedostojärjestelmästä oikean runon XML-muodossa, tekee XSLT-transformaation ja puskee clientille HTML5-dokumentin.
Ai niin, unohdin mainita, että löysin kätevän HTML5-validaattorin Githubista. Sieltä sai downloadattua JAR-paketin, jota voi ajaa kun on vähintään Java versio 8 asennettuna. Eli pystyin tekemään HTML5-validoinnin konvertoiduille XHTML-tiedostoille suoraan komentoriviltä. Mahtavaa!