Rockwell vaihtaa Nikonin Leicaan!

Valokuvaaja ja ammattiblogaaja Ken Rockwell julkaisi viime yönä artikkelin, jossa povataan Leican syrjäyttävän järjestelmäkameramarkkinoilla Nikonin. Canonista Rockwell ei ole toistaiseksi sanonut mitään, mutta samat havainnot Nikon/Canon -kameroiden ja Leican uuden M9-digijärkkärirungon eroavaisuuksista pätevät miltei kaikkiin pienen koon digikameravalmistajiin. Leican M9 on pieni ja metallinen, muiden valmistajien rungot ovat isoja, painavia ja muovisia. Etenkin Nikon on saanut ikävää palautetta uusien kameroidensa julkaisupolitiikasta, uusia malleja pidetään julkaisuvalmiina, kunnes markkinatilanne on edullisin vanhojen mallien poisvetämiseksi. Leican runko on edullisempi kuin Nikonin ja Canonin lippulaivat.

Rockwellin ilmoitus tuntuu suoranaiselta takinkäännöltä, sillä hän on puhunut Nikonin (ja Canonin) puolesta koko blogiuransa, 90-luvun loppupuolelta saakka. Leica-harrastajat ovat saaneet ylenkatseisia mielipiteitä aika ajoin, mikä rehellisesti sanottuna pätee kyllä kaikkiin muihinkin asioihin maailmassa, mitkä Rockwellia sattuvat mihinkin aikaan riepomaan. Omasta puolestani on ihan sama millä valokuvia otetaan. Rockwellin laivan kääntyminen kohti Saksaa oli kuitenkin iso yllätys (tosin onhan hänellä ollut pitkään mersuharrastus).

Kommentoi

Hyvän kahvin valmistaminen kotona

Helpoin tapa nauttia hyvästä kahvista kotona on hankkia kahvimylly. Se on suurin tekijä kahvin maun parantamisessa. Kahvimyllyn myötä joutuu tietenkin hankkimaan kahvin papuina valmiiksi jauhetun sijaan, mutta vasta jauhetun kahvin merkitys on niin suuri, että myllyn omistamista voidaan pitää tärkeimpänä välineenä kahvinjuonnissa.

Millainen myllyn pitää olla? Sillä ei ole suurta merkitystä, ellet omista useamman sadan euron arvoista espressokeitintä. Kunhan kahvipapu jauhetaan tai leikataan muutama minuutti ennen kahvijuoman valmistamista, ero kuukausia sitten jauhettuun kahviin on valtava. Halvimmat kahvimyllyt (kirpputorilta hankittavien isovanhempien aikaisten kahvimyllyjen ohella) ovat pieniä sylintereitä, joiden pesässä oleva terä pilkkoo kahvipavut vaihtelevan kokoisiin palasiin. Laitteissa ei ole karkeusasteen säätöä eikä sillä ole niin väliäkään, koska jälki on joka tapauksessa hyvin epätasaista. Tällainen leikkuri on erinomainen käytettäessä suodatinkeitintä tai pressopannua, niin hyvä että paremmasta ole juuri väliä!

Ascaso-kahvimylly

Ascaso-kahvimylly

Mokkapannun kanssa leikkurimylly toimii myös erinomaisesti. Kahvin suodattumisessa on mokka- eli mutteripannussa jo niin kova paine, että tasaisesti jauhetulle kahville olisi kuitenkin tilausta. Leikkurimyllyn 10-20 € hinnasta seuraavaan vakavasti otettavaan laitteeseen on kuitenkin suuri askel. Tosiharrastajan kotitkäyttöön suunnattu Ascaso-kahvimylly maksaa jo parisensataa euroa. Tässä myllyssä on karkeuden säätö ja jauhatuksen jälki on melko tasainen. Laitteella voidaan saavuttaa erinomaisia tuloksia myös espressokeittimien kanssa ja siihen se ensisijaisesti on tarkoitettukin. Pressopannulle tai suodatinkeittimelle tämän luokan mylly on ylimitoitettu, mutta ei siitä toki haittaakaan ole. Asiaa voisi verrata halpahallista ostettuun kotistereoon yhdistettyihin kalliisiin hifi-kaiuttimiin.

Mazzer Mini

Mazzer Mini

High end myllyt ovat sitten asia erikseen. Ammattikäyttöön tarkoitetut kahvimyllyt käyttävät terien sijaan hiomalevyjä, joissa jauhatuksen jälki on aivan eri luokkaa kuin kotimyllyissä (Ascasossakin on vain terät). Mazzer Mini on nimestään huolimatta maailmanluokan mylly, joka toimii luotettavasti päivästä toiseen, vuodesta toiseen, erehtymättä ja aina tasalaatuisena. Karkeuden säätö on erittäin tarkka. Laitteen käyttäminen on nopeaa ja helppoa. Hupi näkyy hintalapussa, joka hädin tuskin pysyy kolminumeroisena.

