Kotitehtävä n:o 9: oma www-aihe

Dynaamiset sivunkuvuskielet eli ohjelmointikielten rakenteiden sisällyttäminen html-kieleen

Sisällys


Taustaa

Normaalien staattisten www-sivujen mahdollisuudet tyydyttää jatkuvasti kasvavia www-palveluiden tasoa ovat jäämässä auttamattomasti rajallisiksi. Javan ja JavaScriptin sekä ActiveX:n läpilyöntiä vaikeuttavat selainohjelmien eri versiot sekä Netscape Navigatorin ja Microsoftin Internet Explorerin kova kilpailu, jolloin käyttäjien on mahdotonta pysyä päivitysrutiinissa eivätkä palveluiden suunnittelijat pysty tarjoamaan kaikille käyttäjille samanlaisia palveluita.

Ongelmaan on kehitelty muutamia ratkaisuja, joista käyttäjän kannalta vaivattomin on html-kieleen upotettujen ohjausrakenteiden ajaminen jo valmiiksi www-palvelimen päässä. Hyvänä esimerkkinä on esimerkiksi tiedoston viimeisen muutosajan näyttäminen sivun lopussa. Varsinkin tietokantojen käsittelyssä ja raportointisivujen toteutuksessa ns. dynaamiset sivunkuvauskielet ovat käyttökelpoisia. Www-palvelinohjelmistojen valmistajat ovat testanneet ja lisänneet omiin ohjelmiinsa hyväksi havaitsemiaan laajennuksia. Varsin kattava selonteko on Apache-palvelinohjelmistoon liittyvässä Apache Week-julkaisussa [1]

Dynaamisilla sivunkuvauskielillä onkin paljon ominaisuuksia jotka on peritty cgi-bin-ohjelmilta [2], mutta perimmäisenä ideana on kirjoittaa ohjelmointikielen ohjauskomentoja normaalin html:n joukkoon ja samalla kun sivua haetaan, ajaa koodattu sivu palvelimen ohjelman läpi ennen asiakasohjelmalle lähettämistä. Tällainen menettely sopii hyvin jos sivuilla olevat ohjelmat ovat melko pieniä koska muutoin voi seurauksena olla palvelimen kuormittuminen ja sivujen latautumisen hidastuminen. Todella pitkien html-sivujen ylläpitäminen on hankalaa ja silloin olisikin parempi ohjelmoida tarvittavat ohjelmat cgi-bin-rajapintaa käyttäen joko skriptikielillä Perl [3], Tcl [4] tai normaaleilla ohjelmoitikielillä kuten C ja C++.

alkuun


SSI

SSI eli Server Side Includes tarkoittaa yksinkertaisia ohjauskomentoja joita voidaan kirjoittaa normaalin html:n sekaan. Komennot ovat ennalta määrättyjä ja niitä on melko rajoitetusti. Tärkeimpiä komentoja ovat sivun viimeisen muokkausajan hakeminen, toisen sivun sisällyttäminen (alku- ja loppuosia). SSI:stä on olemassa erilaisia versioita eri palvelinohjelmille ja jokaisessa on omia piirteitä. Arkikäyttäjälle SSI tarjoaa muutamia ihan näppäriä toimintoja , mutta aktiivikäyttäjä kaipaa kotisivuilleen enemmän.

alkuun


PHP

PHP [5] on jo oikeastaan varsinainen ohjelmointikieli, skriptityylinen sellainen. Sillä on mahdollista kirjoittaa varsin monimuotoisia ohjelmia, ja siinä on suoraan itsessään mahdollisuus tietokanta-liittymiin. PHP:lla voi myös tarvittaessa luoda omia gif-kuvia lennossa. PHP:hen voi halutessaan lisätä omia funktioita ja osallistua PHP:n kehittämiseen. PHP:ssä on sisäänrakennettuna sivujen käytön seuranta ja hyvin laajat turvallisuusominaisuudet, vaikkakin käyttäjälle jätetään melko paljon vastuuta ohjelmien kirjoittamisessa.

PHP:tä voidaan käyttää esim Apachen, Netscapen servereiden sekä NCSA:n servereiden kanssa. PHP on täysin vapaa ohjelmisto ja siihen löytyy paljon esimerkkiohjelmia ja ohjekirja suoraan www-palveluna. Käytännön kokemuksen kautta olen myös huomannut että PHP:n postituslistan kautta saa php-ogelmaan vastauksen todella ripeästi.

alkuun


NeoScript

NeoScript [6] perustuu Tcl-kieleen ja sen avulla voi ohjata esim dynaamisten kuvien generointia, sähköpostin lähetystä suoraan html-sivulta jä käyttäjien tietojen tallettamista. NeoScript toimii Unix- palvelinten kanssa. Sitä levitetään ilmaiseksi, mutta ohjelmapakettia noudettaessa pyydetään jättämään yhteystiedot www-lomakkeelle. NeoScriptin kehitystiimi aikoo jatkossa antaa tuotteelleen kaupallista tukea.

alkuun


embedded Perl

