15. marraskuu 2009, 17:22

Rakenteisuuden perässä

$$\LaTeX$$ ja kumppanit ovat taas minun perässäni. Ja minä olen rakenteisuuden perässä. Mihin tässä vielä tullaan? Opiskelin perjantaina, vai oliko se lauantaina, yhden modernin CVS-klassikon, Subversionin, alkeet. Tekisi mieli lopettaa WordPress ja jatkaa TextPatternilla.

Käytän täälläkin otsikkotageja väärin

Ongelma: CSS-tyyleissäni on määritelty, että "Otsikko 1″ -tyyli käyttää sitä-ja-sitä tyyliä ja fonttikokoa. Koska se on aika julmetun kokoinen, haluaisin vähän pienentää sitä, jotta se ei ole järjettömän kokoinen leipätekstiin nähden. Laiskuuttani kuitenkin käytän "Otsikko 2″-tyyliä, koska se on pienempi. Näettekö ongelman tässä? Ettepä tietenkään. Kyse on siitä, että käytän ikään kuin väliotsikkoa, vaikka pitäisi käyttää isoa otsikkoa. Graafisesti ratkaisu voi ehkä ollakin yhtenäinen, mutta semanttisesti se on roskaa. WordPress on muutenkin Word-sukupolven laitoksia, minkäs sille tekeekään. Ratkaisuhan ei tähän ongelmaan ole mikään suurin, mutta laiskuus se nyt häiritsee vain. Kuten Wordiläisiä, minua vähän kalvaa se ajatus, että jos säädän fonttikoot otsikkotasoille uusiksi, se ei näytä hyvältä aiemmissa kirjoituksissa. Sehän on täysin väärin, sillä ei tässä olla taidetta luomassa, vaan kirjoittamassa asiatekstiä, jota olisi helppo lukea.

Paraskin puhuja, minä, kun tuollaista ehdottelen: vaihdoinhan TextPatternista pois osittain sen takia, että en saanut kustomoitua sen ulkoasua riittävästi uudenlaiseen suuntaan. Ja toisaalta halusin lisäillä kivannäköisiä sivukuvia artikkeleihin kuin lehdissä konsanaan. Toinen väärä veikkaus! Näkeehän sen näistä nykyisistä kirjoituksistani, että tekstin ohessa floattaileva kuva häiritsee, kun olen muutenkin valinnut tietoisesti kapeat leipätekstirivit lukemisen helpottamiseksi. Kun vertailen blogini ulkoasua esimerkiksi joihinkin muihin, enemmän faktapitoisiin blogeihin, huomaan omani olevan vähän epäselkeä, himmeä ja paikoin epäkäytännöllinen (iik!). Joku vaalea pohja tummalla tekstillä tekisi joistain asioista hivenen helpompia. Toisaalta pohjani ei ole äärettömän epäkäytännöllinen, mutta jotkut no-nonsense -sivut voivat olla samanaikaisesti nättejä ja äärikäytettäviä.

No, teen nyt asioita uudella tavalla. Tartun tuumasta toimeen, ja kirjoitan CSS-elementtien kokomääritykset sellaisiksi, että ainakin syntyisi vaikutelma oikeanlaisesta rakenteesta: teksteistä suurinta tulisi olla artikkelin nimi (punainen linkki) ja sitten nämä artikkelinsisäiset otsikot järjestyksessä pienempiä. En kuitenkaan jaksa sen vertaa paneutua asiaan, että syntyisi jotain järkevää. Pitäisi nimittäin ottaa PHP-koodi käsittelyyn, kun WordPress ei erottele artikkelilistaa artikkelista mitenkään, ei sitä voikaan tehdä pelkän stylesheetin muokkaamisella. Sääli.

TextPattern auttaisi rakenteellisuudessa

Näistä rakenteellisista voivotteluista jatketaan sitten sillä, että tuli mieleen TextPatternin hyvät puolet: tekstiä voi kivasti muokkailla selkokielisenä ja vaikka vimillä. Tässä WordPressissä ei ole edes mahdollisuutta luonnostella pelkkää tekstiä tavallisessa textareassa. On vain "Graafinen" ja "Koodi" -osiot, joista jälkimmäinen on toki puhdas, mutta sisältää HTML-höttöä. On syytä muistella TextPatternin huonot puolet läpi, niin se ei houkuttele niin vahvasti:

  1. Typerä ratkaisu pitää kaikki tyylitiedostot ja rakenteet tietokannassa
  2. Mediahallinta on heikkoa, WP:ssä on oikeasti kivaa lisäillä kuvia blogiin ja upottaa niitä artikkeliin
  3. Rakenteellisen kielen purkaminen bugaa paikka paikoin, korjaukset toki tulevat aikanaan
  4. Suunnittelupäätös rajoittaa kategoriat kahteen ja tehdä meidän kaikkien elämät hankalaksi
  5. Omalla kohdallani: sivujen määrittelykieltä on hankala hahmottaa, sivujen kustomointi aika vaativaa ja kikkailua vaaditaan kovasti

No niin, loppuipas se palava tarve siirtyä siihen. Jos jostakin pitäisi unelmoida, niin sitten siitä, että TextPattern alkaisi sisällyttää $$\LaTeX$$ -tulkkia mukanaa ja myös blogiartikkelit voisi kirjoittaa LaTeXiksi siten, että artikkeleista generoidaan luontevat HTML-versiot PS-, DVI- ja PDF-versioiden lisäksi. Nyt en tarkoita olemassaolevia työkaluja, kuten LaTeX2Html, jotka tekevät huonoa työtä yrittäessään tehdä kaikkia miellyttäviä artikkeleita. Köyhiä ne ovat. Siinä olisi jotakin.