Kotibaristan parhaat ystävät ovat tärkeysjärjestyksessä mylly, papu ja kahvinkeitin. Hyvällä kahvinkeittimellä ei tee mitään, jos itse kahvin raaka-aineen, eli vastajauhetun kahvin saannissa on ongelmia. Ensimmäinen askel hyvään kahviin on halvimman mahdollisen kahvimyllyn hankinta ja pussillinen kelvollisia kahvipapuja. Suodatinkeittimen käyttämisessä ei ole mitään vikaa, mutta jos varaa oli 15 € kahvimyllyyn, löytyy varmaankin vielä 10 € pressopannuun, jolla voi varmistaa kahviveden lämpötilan ja puhtauden pysymisen hyvänä. Vanhoissa suodatinkahvikeittimissä veden lämpötilan ja puhtauden kanssa voi olla ihmettelemistä ja ihan turhaan, koska pressopannut on keksitty. Ei muuta kuin jauhamaan!

Kommentoi

Pathfinder RPG on täällä!

Dungeons & Dragonsin uusin versio on julkaistu, posteljooni pamautti sääntökirjan (neljänä kappaleena koko porukallemme) postilaatikkoon yksi päivää jälkeen maailmanlaajuisen julkaisupäivän. Melkoinen järkäle!

Kommentoi

Kuvagalleria ja ladattavien tiedostojen lista Drupaliin

Kuvagallerian tekemiseen Drupalissa on useita vaihtoehtoja, joista mikään ei toistaiseksi ole saavuttanut standardin asemaa. Kuvagalleria voidaan tehdä jonkin moduulin avulla (esimerkiksi Gallery, jCarousel tai Views), mutta perus-Drupalilla kuvien lähettäminen ja esittäminen on puutteellista. Tiedostojen, esimerkiksi PDF-esitteiden tai muiden dokumenttien lähettäminen onnistuu sisäänrakennetun File upload -moduulin avulla. Samalla moduulilla voi tietenkin lähettää palvelimelle mitä tahansa tiedostoja, mutta tiedostot listataan verkkosivuilla vain tiedoston nimen perusteella, eli kuvat eivät näy kuvina. Seuraavassa tehdään yksinkertainen PHP Snippet, jossa File uploads -moduulia käytetään kuvien ja muiden tiedostojen lähettämiseen ja esittämiseen. Tämän jälkeen mille tahansa sivulle lähetetyt kuvat näkyvät kyseisellä sivulla pikkukuvina, joista saa klikkaamalla suuremman version esille ja muut tiedostot listana, josta käyttäjä voi ladata ne omalle koneelle.

Tarvittavat ohjelmistot ja tehtävät:

  1. Drupal 6.x
  2. Moduulit Upload previews ja Thickbox
  3. Käyttöoikeuksien tarkastelu
  4. page.tpl.php -tiedoston muokkaaminen
  5. Koeajo!

Asenna Drupal 6 ja moduulit Upload previews ja Thickbox. Upload preview lisää esikatselukuvan nodejen muokkaussivulle, mikä on ihan kiva sinänsä, mutta varsinainen hyöty on siinä, että moduuli mahdollistaa tiedostokohtaisen selitteen antamisen. Tiedostoille voidaan siis antaa nimeksi jotain muuta kuin tiedostonnimi, esimerkiksi minun_tarkea_tiedosto_2.pdf saadaan näkymään verkkosivuilla nimellä Minun tärkeä tiedosto, osa 2. Thickbox on osittain silmänruokaa ja sen voi jättää poiskin. Thickboxista on kuitenkin myös se hyöty, että samaan ryhmään tallennetut kuvat ovat selattavissa keskenään helposti ja efekti perustuu Drupalissa oletuksena muutenkin ladattavaan jQuery-javascriptkirjastoon. Yhtä hyvin voi käyttää Lightboxia tai mitä greyboxia haluaakin.

Kun moduulit on asennettu, mene käyttöoikeussivulle (admin/user/permissions) ja anna sivuston ylläpitäjälle oikeudet tiedostojen lähettämiseen (Upload module -> upload files). Ota kaikilta rooleilta pois view uploaded files. Tämä ominaisuus luo sivun loppuun taulukon, jossa nodeen liitetyistä tiedostoista näkyy tiedoston nimi ja koko. Emme halua nähdä tätä taulukkoa vaan haluamme kauniin listan tiedostoista, joissa tiedoston nimen sijaan näemme tiedoston selitteen. Nodeen lähetetyt tiedostot näkyvät jokatapauksessa noden muokkaussivulla, mikä riittää sivun ylläpitoon aivan loistavasti.

PHP Snippet kuvien ja tiedostojen tulostamiseen

Seuraavaksi muokataan kaikkien sivujen muodostamiseen käytettävää sivupohjaa page.tpl.php, joka löytyy teemakansiosta, esimerkiksi sites/default/themes/omateema/page.tpl.php tai themes/garland/page.tpl.php. Jos kuvagallerian ja tiedostolistauksen haluaa vain tietylle sivutyypille, muokkaa tai luo tiedosto node-omasivutyyppi.tpl.php. Omia sivutyyppejä voi luoda CCKlla.

//print uploaded files as a gallery (images) or as a list with links (other files)

//initialize
$myimages = array(); #place for image files found
$mydownloads = array(); #place for other files found
$mypath = “”; #prefix to files directory
$myimageslist = array(“jpg”, “JPG”, “gif”, “png”); #which file suffixes count as image files

