Testaaminen WordPress-kehityksessä

Testaaminen on ohjelmistokehityksen perusjuttuja ja tapa varmistaa, että koodi jota tehdään, on toimivaa. Testaamista on monenlaista, tässä keskityn yksikkötestaamiseen (unit testing) ja integraatiotestaamiseen (integration testing). Näissä erona on, että yksikkötestauksessa testataan ohjelmiston yksittäisiä komponentteja ja integraatiotestauksessa isompia kokonaisuuksia. WordPress-kontekstissa näitä kahta on kuitenkin hankalaa ja tarpeetontakin erottaa tarkasti toisistaan. Kolmas olennainen testaamisen muoto on regressiotestaus […]

WordPress-lisäosan kehitysprosessi

Kehitän ja ylläpidän WordPressin Relevanssi-hakulisäosaa ja sen kaupallista versiota Relevanssi Premiumia. Lisäosien kehityksen hallinnointi on sen verran monipuolinen prosessi, että ajattelin kiinnostavaksi vähän avata toimintatapojani. Jaettua koodia Kun ylläpidetään kahta samankaltaista, mutta erilaista tuotetta, koodin on oltava mahdollisimman pitkälle samaa. Tämän asian opin melko pian. Eri versioiden ylläpitäminen oli työlästä, kun eri versioissa oli eri […]

WebP-kuvien käsittely Finderissä

WebP on Googlen kehittämä kuvaformaatti, joka on tarkoitettu nettikäyttöön. Se pakkaa kuvat tehokkaammin kuin JPG- ja PNG-formaatit, tukee sekä häviöllistä että häviötöntä pakkausta sekä läpinäkyvyyttä. Selaimet tukevat WebP:tä enimmäkseen hyvin. Ongelmia tulee, kun WebP-kuvia haluaa käsitellä omalla koneella. Ainakaan Macilla monikaan ohjelmisto ei vielä WebP-kuvia tue, eikä esimerkiksi Esikatselu osaa niitä näyttää. Niinpä netistä noukitun […]

Integrating FastSpring and Wishlist Member

I’m using Wishlist Member on a membership site I run (I don’t particularly recommend using it). So far, I’ve been handling the payments myself through PayPal, which works ok. However, next year I’m headed into trouble, as EU VAT system changes. So far I’ve charged Finnish VAT from all EU users without a VAT id. […]

Converting GPX to OV2 with PHP

Here’s how you can convert GPX to OV2 with PHP. This is necessary for example to GeoCachers who use TomTom navigators and want to have GeoCaches as POIs on the navigator. Earlier work There’s POIConverter, which manages lots of conversions, but is Windows only. There’s Convert POI, which is a web site, but it choked […]

Parametrillisten urlien uudelleenohjaus

Uudelleenohjauksien tekeminen .htaccessissa on helppoa: Redirect 301 /sivu/joka/ohjataan http://www.example.com/uusiosoite Mutta entäs jos sivun osoite perustuu parametreihin, eli on esimerkiksi muotoa http://www.example.com/index.php?tag=foo? Silloin yksinkertainen edelleenohjaus ei toimi, sillä se perustuu vain tiedostojen nimiin. Tarvitaan vähän monimutkaisempaa koodia: Options +FollowSymlinks RewriteEngine on RewriteCond %{QUERY_STRING} &?tag=foo RewriteRule ^index\.php /foo? [R=301,L] Tämä ohjaisi URLin http://www.example.com/index.php?tag=foo osoittamaan osoitteeseen http://www.example.com/foo. Ohjauksen […]

Kuvien optimointi nopeuttaa sivujen lataamista

Jatketaan optimointiteemalla (edellinen juttu käsitteli spritejä). Nettisivuilla käytettäviä kuvia pystyy usein pakkaamaan häviöttömästi vielä vähäsen, ilman että kuvien laatu heikkenee. Pienentämällä kuvia säästää useita kilotavuja ja varsinkin runsaskuvaisella sivustolla säästöt tiedostojen koossa ja siten sivulatausten nopeudessa voivat olla tuntuvia. Jos käyttäjiä on runsaasti, myös kaistanleveydessä saadaan hyödyllisiä säästöjä. Kuvien optimoimiseen on muutamia näppäriä työkaluja. Erilaisissa […]

Spriteillä vauhtia sivuihin

Yksi keino nopeuttaa mutkikkaan ja moniosaisen nettisivun latautumista on käyttää spritejä. Spritet ovat tekniikka, jossa sivun kuvaelementtejä kootaan yhdeksi kuvaksi, josta sitten näytetään vain osa. Osan näyttäminen perustuu CSS-tyylien background-position-sääntöön, joten helpoimmin tämä tekniikka sopii kuviin, jotka ovat jonkun elementin taustakuvana. Tavallisille kuville spritetekniikkaa voi soveltaa jollain tapaa, mutta vaivattominta on spritettää taustakuvia. Nopeuslisäys perustuu […]

Nätit urlit: Apache Rewrite ja PHP

Väsään nettisivua, jossa käyttäjät katselevat tietokannasta kaivettavaa sisältöä tietyn tunnisteen perusteella. Siis tähän tapaan: http://www.example.com/index.php?id=tunniste Tämä on perinteinen tapa. Tarkoitus kuitenkin olisi, että käyttäjät näpyttelevät osoitteita käsin (kyseessä on vähän urlinlyhennyspalvelun tyylisesti jutusta), joten osoitteista pitäisi karsia kaikki turha pois. Ideaalitapaus olisi näin: http://www.example.com/tunniste Onneksi tämä on helppo toteuttaa, tekemällä pieniä muutoksia .htaccess-tiedostoon. .htaccess Hakemiston […]

PHP: Taulukon lajittelu pituusjärjestykseen

Relevanssia fiksatessa tuli vastaan tarve lajitella sanoja sisältävä taulukko pituusjärjestykseen niin, että pisin sana tulee ensin (jotta hakusanojen korostus tekstissä toimii oikein*). Tähän tehtävään on olemassa varsin näppärä ratkaisu, vaikka PHP ei suoranaisesti valmista konstia tarjoakaan. StackOverflow’sta löytyi erittäin kompakti funktio: Sort an array by the length of its values?. Tehtävään tarvitaan PHP:n usort-funktiota, joka […]