Content Version System

Koska ideana versiohallinta on vanha, ja sitä käytetään kaikkialla, on outoa, etten ole hankkinut kokemusta systeemeistä ennen kuin nyt. Vaikka se olikin jo tiedossa, se kaikki käy järkeen välittömästi. Kaikki seikat tekevät versioinnista järkevää, tehokasta ja mukavaa. Aloittelin luonnostelemaan uutta C++-projektia, ja kun arvelin sen synnyttävän hieman enemmän koodia kuin edellinen, googlasin vähän tietoa, kuinka luoda lokaali svn-repository lokaaliin käyttöön. Onneksi se oli helppoa, kyllä vain.

Toiminnallisuuden skriptaaminen siten, että IDE:stä tai muuten työskentelystä tulee saumatonta versioinnin kanssa, on suhteellisen helppoa. Onneksi esimerkiksi tämä subversion säästää paljossa muutenkin. No, tulin tutkineeksi myös niitä toisia CVS-ohjelmistoja. Git tuli esille. Se olisi sikäli parempi vaihtoehto lokaaliin, yhden hengen versiohallintaan, mutta olkoon nyt sub käytössä.

Versiohallinta on perinteisesti yhdistetty koodiprojekteihin parista syystä: useiden koodaajien yhteistyö saman koodin ääressä on hyvin tuskaista ilman versiohallintaa, joka säilyttää vanhat versiot ja yhdistelee uudet sulavasti. Ja toisaalta yksinäänkin koodia on helppo muokkailla sellaiseksi, että tekee mieli palata parin päivän takaiseen. Manuaaliset tar-skriptitkö pelastukseen? Mitä turhia, kun 'svn commit' aina satunnaisesti tekee saman. Ohjelmaprojektit eivät vain ole se ainut käyttökohde versiohallinnalle. Tiedämme esimerkiksi, että akateemisissa piireissä kirjoitellaan juttuja ja tutkielmia, joiden laajuus voi helposti nousta sataankin sivuun. Tämänlaisen tietomäärän hallinnointi on ehkä helppoa sellaisenaan (valmiina tiedostona), mutta entäs kun se pitäisi myös kirjoittaa? Se on vähintäänkin kuukausien projekti. Ilman versiohallinnointia voi tulla itku kun 70 sivua tutkimusta tehtyään huomaa, että jossain on tehty valtavan huonosti, ja pitää purkaa auki mallia aika reilusti. Versiohallinta ei tietenkään sitä kirjoittajan (ajatus)työtä vähennä, mutta projektia voi haarautella esimerkiksi alkuvaiheessa kovasti, jos se auttaa vaikka löytämään paremman suunnan gradulle. Joissain edistyksellisissä yliopistoissa opiskelijat voisivat peräti antaa ohjaajilleen tiedot repositoryihin (tai yliopiston unix-koneilla ylläpidettäviin gradurepoihin) ja ohjaajat voivat siten seurata työn edistymistä diffeillä ja commit-logeilla.

No, väitökset ja gradut usein mainitaankin yhtenä käyttökohteena kun puhutaan versiohallinnasta. Miksen sitten löydä yhtäkään blogikirjoitusta googlella aiheesta? Löydättekö te? No hyvä on, löysin yhden asiajutun kun hellitin avainsanoista: Michael Grayer kirjoittaa Nontoxic-blogissaan versiohallinnasta ja LaTeXista, mikä on ihan mukavaa. Olinkin tulossa siihen juuri: ellen vallan väärin ymmärrä, kaikki versiohallinnat pohjaavat siihen tietoon, että ne käsittelevät selkokielisiä dokumentteja: ASCII- tai UTF8-tekstejä. Näin ne voivat luoda diff-tiedostoja ja luoda kaikenlaista kivaa siihen kaveriksi. Esimerkiksi subversion näyttäisi hoitavat binaaritiedostot vain tiedostoleiman perusteella, eikä muuten. Ja mitenkä muuten se hoitaisikaan mitään? Eihän CVS-ohjelmistot kaikkea voi tietää. Nykyiset Word- ja Openoffice-dokumentit ovat toisaalta selkokielisiä XML-tiedostoja (joskin pakattuina esim. zip-tiedostoihin) mutta toisaalta ne eivät ole kuitenkaan aivan ihmisluettavissa siitä sellaisenaan.

$$\LaTeX$$ on eräs ratkaisu siihen. Herra Grayer tuossa ylemmässä linkissä kirjoitteleekin hyvin asiasta (lukekaapa myös tai alustavasti posti 114) ja minulla on samat myötäilyt sekä LaTeXin että versiohallinnan suhteen. Mikäli lopputulos on kuitenkin määrä viimeistellä Wordilla tai vastaavalla WYSIWYG-ohjelmalla, ehkä puhdas ASCII-teksti on parempi, joskin se voi olla hyvinkin tuskaista. Onhan noita muitakin vaihtoehtoja, kuten FrameMaker suuriin projekteihin, mutta se lieneekin enemmän aivan olla lukunsa. Muuten, kuulin juttuja FrameMakerin kyvyistä ja en voi olla ajattelematta LaTeXin roolia tuossakin hommassa: hallita miten isoja projekteja tahansa ja kaikki säilyy eheänä: viitteet oikein ja sivunumerot kunnossa. Jospa tämä riittäisi tältä erää.

Tageja: ,

---
---

---

Aiheen vierestä