//read database
$myquery = “SELECT upload.description, files.filename FROM upload, files WHERE upload.nid=’”.$node->nid.”‘ AND upload.fid = files.fid ORDER BY upload.weight ASC, upload.fid ASC”;
$myresult = db_query($myquery);

//take images and files apart
$i = 0;
if(!empty($myresult)) { while($myline = mysql_fetch_array($myresult, MYSQL_ASSOC)) {
if(in_array(substr($myline['filename'], -3, 3), $myimageslist)) {
$myimages[$i]['desc'] = $myline['description'];
$myimages[$i]['name'] = $myline['filename'];
} else {
$mydownloads[$i]['desc'] = $myline['description'];
$mydownloads[$i]['name'] = $myline['filename'];
}
$i++;
}}

//print images
if(!empty($myimages)) { foreach($myimages as $myim) {
?>
<a href=”/<?php echo $mypath; ?>sites/default/files/<?php echo $myim['name']; ?>” rel=”group_us_together” title=”<?php echo htmlentities($myim['desc']); ?>”><img height=”80″ src=”/<?php echo $mypath; ?>sites/default/files/<?php echo $myim['name']; ?>” /></a>
<?php
}}

//print other files as links
if(!empty($mydownloads)) { echo “<ul class=\”downloads\”>”; foreach($mydownloads as $mydo) {
?>
<li><a href=”/<?php echo $mypath; ?>sites/default/files/<?php echo $mydo['name']; ?>”><?php echo $mydo['desc']; ?></a></li>
<?php
} echo “</ul>”; }

Tiedostot erotetaan kuviksi tai muiksi tiedostoiksi tiedostopäätteen perusteella. Tunnistuksen voisi tehdä myös MIME-tyypillä, mutta käytännössä tiedostopääte tuntuu toimivan vielä toistaiseksi varmemmin, koska joskus loppukäyttäjillä on käytössään vanhoja ja epästandardeja kameroita tai ohjelmistoja, jotka eivät tallenna metadataa oikein.

Kuvat esitetään noden lopussa 80×80 kokoisina pikkukuvina, joita klikkaamalla kuva aukeaa suurempana. Ison kuvan mittoja voi rajoittaa Site configuration -> uploads -asetuksista. Jos Thickbox on käytössä, kuva aukeaa sivun päälle ja kuvan alla on linkki seuraavaan ja edelliseen kuvaan.

Muut kuin kuvatiedostot näytetään listana (ul/li-elementit). Listassa tiedoston selite näkyy linkkinä itse tiedostoon.

Kommentoi

Drupal + cPanel + phpMyAdmin varmuuskopioiden palauttaminen

Ilman komeita palvelinsoftia tai rsyncattuja peilauksia Drupalista joutuu ottamaan varmuuskopioita käsin. Joskus manuaaliset varmuuskopiot tulevat tarpeeseen muuten hyvin varmistetulla palvelimella, esimerkiksi ennen isojen päivityksien asentamista Drupaliin. Varmuuskopion ottaminen Drupalista tarkoittaa sekä tiedostojärjestelmän että tietokannan huomiointia.

Tiedostojärjestelmä voidaan kopioida FTP:llä, mutta koska Drupalissa on runsaasti tiedostoja ja hakemistoja, komentorivin käyttäminen (ja vaikka käytön opettelu siinä samalla) on reilusti nopeampaa kuin FTP-session seuraaminen. Komentoriviltä tiedostot yhdistetään tar-paketiksi, joka tämän jälkeen pakataan gzipillä. Ennen tätä on kätevä ottaa tietokannasta varmuuskopio ja tallentaa se kansioon, joka liitetään tiedostojärjestelmän kanssa samaan tar-pakettiin. Näin tietokanta pysyy muun varmuuskopion mukana.

Käytännössä olen tullut ottaneeksi pienten päivitysten yhteydessä tietokannan varmuuskopion komentoriviltä, pakanneeksi kaikki tiedostot yhteen ja tallentamalla paketin aktiivisten verkkosivujen kansion juurihakemistoon, josta niitä ei tule vahingossa poistaneeksi tai liittäneeksi osaksi seuraavaa varmuuskopiota. Isojen päivitysten yhteydessä olen ottanut lisäksi tietokannan varmuuskopion phpMyAdminin kautta, koska Drupalin tietokantarakennetta joutuu monesti seuraamaan isojen päivitysten mukana ja seuraaminen ja muutosten tekeminen on helppoa graafisen käyttöliittymän kautta. Samalla kun phpMyAdmin on kerran auki, voi tietokannan tarvittaessa palauttaa tätä kautta ja käyttöoikeusongelma (josta lisää alempana) cPanelin kanssa voidaan ratkaista samalla kertaa.

mysqldump -u username -p mydatabase > tietokanta_dump.sql
#luo SQL-lauseet tietokannan nykytilaan palauttamisesta
tar -cvf kaikki_tiedostot.tar *
#kopioi kaikki hakemiston ja alihakemistojen tiedostot yhdeksi paketiksi
gzip kaikki_tiedostot.tar
#tiivistää paketin
mv kaikki_tiedostot.tar.gz ..
#siirtää varmuuskopion pois julkisesta kansiosta (ellet siirrä/kopioi sitä toiselle palvelimelle, kannattaa tehdä edes tämä jotta varmuuskopio pysyy tallessa)

