K. Vehkalahti: Survo ja WWW

Survo tarjoaa mainion alustan myös WWW-sivujen tekoon. Tässä jutussa vertailen PostScript- ja HTML-dokumenttien ominaisuuksia sekä kerron miten WWW-sivuja Survolla luodaan.

PS vs HTML

PostScript on ns. sivunkuvauskieli. Survon PLOT- ja PRINT-komennot tuottavat PostScript-kielisiä tiedostoja. Sivunkuvauskielille on tyypillistä, että pienimmätkin yksityiskohdat voidaan säätää tarkasti kohdalleen. PostScriptille on lisäksi ominaista skaalattavuus, ts. kaikkia objekteja (kuten esim. kuvia) voidaan suurentaa, pienentää, venyttää ja kutistaa mielin määrin ilman että tulosteen laatu kärsii.

Kokonaan toisenlaista suuntausta edustavat niin sanotut rakenteenkuvauskielet. Eräs sellainen on HTML (HyperText Markup Language), jota käytetään internetin dokumenttien määrittelyyn. HTML määrittelee vain dokumentin rakenteen, ei sen täsmällistä ulkoasua. Ulkoasusta vastaa suurimmalta osin kulloinenkin selainohjelma (esim. Netscape). Rakenteeseen kuuluvat esimerkiksi eri tasoiset otsikot, tekstikappaleet ja taulukot. Dokumentti voi sisältää linkkejä muihin dokumentteihin (yleisemmin: mihin tahansa verkon resursseihin, mm. kuvaja äänitiedostoihin) ja siihen voidaan viitata muista dokumenteista.

Viittaukset tapahtuvat tavallisesti HTTP- (HyperText Transfer Protocol) tekniikalla, jossa jokaisella dokumentilla on yksikäsitteinen nimi koko internetissä tai vaikkapa yrityksen sisäisessä intranetissä. Esimerkiksi Survon englanninkielisen kotisivun internet-osoite on http://www.helsinki.fi/survo/eindex.html. Tällaista osoitetta kutsutaan myös nimellä URL (Uniform Resource Locator). Jos nyt vielä yksi kirjainyhdistelmä tähän lisätään, niin se on tietysti WWW (World Wide Web), eli suoraan käännettynä maailmanlaajuinen verkko. WWW ja internet käsitetään usein samaksi asiaksi. Tarkalleen ottaen internet on hieman laajempikin käsite, mutta samasta asiasta on joka tapauksessa kyse. En mene tässä enempiin yksityiskohtiin, koska WWW:stä ja siihen liittyvistä asioista on nykyään aivan tolkuttomasti materiaalia saatavilla joka puolella.

Paperi vs selain

Paperi ja verkkoselain ovat kaksi erityyppistä mediaa: se mikä näyttää hyvältä paperilla, ei välttämättä ole lainkaan hyvä selainohjelman ikkunassa. Ei siis kannata edes yrittää orjallisesti jäljitellä paperitulosteiden vakiintuneita ulkoasuja, vaan luoda verkkoa varten oma tyylinsä. Tyylin voi luoda määrittelemällä rakenteen, mutta ulkoasun viilaaminen HTML:llä on turha(uttava)a. Tärkeintä on, että informaatio saadaan kohtuullisella vaivalla siirrettyä verkkoon ja että sitä voidaan sieltä kätevästi hyödyntää.

Kannattaa muistaa, että selaimia on muitakin kuin Netscape 3, näyttöruudun tarkkuuksia muitakin kuin 1024x768 ja tiedonsiirtonopeuksia muitakin kuin 10 Mbit/s.

Itse surffailen webissä useimmiten Lynx-nimisellä unix-ohjelmalla, joka ei edes osaa näyttää kuvia lainkaan. Tekstitkin se näyttää varsin vaatimattomasti, mutta nopeasti. Enitenhän aikaa suttaantuu kuvien lataamiseen - useimmiten täysin turhaan. Ne sivut, joissa oletetaan selaimeni olevan joko Netscape tai Explorer, jäävät tällä tavoin näkemättä, ja saavat jäädäkin. Tyylikkäintä on, kun sivut on suunniteltu sellaisiksi, ettei niiden mahdollinen informaatiosisältö ole riippuvainen tietyistä selaimista.

Kuvausta kuvista