Perl 5:n tulkkaaminen lennossa on embedded Perlin [7] idea. Perl on monipuolinen ja varsinkin merkkijonojen ja tekstiaineistojen muokkaukseen oivallinen kieli. Sen luettavavuus on hyvä ja tulkattavuus tekee siitä nopean kehittää. Perl-tulkki on käännettävissä hyvin moneen eri käyttöjärjestelmään joten se on laajalti levinnyt. ePerl sisältää Perlin käskyt ja funktiot joten sen käyttäminen on perliä jo osaavalle erittäin helppoa. ePerl tukee myös aliohjelmia ja Perl5:n objektikielen kaltaisia olio- ominaisuuksia.

alkuun


Yhteenveto

Erilaisia mahdollisuuksia dynaamisiin html-sivuihin on olemassa jo runsaasti, mutta kaupallisiin sovelluksiin soveltuvia on edelleen rajoitetusti. PHP ja ePerl lähestyvät jo monipuolisuudellaan ja käytettävyydellään kaupallisia vaatimuksia. Kaupallisessa käytössä olevaa Server-Side JavaScriptiä en päässyt kokeilemaan, koska siihen olisi tarvittu Netscapen LiveWare-palvelin, joka toimii NT-ympäristössä. Kokeiluita myös Apachen päälle rakennetuista JavaScript systeemeistä on olemassa, mutta ne ovat vielä kehityksensä alkuvaiheessa.

Ohjelmien kirjoittaminen dynaamisilla sivunkuvauskielillä on nopeaa ja helpohkoa. Ongelmana on monesti se että sivut ja ohjelmat laajenevat liikaa, jolloin niiden ajoajat kasvavat ja niistä saatava hyöty pienenee. Nopeassa ohjelmoinnissa voi valitettavan usein koodin dokumentointi jäädä turhan vähälle, jolloin ylläpidettävyys kärsii.

Dynaamisten sivunkuvauskielten turvallisuudessa on paljonkin parannettavaa, mutta se tapahtuisi käytettävyyden ehdoilla. Useimmissa kielissä onkin ylläpitäjää kehoitettu tarkasti rajaamaan kielen optiot ja käyttäjille sallitut toimenpiteet. Yleensä turvallisinta on jättää ohjelmointi vain osaaviin käsiin, ammattilaisten hoiviin. Sivuilla olevia ohjelmia ajetaan yleisimmin samalla tunnuksilla ja oikeuksilla kuin www-serveriäkin, jolloin väärillä komennoilla voisi kotisivun omistaja tehdä paljonkin tuhoa. PHP ja ePerl pystyvät ajamaan sivuja myös pelkästään sivun omistajan oikeuksilla, mutta systeemin konfiguroimisessa on vielä paljon kehiteltävää.

Dynaamisilla sivunkuvauskielillä voidaan toteuttaa pieniä kokonaisuuksia ja ehkä koko palvelimen sivuille saada yhtenevää ilmettä esim ala- ja yläosien automatisoinneilla. Niiden käyttö on melko vaivatonta ja nopeaa. Lisää tietoa kehityksen vaiheista ja kehityssuunnista on hyvä seurata uutisryhmistä [8].

Esimerkkejä sivunkuvauskielten käytöstä löytyy Suomestakin, esimerkiksi ssi:tä käytetään Iltalehden www-palvelussa [9]. PHP on käytössä mm. A-Lehtien autojen hintataulukoissa [10]. Neoscriptistä löytyi useampia paikkoja, missä sitä oli käytetty [11], [12], [13]. EPerl:stä on olemassa testiohjelmia [14]. Javascriptistä tietoja löysin Netscapen palvelimelta [15] ja Yahoon [16] kautta.

alkuun


Lähteet

[1] Apache Week 7. maaliskuuta 1997 (****)
<URL:http://www.apacheweek.com/issues/97-03-07>

[2] Cgi-bin määrittely (**)
<URL:http://hoohoo.ncsa.uiuc.edu/cgi/>

[3] Perl-esittely (***)
<URL:http://www.perl.com/perl/>

[4] Tcl/tk-kotisivu (**)
<URL:http://www.neosoft.com/tcl/default.html>

[5] PHP-kotisivu (*****)
<URL:http://www.vex.net/php>

[6] NeoScript-kotisivu (***)
<URL:http://www.neosoft.com/neoscript>

[7] embedded Perl5-esittely (***)
<URL:http://www.engelschall.com/sw/eperl/>

[8] Keskutelua Unix www-palvelimista (****)
<news:comp.infosystems.www.servers.unix>

[9] Iltalehden www-palvelu (**)
<URL:http://www.iltalehti.fi>

[10] A-lehtien autohintataulukko (**)
<URL:http://www.apu.fi/autot.phtml>

[11] Neoscript: library and examples (**)
<URL:http://www.neosoft.com/neoscript/userinfo/library.html>

[12] NeoWebScript demos (***)
<URL:http://www.hav.com/neoscript/default.htm>

[13] Dr. Daves Neoscript pages (*)
<URL:http://www.neosoft.com/~dlgates/uk/ukgeneral.html>

[14] ePerl: esimerkkejä (***)
<URL:http://www.engelschall.com/sw/eperl/example/>

[15] Netscape Corp. (**)
<URL:http://home.netscape.com/>

[16] Yahoo: Javascript (****)
<URL:http://www.yahoo.com/Computers_and_Internet/Programming_Languages/JavaScript/>

alkuun


Juha Tikkanen jtikkane@cc.hut.fi
22.5.1997