phpMyAdminissa varmuuskopio tietokannasta otetaan Export-toiminnolla. Valitse tietokanta ja Export-välilehdellä tallenna tietokantaote tiedostoksi, jolloin sen voi ladata omalle työasemalle säilytystä tai edelleenlähettämistä varten.

Varmuuskopion palauttaminen

Drupalin ja moduulien päivityksien mukana tietokantaan lisätään usein uusia tauluja ja tiedostojärjestelmään ilmestyy uusia tiedostoja. Kun varmuuskopiot halutaan palauttaa, on syytä ensin poistaa vanhat tiedot kokonaan ja siirtää kopiot tilalle vasta sitten. Jos varmuuskopiot palauttaa uudemman tietokannan tai hakemistopuun päälle, päivityksistä voi jäädä ylimääräisiä tauluja tai tiedostoja joista voi olla haittaa myöhemmin.

Tiedostojärjestelmän palauttaminen on helppoa. Vanhat pois (tai talteen) ja varmuuskopio tilalle.

rm -rf *
mv ../kaikki_tiedostot.tar.gz .
tar -zxvf kaikki_tiedostot.tar.gz .

Tietokannan palauttaminen on cPanelin valvomassa ympäristössä hieman konstikkaampaa. Kirjaudu cPanelin MySQL-sivulta phpMyAdminiin ja jätä cPanelin MySQL-sivu auki. phpMyAdminin käyttäjällä ei ole oikeutta drop database -lauseeseen, eikä tästä syystä phpMyAdminin rename database -toimintokaan toimi. Tietokanta pitää siis poistaa cPanelin MySQL-sivulta. Kun tietokanta on poistettu, se on luotava tyhjänä (ja tietenkin saman nimisenä) uudelleen, jälleen cPanelin kautta. Tämän jälkeen tietokantaan liitetään sama käyttäjä kuin sillä aiemminkin oli, jonka jälkeen phpMyAdmin on taas toimintakykyinen. Tietokannan varmuuskopion voi palauttaa valitsemalla (tyhjän) tietokannan ja Import. Sivulla on lomake omalla työasemalla olevan kopion lähettämiseen.

Ongelma tietokannan palauttamisessa

phpMyAdminista otettu varmuuskopio ei kuitenkaan ole suoritettavissa cPanelin alaisuudessa toimivasta phpMyAdminista. Syynä on create database -lause, jonka phpMyAdmin lisää Export-toiminnossa tietokantaotteeseen. cPanelissa tätä lausetta ei saa tietokannan käyttäjätilien oikeuksiin. Lausetta ei tässä vaiheessa tarvitakaan, koska loimme aiemmin tyhjän tietokannan cPanelin kautta. Muokataan siis omalla työasemalla olevaa tietokantakopiota.

Jos tiedosto on gzipattu, se pitää ensin purkaa:

gunzip tietokanta_dump.sql.gz

Avaa tiedosto vimillä tai muulla tekstieditorilla ja poista tai kommentoi tiedoston alkupuolella oleva rivi

CREATE DATABASE `mydatabase` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `username`;

Tallenna tiedosto ja käytä phpMyAdminin Import-toimintoa uudelleen. Tiedoston lähettäminen ja tietokannan kirjoittaminen kestää hetken aikaa. Jos skandien tai euromerkkien ja muiden jenkkien mielestä epästandardien merkkien kanssa on ongelma, tietokannan palauttamista voi kokeilla määrittämällä Import-sivulta käytetyn lokaalin toiseksi.

Kommentoi

WordPress ja ongelma kuvien lisäämisessä

WordPress.com tarjoaa 3 GB tilaa kuville ja muulle medialle. Kuvien tallentaminen palvelimelle tapahtuu Add an Image -napin kautta, josta kuvat tallentuvat Galleriaan (kyseiseen blogitekstiin lähetetyt kuvat) tai Media Libraryyn (kaikki kuvat). Ennemmin tai myöhemmin käy kuitenkin niin, että kuvien lähettäminen WordPress.comiin onnistuu, mutta niiden liittäminen artikkeleihin ei ole mahdollista. Insert into post -nappi puuttuu juuri lähetetyn kuvan alta, mitä kummaa?

Mänty, Pinus sylvestris

Mänty, Pinus sylvestris

PNG-tiedostojen ja isojen JPGiden kanssa hetken odottelu auttaa. WordPress.comissa pyörii skripti, joka varmistaa palvelimelle lähetetyt kuvat kuvatiedostoiksi. Pienet JPG:t saavat vahvistuksen yleensä saman tien, mutta PNG-tiedostojen kanssa joutuu joskus odottelemaan. Insert into post -nappi tulee näkyviin vasta, kun tiedosto on saanut palvelimen hyväksynnän.

Tammi, Quercus robur

Tammi, Quercus robur

Galleria-sivulla voi blogiin liittää usean kuvan sarjan. Tälle sivulle ei milloinkaan ilmesty Insert into post -nappia, sen sijaan kun Galleria-dialogissa on useampi kuin yksi kuva, ilmestyy sivun alalaitaan Insert gallery -nappi.