En silti sano, ettei kuvia pitäisi laittaa verkkoon lainkaan. Niiden kohdalla vain kannattaa harkita joka kerta, onko se mitenkään välttämätöntä. Kuvien lataamisen odottelu aiheuttaa turhautumista jopa nopeillakin yhteyksillä. WWW:täkin on jo alettu kutsua nimellä World Wide Wait. Erityisesti kannattaa miettiä, onko kuvaa pakko tyrkyttää automaattisesti ladattavaksi vai kannattaisiko se pikemminkin sijoittaa linkin taakse, jolloin käyttäjä voi katsoa kuvan niin halutessaan. Jälkimmäinen vaihtoehto on erittäin suositeltava, silloin kuvia voi laittaa enemmänkin, eivätkä ne hidasta varsinaisen sivun lataamista. Linkkeihin kannattaa kirjoittaa hyvä kuvaus ao. kuvasta ja mahdollisesti sen koko, jolloin käyttäjän on helpompi arvioida, kannattaisiko linkkiä seurata.

Survon PostScript-kuvat voidaan muuntaa Ghostscript-ohjelman (version 4) avulla TIFF-muotoon (Tagged Image File Format). Se on hyvä välimuoto, koska se säilyttää kuvan sisältämän informaation erittäin tarkasti. Tämä tapahtuu tietenkin tilankäytön kustannuksella - tyypillinen TIFF-muotoinen kuva vie levytilaa n. puolitoista megatavua. Niitä ei onneksi tarvitse säilytellä pitempään. TIFF-kuva kannattaa nimittäin muuntaa edelleen GIF-muotoon (Graphics Interchange Format), joka soveltuu verkkoon hyvin eikä vie paljoakaan tilaa (yleensä vähemmän kuin alkuperäinen PS-tiedosto).

Valitettavasti Ghostscript ei osaa GIF-muunnosta tehdä; siksi se on tehtävä jollakin muulla ohjelmistolla. Itse käyttämäni Paint Shop Pro on erittäin kätevä ja varsin edullinen. Tilasin sen verkon kautta ohjelman eurooppalaiselta maahantuojalta Tanskasta, jolloin hinta oli n. 500 mk. Olen nähnyt sitä myös täällä päin kaupoissa. MikroPC-lehden numerossa 6-7/97 oli kuvankäsittelyohjelmien vertailu, jossa PsP:tä myös kehuttiin. Ohjelmasta on saatavilla sekä Win95/WinNT- että Win3-versiot. Molemmista täytyy todeta, että ovat Windows-ohjelmiksi harvinaisen mukavia käyttää: ohjelma mm. "muistaa" aina, mistä viimeksi haettiin mitäkin kuvatiedostoja ja minkälaisiksi ne viimeksi muunnettiin. Toisesta käyttökerrasta lähtien hommat sujuvat siis joutuisasti. Tyypillistähän Windows-ohjelmille on, että aina saa tehdä samat valinnat uudelleen kuin jokin robotti. Minua sellainen kypsyttää aivan suunnattomasti. Tyypillinen esimerkki on juuri tiedoston haku melkein mihin tahansa Windows-ohjelmaan, vaikka Notepadiin ("Muistio"). Kamalaa hommaa. No, se ei kuulu tähän juttuun enempää kuin sika satelliittiin.

Asiaan

Keväällä -95 Lauri Tarkkonen usutti minua tekemään Survoon jonkinlaisen HTML-kytkennän. Ideoinkin silloin alustavan version tekemällä HTML.DEV-nimisen kirjoitinajurin PRINT-operaation yhteyteen. Huomasin näet ilokseni, että PRINT:issa käytettävä kuvauskieli tarjoaa mahtavat työkalut myös HTML:n koodaamiseen sivistyneemmin kuin yleisesti suosituilla tavoilla. (Eli että HTML-koodia kirjoitetaan enemmän tai vähemmän käsipelillä, mikä on tietenkin julmaa ja ihmisarvoa alentavaa.) HTML:ään pitää teknisesti suhtautua kuin PostScriptiin: Survo-käyttäjän ei tarvitse käytännössä koskaan liata käsiään kumpaankaan vaan likaisesta työstä huolehtii PRINT saatuaan ohjeet sopivan kirjoitinajurin muodossa. Käyttäjän tehtäväksi jää toimituskenttien valojen ja varjojen säätäminen (ks. Survo ja minä, s. 83-84).