Kanadantuija, Thuja

Kanadantuija, Thuja occidentalis

Yksittäisten kuvien lisääminen tapahtuu siis näin: klikkaa harmaata Add an image -nappia, joka on Upload/Insert tekstin oikealla puolella, muokattavan tekstikentän yläpuolella. Lähetä kuva palvelimelle ja lisää kuvan tiedot, jos kuva on tässä vaiheessa jo saanut varmistuksen, lähetyssivun alalaidassa on Insert into post -nappi. Muussa tapauksessa tallenna kuvan tiedot ja avaa samasta dialogista Media Library. Odottele hetkonen ja tarkastele lähetetyn kuvan tietoja klikkaamalla show. Kun kuva on varmistettu, tällä sivulla näkyy nappi Insert into post.

Kommentoi

Drupal nopeammaksi, osa 2/X

Tavoitteena on muuttaa erittäin hitaasti toimivat, kehitysvaiheessa olevat verkkosivut julkaisukuntoon. Alustana sivuilla on Drupal 6, tietokantahaut on toteutettu Viewsillä ja aseteltu nodeihin block-osioihin kirjoitetuilla views_embed_view()-funktioilla. Muita moduleita ovat CCK, Date, ImageField, I18N, ICME ja TinyMCE.

Aloitustilanteessa verkkosivut ovat periaatteessa valmiit ja niillä on jonkin verran sisältöä, joka on pääasiassa tekstiä ja muutamia pieniä kuvia. Sivut on siirretty palvelimelle, jossa ne on tarkoitus siirtää tuotantoon. Sivunlataus kestää keskimäärin uskomattomat 15 sekuntia. Palvelimella muistia riittää ja rasitusaste on lähellä nollaa.

Ensimmäinen ja helpoin tapa nopeuttaa toimintaa on kääntää Drupalin oma välimuisti päälle. Asennuksen yhteydessä tulin kuitenkin ensin tarkistaneeksi MySQL:n konfiguraation, josta puuttui tietokannan välimuisti kokonaan. Asetustiedosto on nimeltään my.cnf ja se löytyy tavallisesti /etc -hakemistosta.

cat /etc/my.cnf

Konfiguraatio näkyy ruudulla. Jos parametrit query_cache_type, query_cache_size tai query_cache_limit puuttuvat, ne kannattaa pikapikaa lisätä. Query_cache_type määrittää, onko tietokannan välimuisti päällä. Arvo 1 on päällä, arvo 0 pois päältä ja arvo 2 on päällä vain silloin kuin suoritukseen tuleva SQL-lauseke ehdottaa välimuistin käyttöä. Perus-Drupalin kanssa arvo 1 on sopiva ja voisi myös sanoa että välttämätön. Query_cache_size on välimuistille varattava koko. Suuruus riippuu sivustoista mutta olen käyttänyt arvoa 40 (MB) ja hyvin on tultu toimeen. Query_cache_limit on arvo megabitteinä, minkä suuruiset haut korkeintaan tallentuvat välimuistiin. Oletusarvona on 1 MB, joka lienee käytössä kirjoittamattakin. Drupalin kanssa 1 MB sopii meille. Lisää/korjaa rivit my.cnf:iin käyttämällä vimiä tai muuta tekstieditoria.

query_cache_type=1
query_cache_limit=1
query_cache_size=40

MySQL:n pitää vielä lukea asetukset uudelleen, jotta muutos astuu voimaan:

/etc/init.d/mysql reload (tai restart jos reload ei toimi)

Testisivumme puolittivat juuri sivunlataukseen kuluvan ajan. 7,5 sekuntia on edelleen kelvoton tulos, joten lisätoimia tarvitaan. Palataan takaisin yleensä ensimmäiseksi suoritettavaan vaiheeseen, eli Drupalin oma välimuisti päälle. Asetus löytyy kohdasta admin/settings/performance tai Administration -> Site configuration -> Performance. Caching modeksi kannattaa yleensä laittaa normal ja kaikki pakkausvaihtoehdot päälle, eli Page compression enabled, Block cache enabled, Optimize CSS files enabled ja Optimize JavaScript files enabled. Huomaa, että tämän jälkeen lähdekoodiin tai blockkeihin tehdyt muutokset eivät välttämättä tule näkyviin ennenkuin tältä samaiselta Performance-sivulta on käyty klikkaamassa Clear cached data -nappia.

Tehdään asetusten tallennus ja uloskirjautuminen, Drupalin pääkäyttäjälle (nid 1) ei koskaan tarjoilla välimuistissa olevia sivuja joten sivujen kokeilu pitää suorittaa anonyyminä käyttäjänä tai muuna sisään kirjautuneena käyttäjänä. Pienen klikkailun jälkeen voidaan todeta, että sivut ovat nopeutuneet, mutta sivunlatausaika vaihtelee edelleen 2,5 sekunnista reilusti yli viiteen sekuntiin.

Boosterit käyttöön

Viisi sekuntia jokaisen sivun aukeamiseen ei todellakaan ole tyydyttävä tulos. Tietokantayhteys on nyt kunnossa ja Drupal käyttää oikopolkuja sivun muodostamiseen. Mitä voimme vielä tehdä?

Flowchart

Flowchart

Ylläoleva kuva on napattu ilman lupaa Drupal.orgista ja muiden tietojen puutteessa sen tekijä lienee Jonah Ellison (linkki lähteeseen).

Kuva havainnollistaa loistavasti, miten Authcache-moduli nopeuttaa sivunlatausta. Sivuista tallennetaan HTML-versiot, jotka ovat valmiina lukua varten. Tällaisen toiminnon tuottavia moduleita on useita. Authcache on siitä erilainen, että tässä on mahdollista suorittaa tietokantahakuja sivunlatauksen jälkeen JavaScriptin avulla. Näin HTML-kopioita voidaan käyttää myös sisäänkirjautuneiden käyttäjien palvelemiseen.

Authcache on kuitenkin melko monimutkainen ottaa käyttöön, joten tässä käytämme yksinkertaista Boost-moduulia. Boost tekee sivujen juurihakemistoon cache-kansion, johon tallentuu HTML-versiot kaikista sisäänkirjautumattomien käyttäjien, tässä tapauksessa kaikkien sivujen käyttäjien ylläpitäjää lukuun ottamatta, avaamista sivuista.

Boostin asennuksessa on muokattava sivujen juurihakemistossa olevaa .htaccess-tiedostoa. Asennus sujuu näin:

  1. Lataa ja pura Boost-moduuli modules-kansioon ja ota se käyttöön Drupalin moduulisivulta
  2. Luo juurihakemistoon kansio cache ja tämän sisään kansio omadomain.fi
  3. Anna cache/ ja cache/omadomain.fi/ -kansioihin sopivat käyttöoikeudet Drupalia pyörittävälle käyttäjänimelle (esimerkiksi chown -R omadomain:omadomain cache ja chmod -R u+rwx cache)
  4. Mene Boostin asetuksiin, jotka löytyvät Performance-sivulta
  5. Kopioi .htaccess-asetukset leikepöydälle
  6. Muokkaa .htaccess-tiedostoa (joka löytyy kohdasta omadomain.fi/.htaccess) ja liitä Boostin asetukset oikeaan kohtaan.
  7. Käynnistä Boost sen Drupalin asetussivulta
  8. Kirjaudu ulos ja kokeile sivujen toimintaa

Ensimmäinen sivunlatauskerta anonyyminä käyttäjänä ei eroa tavallisesta sivunlatauksesta. Seuraavissa nopeusero tulee näkyviin: sivunlataus kestää keskimäärin 1,4 sekuntia! Tällä vauhdilla sivut voi hyvillä mielin julkaista.

Boostin asennukseen liittyen cronjobin toimivuus pitää vielä tarkistaa. Cron virkistää HTML-versiot sivuista normaalin cron-ajon tahtiin. Boost neuvoo asettamaan /sites/default/settings.php -tiedoston base_url-muuttujalle arvon, jos ongelmia esiintyy.

Kommentoi

Drupal nopeammaksi, osa 1/X

Drupalilla tehdyt verkkosivut takkuilevat? Yksinkertaisimmatkin sivut latautuvat todella hitaasti? Sivun välimuisti on päällä ja vauhti paranee, mutta nopeutta pitäisi silti saada lisää?

Drupal on erittäin monikäyttöinen alusta kaikenlaisiin verkkosivuihin. Monipuolisuudesta seuraa tekninen monimutkaisuus ja Drupalilla toteutetut verkkosivut saattavat käyttää vain murto-osaa kaikista ohjelmiston tarjoamista ominaisuuksista. Normaalin sivunlatauksen yhteydessä palvelimella tapahtuu vaikka mitä, joista moni toiminto voisi jäädä tavanomaisen sivunlatauksen kohdalla käyttämättäkin.
Normaalisti palvelimen muisti riittää pyörittämään Drupalia riittävän nopeasti, jotta sivunmuodostuksen vaatima aika pysyy pienenä. Pullonkaulana sivun muodostusajassa on tietokantahaut. Drupal voi käyttää normaalin noden muodostamiseen 20 tietokantahakua, jos tietokantayhteydet eivät ole kunnossa, sivujen muodostaminen voi kestää ikuisuuksia.

Työkaluja nopeuden seuraamiseksi

Nopeuden viilaaminen on parasta aloittaa kellottamalla sivunlatausten kestoja. Vaikka pääasiallisena huolenaiheena on tarkastella sekunnin ja pidempien aikojen hidastumisia, jotka voi havaita silmämääräisestikin, nopeuden mittaaminen siihen tarkoitetuilla ohjelmilla on varmempaa. Joskus hitaushan voi johtua käytetystä työasemasta, jonka takkuilulla ei ole mitään tekemistä sivunlatauden vaatiman ajan kanssa.

Drupalin Devel-moduuli on Drupalin sisäisten toimintojen mittaamiseen käytettävä ohjelma. Develillä saa monenlaista muutakin infortaatiota sivujen muodostumisesta, mutta yksinkertaisimmillaan sillä saa näkyviin sivun rakentamiseen kuluneen ajan. Tämä aika on nimenomaan se aika, joka alkaa Drupal saadessa sivupyynnön ja loppuu Drupalin ilmoittaessa sivunluonnin olevan valmis. Välissä on tavallisesti toistakymmentä tietokantahakua. HTTP-kutsuja ei käsittääkseni tähän aikaan tule.