Päivitin HTML.DEV-ajuria vielä syksyllä -96, jolloin tein Survon kotisivut (http://www.helsinki.fi/survo/). Vaatimusten kasvaessa määrittelin keväällä -97 kokonaan uuden ajurin, HTML32.DEV . 32-bittisyyden kanssa sillä ei ole mitään tekemistä vaan sen määrittelyt perustuvat HTML 3.2 -standardiin, joka on tällä hetkellä vallitseva ja useimpien selaimien tuntema.

Kieroimpia HTML 3.2 -standardin määrittelemiä asioita ovat taulukot. Alla oleva koodirykelmä on monien HTML-oppaiden suositusten mukainen esitys pienelle KUNNAT-aineistosta tehdylle frekvenssitaulukolle. Koodi koostuu kulmasuluissa olevista avainsanapareista, esim. <TABLE> ja </TABLE> . Tällaisia suositellaan siis tehtäväksi käsipelillä, ts. jollakin tekstieditorilla.

<TABLE>  
<CAPTION> TABLE KUNNAT1 A,B,F   N=464</CAPTION>  
<TR ALIGN=RIGHT>  
    <TH> <BR> </TH>  
    <TH ALIGN=LEFT> Maamet</TH>  
    <TH> 0-2</TH>  
    <TH> 3-4</TH>  
    <TH> 5-7</TH>  
</TR>  
<TR ALIGN=RIGHT>  
    <TH ALIGN=LEFT> Alue</TH>  
    <TH ALIGN=LEFT> ******</TH>  
    <TH> <BR> </TH>  
    <TH> <BR> </TH>  
    <TH> <BR> </TH>  
</TR>  
<TR ALIGN=RIGHT>  
    <TH ALIGN=LEFT> /Saaristo</TH>  
    <TH> <BR> </TH>  
    <TD>   8</TD>  
    <TD>   6</TD>  
    <TD>   2</TD>  
</TR>  
<TR ALIGN=RIGHT>  
    <TH ALIGN=LEFT> /Etelä< /TH>  
    <TH> <BR> </TH>  
    <TD> 106</TD>  
    <TD>  73</TD>  
    <TD>  34</TD>  
</TR>  
<TR ALIGN=RIGHT>  
    <TH ALIGN=LEFT> /Keski< /TH>  
    <TH> <BR> </TH>  
    <TD>  36</TD>  
    <TD>  70</TD>  
    <TD>  55</TD>  
</TR>  
<TR ALIGN=RIGHT>  
    <TH ALIGN=LEFT> /Pohjois< /TH>  
    <TH> <BR> </TH>  
    <TD>  26</TD>  
    <TD>  28</TD>  
    <TD>  20</TD>  
</TR>  
</TABLE>  
<EM> Chi_square=</EM> 34.83 <EM> df=</EM> 6 <EM> P=</EM> 0.0000

[Netscapen näkemys oheisesta HTML-koodiryteiköstä]

Enpä menisi kehumaan koodia luettavuudella. Tai saa olla ainakin melkomoinen liero, jos tuossa muodossa pystyy taulukoitaan käsittelemään. Netscape on toki tähän esitykseen aivan tyytyväinen kuten näkyy; koodi on HTML-syntaksin mukaista. Mutta kyllä virheitä tulee liian helposti, jos tuollaista koodia itse kirjoittelee. No, onhan sitten hitusen kehittyneempiä ohjelmia, ns. HTML-editoreita. Niiden ainoa ero on kuitenkin yleensä se, että eri painikkeita klikkailemalla saa noita kulmasulkujen välissä esitettyjä koodeja lisäiltyä tekstinsä sekaan. Ei siis paljoa hurraamista. Sitten on vielä uudempia välineitä, joissa sivuja määritellään graafisesti, mutta niihin en mene tässä, kun en liiasta grafiikasta perusta muutenkaan. Siirrytään siis Survon maisemaan.

   1  1 SURVO 84C EDITOR Wed Sep 10 20:12:19 1997     D:\A\SURVO&ME\ 100 100 0 
   1 *SAVE HTML / Hauska Taulukko Menneistä Lääneistä
   2 *
   3 *CLASSIFY KUNNAT,Aluejako,Lääni,Alue 
   4 *CLASSIFICATION Aluejako
   5 *AHV:                   Saaristo
   6 *HÄM,KYM,TUR,UUS:       Etelä
   7 *KAR,KES,KUO,MIK,VAA:   Keski
   8 *LAP,OUL:               Pohjois
   9 *END
  10 *
  11 */HTML-TAB KUNNAT,END+4 / VARIABLES=Maamet,Alue
  12 *Maamet=0,2(0-2),4(3-4),7(5-7) Alue=/Saaristo,/Etelä,/Keski,/Pohjois
  13 *
  14 *PRINT CUR+1,END TO ALUEET.HTM 
  15 - include HTML32.DEV
  16 - [TABLE]
  17 *TABLE KUNNAT1 A,B,F   N=464 
  18 r           Maamet 0-2 3-4 5-7
  19 r Alue      ******          
  20 r /Saaristo          8   6   2
  21 r /Etelä           106  73  34
  22 r /Keski            36  70  55
  23 r /Pohjois          26  28  20
  24 - [/TABLE]
  25 *Chi_square=34.83 df=6 P=0.0000
  26 - [END]
  27 *

Aluksi on muodostettu alueet luokittelemalla aineisto Lääni-muuttujan perusteella. (Esitän luokittelunkin tässä vaikkei se tähän juttuun nyt mitenkään sen kummemmin liity; halusin oikeastaan vain palstatilaa vanhalle kunnon CLASSIFY-operaatiolle!)

Taulukko on tehty sukrolla /HTML-TAB, joka toimii kuten TAB, mutta muuntaa tulostaulukon Survon HTML-koodaustavan mukaiseksi. Tulos näkyy riveillä 16-25. Taulukko on edelleen täysin luettavassa muodossa toisin kuin edellä esitetty HTML-taulukko, joka on aivan käsittämätöntä mössöä. Taulukkoa on vain TAB-operaation jälkeen hieman ehostettu erilaisilla väreillä ja muilla koristeilla.

HTML-tiedoston luontia varten on sitten lisätty PRINT-komento riville 14, HTML-ajurin kutsu riville 15 ja HTML-koodauksen lopetusmerkki [END] riville 26. Kun PRINT-komento aktivoidaan, saadaan tulokseksi itse asiassa vielä hiukan enemmän mössöä kuin mitä edellä nähtiin, mutta oleellisesti samat asiat. Kun mössö on syötetty Netscape:lle, saadaan sama näkymä kuin edellä. Korostan vielä, että HTML-koodia ei survoilijan tarvitse edes nähdä, saatikka sitten editoida. Kaikki tehdään niin kuin PRINT-operaation kanssa yleensäkin, koodit vain eroavat PostScript-tulostuksen vastaavista.

HTML32.DEV-ajuri sisältää määritykset 127 hakasulkukoodille, 41 varjomerkille ja 17 kontrollisarakemerkille. (Vastaavat lukemat PS.DEV-ajurista ovat muuten 94, 20 ja 4, mutta sen yhteydessä käytetään vastaavasti usein muitakin ajureita). Sukro /HTML-CODES kertoo, mitä kaikkia koodeja ja merkkejä on käytettävissä. Itse HTML-koodeista löytyy selostuksia lukuisista kirjoista sekä tietysti WWW:stä.

/HTML-sukroperheessä on vielä pari muutakin jäsentä: /HTML-PRINT toimii kuten PRINT, mutta muuntaa tulostettavat tekstit, taulukot ja kuvaviittaukset uudeksi listaksi (joukoksi toimituskenttiä). Se tekee myös automaattisen linkkilistan muodossa olevan sisällysluettelon, jos tekstiin on merkitty avainsanoja. Tämän sukron kehittely on jatkuvasti kesken, sillä aina tulee vastaan uusia tilanteita, joissa se ei toimi kovin fiksusti. Toisaalta, täydellistä siitä ei saakaan, mutta tyydyttävästi se on toiminut jo viime kesästä lähtien. Tärkeintä on, että saa työläimmät muunnokset tehtyä automaattisesti; /HTML-PRINT:in tuottamaa listaa voi sen jälkeen hienosäätää manuaalisesti.

Täysin automaattisesti muunnokset paperiversiosta verkossa esitettävään versioon sujuvat, jos paperiversio on mahdollista määritellä sopivasti. Jos sen muoto on jo kiinnitetty, on joko tehtävä jonkinasteisia kompromisseja tai tehtävä verkkoraportille omat määrityksensä. Kummastakin tavasta on jo saatu hyviä kokemuksia.

Sokerina pohjalla on sukro /HTML-7BIT, joka yksinkertaisesti muuntaa saadun HTML-tiedoston muotoon, jossa skandinaaviset merkit on esitetty niiden HTML-koodeina. Ilman tätä muunnostakin skandeille tehdään konversio. Sen tekee PRINT-komento HTML.BIN-koodimuunnostiedoston välityksellä. Siinä ääkköset muunnetaan ISO-Latin1-merkistön mukaisiksi. Tämä merkistö on WWW:ssä yleisesti käytetty. Kuitenkin, jos haluaa olla pedantti ja varmistaa, että ääkköset näkyvät oikein missä tahansa, niin voi käyttää /HTML-7BIT:iä, jonka jälkeen hyvää yötä onkin hyv&auml;&auml; y&ouml;t&auml; .