YSlow on Yahoon kehittämä ilmainen lisäosa niinikään ilmaiseen Firebug-sovellukseen. Devel on hyödyllinen tutkittaessa Drupalin sisäistä toimintaa, mutta varsinaiset tiedot sivunlataukseen kuluneista vaiheista voidaan selvittää vain selaimesta kellottamalla. YSlow on tehty juuri tähän ja lisäksi se osaa neuvoa, millaisia hidastavia tekijöitä kuhunkin sivuun liittyy. YSlow tarvitsee Firebug-ohjelman, joka puolestaan toimii vain Firefoxissa. Ilmaisia kaikki ja saatavissa miltei kaikille alustoille.

Asennuksen jälkeen YSlow ilmestyy Firefoxin oikeaan alalaitaan, josta klikkaamalla ohjelma avaa ikkunan osittain sivun päälle. Ikkunasta voi käynnistää selaimessa parhaillaan auki olevan sivun tarkastamisen. Tarkastuksen jälkeen YSlow antaa sivulle nopeuteen ja tekniseen esteettömyyteen perustuvan arvosanan (numero), arvosanan teknisen toteutuksen laadusta (kirjain) ja listaa puutteet sivunlataukseen vaikuttavista tekijöistä ja neuvoja niiden korjaamiseksi. Valtaosa sivuista saa YSlowilta arvosanan 70…79. Google.fi saa 99, nethack.org 97. 71 tai alle on niin hidas sivu, että surffaaja ehtii jo ärsyyntymään. Hitauden sietäminen on tietenkin suhteellista, mutta tavoitteena pitäisi kaikkien sivujen kohdalla päästä vähintään arvoon 75-80. Kunnollisella palvelimella olevan, pelkkää validia HTML:ää sisältävän sivun tulisi päästä 90 yläpuolelle ilman optimointia.

Toivon, että pystyn kirjoittamaan Drupalin nopeuttamisesta monta artikkelia. Käytössä on tällä hetkellä Drupal 6.12 ja ensi vuonna tilanne tullee muuttumaan Drupal 7:n myötä. Sivunlatauksien nopeuttamiseksi tulee jatkuvasti uusia tekniikoita, kuten äskettäin ymmärtämäni, jännittävän niminen CSS Sprite -menetelmä. Lisää aiheista seuraavassa artikkelissa. Tähän vielä pari hyödyllistä linkkiä:

http://wimleers.com/article/improving-drupals-page-loading-performance
http://2bits.com/articles/tips-on-speeding-up-your-drupal-sites.html

Kommentoi

Miten Games Workshopista tuli niin suuri?

Olen monesti pohtinut, miten Games Workshop on päässyt nykyiseen asemaansa. Kukaan ei voi kiistää GW:n asemaa maailman suurimpana miniatyyrien kaupittelijana. Kuitenkin kritiikkiä riittää: hinnat ovat kalliit, pelimekaniikoissa on puutteita ja markkinointi on suunnattu varhaisnuorille, vaikka suurin osa harrastajista lienee aikuisia.

Miksi GW sitten pysyy pinnalla? Vaihtoehtoja kuitenkin on, vai onko niitä?

Miten GW on saavuttanut asemansa liiketaloudellisesti? Wikipedian artikkelin perusteella näyttäisi siltä, että eräs merkittävä tekijä yhtiön menestykseen on ollut oikeiden lisenssien haaliminen ja hyödyntäminen. Tämähän pitää paikkansa nykyäänkin, ainakin niin kauan kuin LotR-tuotteet pysyvät kaupoissa. Lisenssien hankkiminen toimii toisinkin päin: Joseph Goodman, eräs roolipelibisneksen tekijöistä kertoo GW:n ostaneen itselleen Dungeons & Dragons miniatyyrien yksinoikeudet 80-luvulla ja käyttäneen oikeuttaan siihen, ettei kukaan valmista D&D-figuja, GW mukaan lukien. Tällä tempulla GW sai markkinoille tilaa Warhammer Fantasy -figuille ja muille omille tuotteilleen.

Entä White Dwarf sitten? 80-luvun lehdet, joita olen nähnyt, ovat aivan eri maailmasta kuin White Dwarf nykyään. Vanhat lehdet olivat täynnä uutisia, artikkeleita, arvosteluja, kolumneja ja harrastevinkkejä. Aiheena olivat GW:n omien tuotteiden lisäksi muutkin miniatyyri- ja roolipelituotteet. Tosin uutisointi esimerkiksi Dungeons & Dragons -tuotteista toi pennyä GW:n omaan pussiin, sillä 80-luvun alussa GW oli TSR:n (D&D:n silloinen julkaisija) ainoa maahantuoja. Silti, lehdet olivat sisällöltään houkuttelevia. Ja olisipa White Dwarf edelleenkin sellainen, vaikka kertoisikin vain GW:n omista tuotteista! Mutta ei. WD:t ovat raakoja mainoslehtisiä, joista toisin kuin mainoksista yleensä käyttäjä joutuu maksamaan. En sano tätä pahalla sinänsä, siwhite_dwarf_050llä tykkään selailla uusia WDitä ja joskus ostankin numeron tai pari. Uudet WD:t ovat kiinnostavia siinä kuin mikä tahansa esite, joka kertoo itselle tärkeästä tuotteesta. Vanhoihin numeroihin verrattuna niistä kuitenkin puuttuu jotain: kolumnit, harrastuksen trendien seuraaminen, lukijoiden omat kommentit, ruohonjuuritason artikkelit. Sen sijaan saat sivukaupalla kokosivun mainoksia ja vain muutaman toimitetun artikkelin. Koko lehti on mauton, hajuton, väritön – pelkkää tasaista aivopesua teini-iän alkuvaiheessa olevien lukijapoikien harrastukseen koukuttamiseksi taidokkaasti tuotettua massaa. Silti lehti myy! Mitä ihmettä?

Uskon, että menestyksen syynä on GW:n poikkeuksellinen onni (tai todella kova työ) onnistua raivaamaan itselleen elintilaa kaikkien muiden toimijoiden kustannuksella. Usein harrastajilta kuultu suurin kritiikki on hintojen jatkuva nousu: Wikipedian artikkelissa esimerkkinä mainitaan Goblin Fanaticin hinta, joka on noussut olemassaolonsa aikana noin 550 prosenttia. Kuitenkin seuraavaksi artikkeli totetaa muovifigujen hinnan pudonneen halventuneiden valmistuskustannusten takia. Oma mielipiteeni on, että figujen hinnanmuutoksilla on vähän merkitystä GW:n tulojen kannalta, figuilla on sama kate hinnasta riippumatta ja kustannusten muutos tulee valmistuskuluista ja normaalista, kaikkeen talouteen vaikuttavasta hintojen jatkuvasta noususta.

Games Workshop saa juhlia vuonna 2010 35-vuotispäiviään. Kunnioitettava ikä mille tahansa yritykselle!

Kommentoi

WordPress.com on sittenkin paras

Aloitin tämän blogin harjaantuakseni ammatissani. Olen paitsi barista myös verkkosovelluskehittäjä mainostoimistossa, joten tuntemus alan kuumista softista ja hakukoneoptimoinnin mahdollisuuksista on tärkeää. Nyt reilu puoli vuotta myöhemmin on hyvä aika tarkastella kokemuksia.

WordPress on sovelluksena kovasti mieleeni. Tätä on looginen käyttää, asiat toimivat ja koko paketti näyttää tyylikkäältä. Verrattavissa Drupaliin ja osin jopa sitä käyttäjäystävällisempi. Blogger (tai blogspot, miksi sitä nyt pitäisikään kutsua) sen sijaan oli pettymys. Kontrolli tekstien suhteen on hyvin suppeaa, median syöttäminen hankalaa ja ulkoasu on tökerö. Bloggerin toimivuus vaihteli, Ubuntu + Firefox -yhdistelmällä käytössä oli joskus hankaluuksia, tosin tämä voi mennä vanhojen ohjelmistojeni piikkiin. Bloggerissa tekemäni blogin ulkoasu jäi kuitenkin pöljän näköiseksi parhaista yrityksistäni huolimatta. Hyvänä puolena Bloggerissa oli CSS-muokkaus, jonka voi WordPressissä tehdä vain lisämaksua vastaan.

Näkyvyydessä löytyi suuria eroja. WordPress.comissa blogitekstit alkoivat viikon sisällä kerätä liikennettä ja pidemmällä jaksolla blogissa oli 3-4 lukijaa päivittäin. Blogspotissa ei tapahtunut mitään kahteen kuukauteen, jonka jälkeen kävijöitä oli viikossa 1-2. Tekstit olivat siis kummassakin samat.

Taika ei kuitenkaan liene itse WordPress-softassa vaan wordpress.comissa blogin alustana. Asensin nimittäin WordPressin myös omalle palvelimelle, jossa se keräsi liikennettä jotakuinkin saman verran kuin Blogger. WordPress.comissa blogeja linkitetään muille wordpress.comin käyttäjille ja lisäksi sivustolla on hakukoneoptimointiin vaikuttava indeksi palvelimen avainsanoista, joka selittää blogitekstien nopean siirtymisen hakukoneiden saataville.

Ainoa syy olla käyttämättä WordPress-blogia wordpress.comissa on AdSense. WordPress.com ei nimittäin mainoksia käyttäjiensä sivuilla hyväksy, mikä osaltaan varmasti vaikuttaa palvelimen käytettävyyteen. Laatu pysyy korkealla, kun blogaajat eivät väkisin täytä artikkeleitaan avainsanoilla pysyäkseen AdSensen vaatimissa tehokkuustavoitteissa. Samoin blogien lukijat jaksavat selailla tekstejä, kun saavat vain sen mitä tilaavat ja sivujen latausajat pysyvät kurissa.

Bloggerin aion unohtaa. Blogipohjia on loppumaton määrä, esimerkiksi suosituin suomalainen lienee Vuodatus. Toistaiseksi todetaan vain, että WordPress ja wordpress.com on sittenkin paras.

Kommentoi

Vanhemmat artikkelit »